Moduļi
Pieredzējušiem
Izvēlies moduli, kuram tava izmaiņa pieder, un uzzini, kurus moduļus tas drīkst izsaukt.
Pirms sāc
Saite uz Pirms sāc- Izlasi Arhitektūra, lai uzzinātu mapju karti un noteikumus.
- Katram modulim ir viens un tas pats nosaukums mapē
app/backend/internal/<module>/, kā arī mapēsapp/frontend/src/lib/<module>/unapp/tests/<module>/, ja tam ir ekrāni vai pārlūka testi.
Atrodi īsto moduli
Saite uz Atrodi īsto moduli| Modulis | Dara |
|---|---|
requests |
Pieprasīšana, apstiprinājumi, pieprasījumu noteikumi, ārējie saraksti, atskaites |
movies |
Filmu nosaukumi, izdevumi, komplekti, meklēšana un kārtošana |
shows |
Seriāli, sezonas, epizodes, meklēšana un kārtošana |
music |
Izpildītāji, albumi, ieraksti, meklēšana un kārtošana |
sources |
Avoti, Jackett un Prowlarr tilts, izlaidumu meklēšana |
downloads |
Lejupielādētāji, rinda, redzētie faili, ceļu kartes, birkas, kopiju izvēles |
subtitles |
Subtitru valodas, vietnes, saskaņošana un saglabāšana |
discover |
Izpēte, Populārais, Meklēšana, Cilvēki, Kalendārs, nosaukumu lapas |
suggest |
Rindu un plauktu izvēle un kārtošana (tikai aizmugure) |
mediafiles |
Kataloga ieraksti, izvēles noteikumi, nosaukšana, datu pakotnes, multivides dati |
importer |
Failu imports: izpakošana, birkas, saskaņošana (tikai aizmugure) |
library |
Bibliotēkas mapes, pārņemšana un pārsaukšana (tikai aizmugure) |
metadata |
Ārējo datu klients, mūzikas meklēšana, vērtējumu skalas, treileri |
mediaservers |
Plex, Jellyfin un Emby paziņošana, lai tie skenē vēlreiz |
accounts |
Lietotāji, pieteikšanās, vienotā pieteikšanās, AI lietotņu pieteikšanās, bērnu limiti, skatīšanās izvēles |
alerts |
Paziņojumu kanāli un kad tie runā |
migrate |
Datu pārnešana no iepriekšējām lietotnēm |
arrapi |
Sonarr un Radarr stila API |
ai |
AI lietotņu savienojumi (aizturēts) |
backups |
Dublējumu izveide, glabāšana un atjaunošana |
health |
Veselības pārbaudes, ārsts, atbalsta pakotne |
updates |
Atjauninājumu pārbaude un parakstītais atjauninājumu saraksts |
setup |
Pirmās palaišanas vednis |
Slāņu secība
Saite uz Slāņu secībaModulis importē tikai zemāku slāni. Neviens neimportē discover. Patiesības avots ir tools/structurecheck/allow.go.
| Slānis | Moduļi |
|---|---|
| 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 |
Ja tavam modulim kaut kas vajadzīgs no augstāka slāņa, neimportē to. Liec augstākajam modulim nodot vienkāršus datus uz leju vai definē zemākajā nelielu saskarni, ko aizpilda wiring.go.
Pievieno maršrutu vai moduli
Saite uz Pievieno maršrutu vai moduliJauns maršruts
Saite uz Jauns maršrutsReģistrē to moduļa routes.go ar tā atļauju. openapi.json rodas no maršrutiem, un tests neizdodas, ja tie atšķiras. Izlaistie ceļi un lauku nosaukumi paliek. Laukus pievieno, nekad nepārsauc. Tad pārraksti API maršruti ar go run ./app/backend/tools/apidoc.
Jauns modulis
Saite uz Jauns modulisVispirms mēģini savu izmaiņu ievietot šajos 23 moduļos, un pirms jauna pievienošanas atver problēmu. Jaunam modulim vajadzīga sava aizmugures mape (kā arī lib/<module>/ un app/tests/<module>/, ja tam ir ekrāni), vieta slāņu secībā failā tools/structurecheck un rinda failā wiring.go.
Ja tas nedarbojas
Saite uz Ja tas nedarbojasSimptoms. TestModuleEdges neizdodas.
Cēlonis. Modulis importē citu no tā paša vai augstāka slāņa.
Risinājums. Nodod vienkāršus datus uz leju no augstākā moduļa vai pievieno nelielu saskarni, ko savieno wiring.go.
Simptoms. TestSQLOnlyInStore vai TestTableOwnership neizdodas.
Cēlonis. SQL atrodas ārpus store*.go faila vai skar cita moduļa tabulu.
Risinājums. Pārvieto vaicājumu īpašnieka glabātuvē un izsauc īpašnieka servisu pēc ID.
Pieredzējušiem
Saite uz PieredzējušiemVairāk noteikumu
- Modulis importē tikai cita moduļa saknes pakotni.
- Glabātuves funkcijas pieņem
database.Querier. Cita moduļa rindas nolasi caur tā servisu pēc ID, un garus ID sarakstus nodod kā vienu JSON masīvu arjson_each(?). settings,schedules,secrets,jobsuneventspieder core. Katrai iestatījumu grupai ir viens īpašnieka modulis. Lai mainītu cita moduļa grupu, izsauc tā īpašnieku.- Katrs izsaukums uz āru iet caur
core/outbound. - Core pakotnes ir rindās no augšas uz leju:
parts,webserverunstartup,logs,jobsunmodel,outboundunsecrets, taddatabase,filesunreleasename. Core pakotne importē tikai savu rindu vai zemāku. - Nosaukumi: Go failu nosaukumi ir ar mazajiem burtiem un pasvītrām, Svelte daļas ir PascalCase, bet TypeScript, dokumentācijas, testu un izvietošanas faili ir kebab-case. Python faili lieto pasvītras, lai tos varētu importēt. Mapju nosaukumi
app/ir ar mazajiem burtiem, viens vārds. - Kodu pārsauc brīvi, bet viss, kas tiek glabāts vai sūtīts, saglabā savu nosaukumu: tabulas un kolonnas, iestatījumu atslēgas, JSON lauki, uzdevumu nosaukumi un slēdžu nosaukumi.
- Komentāros nav ceļveža numuru, datumu, vārdu vai garo domuzīmju.
Ierakstu īpašnieki
| Īpašnieks | Ieraksti |
|---|---|
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 un kopīgie rindu lauki |
Pārbaudes
Pārbaudes atrodas mapē app/backend/tools/structurecheck. Lielākajai daļai vajadzīgs -tags structure.
| Pārbaude | Nodrošina |
|---|---|
TestTopLayout |
Repozitorija augšējās mapes |
TestModuleSet, TestCoreSet, TestPackageMap |
Mapes, kas atļautas internal/ un internal/core/ |
TestModuleEdges |
Slāņu secība |
TestModuleImportsRootOnly |
Tikai saknes pakotnes importi |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Core importi, rindu secība un nosaukumi |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
SQL novietojums un tabulu īpašnieki |
TestGoFileNames, TestNoBannedPackageNames |
Failu un pakotņu nosaukumi |
TestFileSizeCap, TestCorePackageSize |
Faila un core pakotnes izmērs |
TestCommentHygiene |
Iepriekš minētie komentāru noteikumi |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
Pārvietošana nemaina nevienu maršrutu, migrāciju, HTTP galvenes nosaukumu vai JSON atslēgu |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Vecās lapu adreses paliek prom no koda, testiem un dokumentācijas |
TestNoDependencyBotConfig |
Nav atkarību robota faila mapē .github |
Saistītais
Saite uz SaistītaisHolyArrs ir bezmaksas. Ja tas ietaupīja tavu laiku, atzīmē to ar zvaigznīti GitHub, atbalsti to vai uzcienā mani ar kafiju.