Moduly
Expert
Vyber modul, do ktorého zmena patrí, a zisti, ktoré moduly smie volať.
Skôr než začneš
Odkaz na Skôr než začneš- Prečítaj si Architektúra, kde je mapa priečinkov a pravidlá.
- Každý modul má rovnaký názov v
app/backend/internal/<module>/a vapp/frontend/src/lib/<module>/aapp/tests/<module>/, keď má obrazovky alebo testy v prehliadači.
Nájdi správny modul
Odkaz na Nájdi správny modul| Modul | Robí |
|---|---|
requests |
Žiadosti, schvaľovanie, pravidlá žiadostí, externé zoznamy, hlásenia |
movies |
Filmové tituly, edície, sady, hľadanie a usporiadanie |
shows |
Seriály, série, epizódy, hľadanie a usporiadanie |
music |
Interpreti, albumy, skladby, hľadanie a usporiadanie |
sources |
Zdroje, most pre Jackett a Prowlarr, hľadanie releasov |
downloads |
Sťahovače, fronta, videné súbory, mapy ciest, tagy, voľby kópií |
subtitles |
Jazyky titulkov, stránky, priradenie a ukladanie |
discover |
Objavovanie, Populárne, Hľadanie, Ľudia, Kalendár, stránky titulov |
suggest |
Výber a radenie riadkov a políc (iba backend) |
mediafiles |
Záznamy katalógu, pravidlá výberu, pomenovanie, dátové balíky, detaily médií |
importer |
Import súborov: rozbalenie, tagy, priradenie (iba backend) |
library |
Priečinky knižnice, prevzatie a premenovanie (iba backend) |
metadata |
Klient vonkajších dát, vyhľadávanie hudby, rebríčky hodnotení, trailery |
mediaservers |
Povedať Plexu, Jellyfinu a Emby, aby sa pozreli znova |
accounts |
Používatelia, prihlásenie, single sign-on, prihlásenie aplikácií AI, detské limity, voľby sledovania |
alerts |
Kanály upozornení a kedy sa ozvú |
migrate |
Prenos dát zo starších aplikácií |
arrapi |
API v štýle Sonarr a Radarr |
ai |
Pripojenia aplikácií AI (pozdržané) |
backups |
Vytváranie, uchovávanie a obnova záloh |
health |
Kontroly stavu, doktor, balík pre podporu |
updates |
Kontrola aktualizácií a podpísaný zoznam aktualizácií |
setup |
Sprievodca prvým spustením |
Poradie vrstiev
Odkaz na Poradie vrstievModul importuje iba nižšiu vrstvu. discover nikto neimportuje. Zdrojom pravdy je tools/structurecheck/allow.go.
| Vrstva | Moduly |
|---|---|
| 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 |
Ak tvoj modul potrebuje niečo z vyššej vrstvy, neimportuj to. Nech vyšší modul pošle obyčajné dáta nadol, alebo definuj v nižšom malé rozhranie, ktoré vyplní wiring.go.
Pridaj cestu alebo modul
Odkaz na Pridaj cestu alebo modulNová cesta
Odkaz na Nová cestaZaregistruj ju v routes.go modulu s jej oprávnením. openapi.json vzniká z ciest a test zlyhá, keď sa rozchádzajú. Cesty a názvy polí, ktoré už vyšli, ostávajú. Pridávaj polia, nikdy ich nepremenúvaj. Potom prepíš Cesty API príkazom go run ./app/backend/tools/apidoc.
Nový modul
Odkaz na Nový modulNajprv zmenu vtesnaj do existujúcich 23 a pred pridaním nového otvor issue. Nový modul potrebuje svoj backendový priečinok (plus lib/<module>/ a app/tests/<module>/, ak má obrazovky), miesto v poradí vrstiev v tools/structurecheck a riadok vo wiring.go.
Ak to nefunguje
Odkaz na Ak to nefungujePríznak. Zlyhá TestModuleEdges.
Príčina. Modul importuje modul z rovnakej alebo vyššej vrstvy.
Riešenie. Pošli obyčajné dáta nadol z vyššieho modulu, alebo pridaj malé rozhranie zapojené vo wiring.go.
Príznak. Zlyhá TestSQLOnlyInStore alebo TestTableOwnership.
Príčina. SQL je mimo súboru store*.go, alebo sa dotýka tabuľky iného modulu.
Riešenie. Presuň dotaz do store vlastníka a volaj službu vlastníka podľa ID.
Pre expertov
Odkaz na Pre expertovĎalšie pravidlá
- Modul importuje iba koreňový balík iného modulu.
- Funkcie store berú
database.Querier. Riadky iného modulu čítaj cez jeho službu podľa ID a dlhé zoznamy ID posielaj ako jedno pole JSON cezjson_each(?). settings,schedules,secrets,jobsaeventspatria core. Každá skupina nastavení má jeden modul-vlastník. Ak chceš zmeniť skupinu iného modulu, zavolaj jej vlastníka.- Každé volanie von ide cez
core/outbound. - Balíky core sú v riadkoch zhora nadol:
parts,webserverastartup,logs,jobsamodel,outboundasecrets, potomdatabase,filesareleasename. Balík core importuje iba z vlastného riadka alebo nižšie. - Názvy: súbory Go sú malými písmenami s podčiarkovníkmi, súčasti Svelte sú v PascalCase a TypeScript, dokumenty, testy a súbory pre nasadenie sú v kebab-case. Súbory Pythonu používajú podčiarkovníky, aby sa dali importovať. Priečinky v
app/sú malými písmenami, jedno slovo. - Kód môžeš voľne premenúvať, ale čo sa ukladá alebo posiela, si názov ponecháva: tabuľky a stĺpce, kľúče nastavení, polia JSON, názvy úloh a názvy prepínačov.
- Komentáre neobsahujú čísla z plánu vývoja, dátumy, mená ani em pomlčky.
Vlastníci záznamov
| Vlastník | Záznamy |
|---|---|
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 a spoločné polia riadkov |
Kontroly
Kontroly bývajú v app/backend/tools/structurecheck. Väčšina potrebuje -tags structure.
| Kontrola | Stráži |
|---|---|
TestTopLayout |
Hlavné priečinky repozitára |
TestModuleSet, TestCoreSet, TestPackageMap |
Priečinky povolené v internal/ a internal/core/ |
TestModuleEdges |
Poradie vrstiev |
TestModuleImportsRootOnly |
Importy iba koreňového balíka |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Importy core, poradie riadkov a názvy |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Umiestnenie SQL a vlastníkov tabuliek |
TestGoFileNames, TestNoBannedPackageNames |
Názvy súborov a balíkov |
TestFileSizeCap, TestCorePackageSize |
Veľkosť súborov a balíkov core |
TestCommentHygiene |
Pravidlá komentárov vyššie |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
Presun nezmení cestu, migráciu, názov hlavičky HTTP ani kľúč JSON |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Staré adresy stránok zostanú preč z kódu, testov a dokumentov |
TestNoDependencyBotConfig |
V .github nie je súbor bota na závislosti |
Súvisiace stránky
Odkaz na Súvisiace stránkyHolyArrs je zadarmo. Ak ti ušetril čas, daj mu hviezdičku na GitHube, podpor ho alebo kúp mi kávu.