Eiti prie turinio

Moduliai

Pažengusiam

Pasirink modulį, kuriam tavo pakeitimas priklauso, ir žinok, kuriuos modulius jis gali kviesti.

  • Perskaityk architektūrą, kad žinotum aplankų žemėlapį ir taisykles.
  • Kiekvienas modulis turi tą patį pavadinimą aplanke app/backend/internal/<module>/, o kai turi ekranų ar naršyklės testų, ir aplankuose app/frontend/src/lib/<module>/ bei app/tests/<module>/.
Modulis Ką daro
requests Prašymus, patvirtinimus, prašymų taisykles, išorinius sąrašus, ataskaitas
movies Filmų pavadinimus, leidimus, rinkinius, paiešką ir tvarkymą
shows Serialus, sezonus, serijas, paiešką ir tvarkymą
music Atlikėjus, albumus, kūrinius, paiešką ir tvarkymą
sources Šaltinius, Jackett ir Prowlarr tiltą, release paiešką
downloads Atsisiuntimo programas, eilę, matytus failus, kelių atitikmenis, tagus, kopijų pasirinkimus
subtitles Subtitrų kalbas, svetaines, atitikimą ir išsaugojimą
discover Explore, Popular, Search, People, Calendar, pavadinimų puslapius
suggest Eilučių ir lentynų parinkimą bei išdėstymą (tik serverio pusė)
mediafiles Katalogo įrašus, parinkimo taisykles, pavadinimų formavimą, duomenų paketus, medijos detales
importer Failų importą: išpakavimą, tagus, atitikimą (tik serverio pusė)
library Bibliotekos aplankus, perėmimą ir pervadinimą (tik serverio pusė)
metadata Išorinių duomenų klientą, muzikos paieškas, amžiaus įvertinimų skales, anonsus
mediaservers Pranešimą Plex, Jellyfin ir Emby, kad pažiūrėtų dar kartą
accounts Naudotojus, prisijungimą, single sign-on, AI programų prisijungimą, vaikų limitus, žiūrėjimo pasirinkimus
alerts Pranešimų kanalus ir kada jie prabyla
migrate Duomenų perkėlimą iš ankstesnių programų
arrapi Sonarr ir Radarr tipo API
ai AI programų ryšius (atidėta)
backups Backup kūrimą, laikymą ir atkūrimą
health Būklės patikras, diagnostikos įrankį (doctor), palaikymo paketą
updates Atnaujinimų patikrą ir pasirašytą atnaujinimų sąrašą
setup Pirmo paleidimo vedlį

Modulis importuoja tik žemesnį sluoksnį. Niekas neimportuoja discover. Tiesos šaltinis yra tools/structurecheck/allow.go.

Sluoksnis Moduliai
0 core
1 metadata, suggest
2 accounts
3 mediafiles
4 importer
5 library
6 sources
7 downloads
8 subtitles, mediaservers, alerts
9 movies, shows
10 requests, health
11 music, arrapi, migrate, ai, backups, updates, setup
13 discover

Jei tavo moduliui kažko reikia iš aukštesnio sluoksnio, neimportuok to. Tegul aukštesnis modulis perduoda paprastus duomenis žemyn arba apibrėžk žemesniame mažą sąsają, kurią užpildo wiring.go.

Pridėk maršrutą ar modulį

Nuoroda į Pridėk maršrutą ar modulį

Užregistruok jį modulio routes.go su jo teise. openapi.json sukuriamas iš maršrutų, o testas nepavyksta, kai jie išsiskiria. Išleisti keliai ir laukų pavadinimai lieka. Laukus pridėk, niekada nepervadink. Paskui perrašyk API maršrutus komanda go run ./app/backend/tools/apidoc.

Pirmiausia pabandyk sutalpinti pakeitimą į esamus 23 ir atidaryk issue, prieš pridedant naują. Naujam moduliui reikia serverio pusės aplanko (plius lib/<module>/ ir app/tests/<module>/, jei turi ekranų), vietos sluoksnių tvarkoje tools/structurecheck ir eilutės wiring.go.

Požymis. TestModuleEdges nepavyksta. Priežastis. Modulis importuoja tą patį ar aukštesnį sluoksnį. Sprendimas. Perduok paprastus duomenis žemyn iš aukštesnio modulio arba pridėk mažą sąsają, užpildomą wiring.go.

Požymis. TestSQLOnlyInStore arba TestTableOwnership nepavyksta. Priežastis. SQL yra ne store*.go faile arba liečia kito modulio lentelę. Sprendimas. Perkelk užklausą į savininko store ir kviesk savininko servisą pagal ID.

Daugiau taisyklių
  • Modulis importuoja tik kito modulio šakninį paketą.
  • Store funkcijos priima database.Querier. Kito modulio eilutes skaityk per jo servisą pagal ID, o ilgus ID sąrašus perduok kaip vieną JSON masyvą su json_each(?).
  • settings, schedules, secrets, jobs ir events priklauso core. Kiekviena nustatymų grupė turi vieną modulį savininką. Kad pakeistum kito modulio grupę, kviesk jos savininką.
  • Kiekvienas išorinis kreipinys eina per core/outbound.
  • Core paketai sudėlioti eilėmis iš viršaus žemyn: parts, webserver ir startup, logs, jobs ir model, outbound ir secrets, tada database, files ir releasename. Core paketas importuoja tik savo eilę arba žemesnę.
  • Pavadinimai: Go failai rašomi mažosiomis su pabraukimais, Svelte dalys PascalCase, o TypeScript, dokumentų, testų ir deploy failai kebab-case. Python failai naudoja pabraukimus, kad juos būtų galima importuoti. Aplankai app/ viduje rašomi mažosiomis, vienu žodžiu.
  • Kodą pervadink laisvai, bet viskas, kas saugoma ar siunčiama, pasilieka savo pavadinimą: lentelės ir stulpeliai, nustatymų raktai, JSON laukai, užduočių pavadinimai ir jungiklių pavadinimai.
  • Komentaruose nėra plano numerių, datų, vardų ar ilgųjų brūkšnių.
Įrašų savininkai
Savininkas Įrašai
mediafiles Title, Item, Version, Slot, Part, File, LibraryFolder, Quality, PickRules
downloads Download, Downloader, SeenFile, PathMap
sources Source, Release
requests Ask, Report
accounts User
core/jobs Job, Schedule, JobError
core/database Event ir bendri eilučių laukai
Patikros

Patikros gyvena app/backend/tools/structurecheck. Daugumai reikia -tags structure.

Patikra Saugo
TestTopLayout Viršutinius repo aplankus
TestModuleSet, TestCoreSet, TestPackageMap Aplankus, leidžiamus internal/ ir internal/core/
TestModuleEdges Sluoksnių tvarką
TestModuleImportsRootOnly Tik šakninio paketo importus
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable Core importus, eilių tvarką ir pavadinimus
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist SQL vietą ir lentelių savininkus
TestGoFileNames, TestNoBannedPackageNames Failų ir paketų pavadinimus
TestFileSizeCap, TestCorePackageSize Failo ir core paketo dydį
TestCommentHygiene Aukščiau aprašytas komentarų taisykles
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged Kad perkėlimas nepakeistų maršruto, migracijos, HTTP antraštės pavadinimo ar JSON rakto
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs Kad seni puslapių adresai neatsirastų kode, testuose ir dokumentuose
TestNoDependencyBotConfig Kad .github nebūtų priklausomybių boto failo

HolyArrs yra nemokama. Jei sutaupė tau laiko, pažymėk jį žvaigždute GitHub, paremk jį arba nupirk man kavos.