Preskočiť na obsah

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 v app/frontend/src/lib/<module>/ a app/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

Modul 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 modul

Zaregistruj 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.

Najprv 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.

Prí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.

Ď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 cez json_each(?).
  • settings, schedules, secrets, jobs a events patria 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, webserver a startup, logs, jobs a model, outbound a secrets, potom database, files a releasename. 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ánky

HolyArrs je zadarmo. Ak ti ušetril čas, daj mu hviezdičku na GitHube, podpor ho alebo kúp mi kávu.