Moduli
Napredno
Odaberi modul kojem tvoja promjena pripada i znaj koje module smije zvati.
Prije nego počneš
Poveznica na Prije nego počneš- Pročitaj Arhitekturu za kartu mapa i pravila.
- Svaki modul ima isto ime u
app/backend/internal/<module>/, te uapp/frontend/src/lib/<module>/iapp/tests/<module>/kad ima ekrane ili testove u pregledniku.
Pronađi pravi modul
Poveznica na Pronađi pravi modul| Modul | Radi |
|---|---|
requests |
Traženje, odobrenja, pravila zahtjeva, vanjski popisi, prijave |
movies |
Filmske naslove, izdanja, setove, pretragu i uređivanje |
shows |
Serije, sezone, epizode, pretragu i uređivanje |
music |
Izvođače, albume, pjesme, pretragu i uređivanje |
sources |
Izvore, most prema Jackettu i Prowlarru, pretragu releasea |
downloads |
Preuzimatelje, red, viđene datoteke, mapiranje putanja, tagove, izbor kopija |
subtitles |
Jezike titlova, stranice, povezivanje i spremanje |
discover |
Istraži, Popularno, Pretragu, Ljude, Kalendar, stranice naslova |
suggest |
Biranje i slaganje redova i polica (samo backend) |
mediafiles |
Zapise kataloga, pravila odabira, imenovanje, pakete podataka, detalje medija |
importer |
Uvoz datoteka: raspakiravanje, tagove, povezivanje (samo backend) |
library |
Mape biblioteke, usvajanje i preimenovanje (samo backend) |
metadata |
Klijent za vanjske podatke, upite za glazbu, ljestvice ocjena, trailere |
mediaservers |
Javljanje Plexu, Jellyfinu i Embyju da ponovno pogledaju |
accounts |
Korisnike, prijavu, single sign-on, prijavu za AI aplikacije, dječja ograničenja, izbore gledanja |
alerts |
Kanale za obavijesti i kada se oglašavaju |
migrate |
Prijenos podataka iz dosadašnjih aplikacija |
arrapi |
API u stilu Sonarra i Radarra |
ai |
Veze s AI aplikacijama (zadržano) |
backups |
Izradu, čuvanje i vraćanje backupa |
health |
Provjere stanja, doktora, paket za podršku |
updates |
Provjeru ažuriranja i potpisani popis ažuriranja |
setup |
Čarobnjak za prvo pokretanje |
Redoslijed slojeva
Poveznica na Redoslijed slojevaModul uvozi samo niži sloj. Nitko ne uvozi discover. tools/structurecheck/allow.go je izvor istine.
| Sloj | Moduli |
|---|---|
| 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 |
Ako tvom modulu treba nešto s višeg sloja, nemoj ga uvoziti. Neka viši modul preda obične podatke prema dolje, ili definiraj malo sučelje u nižem koje wiring.go popuni.
Dodaj rutu ili modul
Poveznica na Dodaj rutu ili modulNova ruta
Poveznica na Nova rutaRegistriraj je u routes.go modula s njezinom dozvolom. openapi.json nastaje iz ruta, a test ruši build kad se razilaze. Objavljene putanje i imena polja ostaju. Dodaj polja, nikad ih ne preimenuj. Zatim ponovno napiši API rute naredbom go run ./app/backend/tools/apidoc.
Novi modul
Poveznica na Novi modulPrvo uklopi promjenu u postojećih 23 i otvori issue prije nego dodaš novi. Novom modulu treba backend mapa (plus lib/<module>/ i app/tests/<module>/ ako ima ekrane), mjesto u redoslijedu slojeva u tools/structurecheck i redak u wiring.go.
Ako ne radi
Poveznica na Ako ne radiSimptom. TestModuleEdges ne prolazi.
Uzrok. Modul uvozi drugi s istog ili višeg sloja.
Rješenje. Predaj obične podatke prema dolje iz višeg modula ili dodaj malo sučelje spojeno u wiring.go.
Simptom. TestSQLOnlyInStore ili TestTableOwnership ne prolazi.
Uzrok. SQL je izvan store*.go datoteke ili dira tablicu drugog modula.
Rješenje. Premjesti upit u store vlasnika i pozovi service vlasnika preko ID-a.
Za napredne
Poveznica na Za napredneJoš pravila
- Modul uvozi samo korijenski paket drugog modula.
- Funkcije storea primaju
database.Querier. Retke drugog modula čitaj preko njegovog servicea po ID-u, a duge popise ID-ova predaj kao jedan JSON array sjson_each(?). settings,schedules,secrets,jobsieventspripadaju coreu. Svaka skupina postavki ima jednog modula vlasnika. Za promjenu skupine drugog modula pozovi njegovog vlasnika.- Svaki vanjski poziv ide kroz
core/outbound. - Core paketi stoje u recima, od vrha prema dnu:
parts,webserveristartup,logs,jobsimodel,outboundisecrets, padatabase,filesireleasename. Core paket uvozi samo iz svog reda ili nižeg. - Imena: Go datoteke su malim slovima s podcrtama, Svelte dijelovi su PascalCase, a TypeScript, dokumentacija, testovi i deploy datoteke su kebab-case. Python datoteke koriste podcrte da se mogu uvoziti. Mape u
app/su malim slovima, jedna riječ. - Kod slobodno preimenuj, ali sve što se sprema ili šalje zadržava ime: tablice i stupce, ključeve postavki, JSON polja, imena zadataka i imena prekidača.
- Komentari ne nose brojeve iz roadmapa, datume, imena ni duge crtice.
Vlasnici zapisa
| Vlasnik | Zapisi |
|---|---|
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 i zajednička polja redaka |
Provjere
Provjere su u app/backend/tools/structurecheck. Većina traži -tags structure.
| Provjera | Drži |
|---|---|
TestTopLayout |
Gornje mape repozitorija |
TestModuleSet, TestCoreSet, TestPackageMap |
Mape dopuštene u internal/ i internal/core/ |
TestModuleEdges |
Redoslijed slojeva |
TestModuleImportsRootOnly |
Uvoze samo korijenskog paketa |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Core uvoze, redoslijed redova i imena |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Smještaj SQL-a i vlasnike tablica |
TestGoFileNames, TestNoBannedPackageNames |
Imena datoteka i paketa |
TestFileSizeCap, TestCorePackageSize |
Veličinu datoteka i core paketa |
TestCommentHygiene |
Gornja pravila za komentare |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
Premještanje ne mijenja rutu, migraciju, ime HTTP headera ni JSON ključ |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Stare adrese stranica ostaju izvan koda, testova i dokumentacije |
TestNoDependencyBotConfig |
Nema datoteke dependency bota u .github |
Povezane stranice
Poveznica na Povezane straniceHolyArrs je besplatan. Ako ti je uštedio vrijeme, daj mu zvjezdicu na GitHubu, podrži ga ili počasti me kavom.