Moduler
Expert
Välj modulen din ändring hör hemma i, och ta reda på vilka moduler den får anropa.
Innan du börjar
Länk till Innan du börjar- Läs Arkitektur för mappkartan och reglerna.
- Varje modul har samma namn i
app/backend/internal/<module>/, och iapp/frontend/src/lib/<module>/ochapp/tests/<module>/när den har skärmar eller webbläsartester.
Hitta rätt modul
Länk till Hitta rätt modul| Modul | Ansvarar för |
|---|---|
requests |
Förfrågningar, godkännanden, förfrågningsregler, externa listor, rapporter |
movies |
Filmtitlar, utgåvor, samlingar, sökning och organisering |
shows |
Serier, säsonger, avsnitt, sökning och organisering |
music |
Artister, album, spår, sökning och organisering |
sources |
Källor, bryggan till Jackett och Prowlarr, release-sökning |
downloads |
Nedladdare, kön, sedda filer, sökvägsmappningar, taggar, kopieval |
subtitles |
Undertextspråk, sidor, matchning och sparande |
discover |
Utforska, Populärt, Sök, Personer, Kalender, titelsidor |
suggest |
Urval och sortering av rader och hyllor (bara backend) |
mediafiles |
Katalogposter, urvalsregler, namngivning, datapaket, mediadetaljer |
importer |
Filimport: uppackning, taggar, matchning (bara backend) |
library |
Biblioteksmappar, övertagande och namnbyte (bara backend) |
metadata |
Klienten för externa data, musikuppslag, åldersgränsskalor, trailers |
mediaservers |
Att säga åt Plex, Jellyfin och Emby att titta igen |
accounts |
Användare, inloggning, single sign-on, inloggning för AI-appar, barngränser, visningsval |
alerts |
Aviseringskanaler och när de hörs av |
migrate |
Att föra över data från tidigare appar |
arrapi |
API:et i Sonarr- och Radarr-stil |
ai |
Anslutningar för AI-appar (tillbakahållen) |
backups |
Att göra, spara och återställa backuper |
health |
Hälsokontroller, doktorn, supportpaketet |
updates |
Uppdateringskontrollen och den signerade uppdateringslistan |
setup |
Guiden vid första start |
Lagerordning
Länk till LagerordningEn modul importerar bara ett lägre lager. Ingenting importerar discover. tools/structurecheck/allow.go är den enda källan till sanning.
| Lager | Moduler |
|---|---|
| 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 |
Om din modul behöver något från ett högre lager ska du inte importera det. Låt den högre modulen skicka ner vanlig data, eller definiera ett litet gränssnitt i den lägre som wiring.go fyller i.
Lägg till en route eller en modul
Länk till Lägg till en route eller en modulNy route
Länk till Ny routeRegistrera den i modulens routes.go med dess behörighet. openapi.json kommer från routerna, och ett test misslyckas om de glider isär. Släppta sökvägar och fältnamn finns kvar. Lägg till fält, byt aldrig namn på dem. Skriv sedan om API-routes med go run ./app/backend/tools/apidoc.
Ny modul
Länk till Ny modulFå först in din ändring i de 23 som finns, och öppna ett ärende innan du lägger till en. En ny modul behöver sin backend-mapp (plus lib/<module>/ och app/tests/<module>/ om den har skärmar), en plats i lagerordningen i tools/structurecheck och en rad i wiring.go.
Om det inte fungerar
Länk till Om det inte fungerarSymptom. TestModuleEdges misslyckas.
Orsak. En modul importerar en på samma eller ett högre lager.
Lösning. Skicka ner vanlig data från den högre modulen, eller lägg till ett litet gränssnitt som kopplas in i wiring.go.
Symptom. TestSQLOnlyInStore eller TestTableOwnership misslyckas.
Orsak. SQL ligger utanför en store*.go-fil, eller rör en annan moduls tabell.
Lösning. Flytta frågan till ägarens store och anropa ägarens tjänst med ID.
För experter
Länk till För experterFler regler
- En modul importerar bara rotpaketet i en annan modul.
- Store-funktioner tar en
database.Querier. Läs en annan moduls rader via dess tjänst med ID, och skicka långa ID-listor som en enda JSON-array medjson_each(?). settings,schedules,secrets,jobsocheventstillhör core. Varje inställningsgrupp har en ägarmodul. För att ändra en annan moduls grupp anropar du dess ägare.- Varje anrop utåt går genom
core/outbound. - Core-paketen ligger i rader, uppifrån och ner:
parts,webserverochstartup,logs,jobsochmodel,outboundochsecrets, sedandatabase,filesochreleasename. Ett core-paket importerar bara sin egen rad eller en lägre. - Namn: Go-filer är gemena med understreck, Svelte-delar är PascalCase, och TypeScript, dokument, tester och deploy-filer är kebab-case. Python-filer använder understreck så att de kan importeras. Mappar i
app/är gemena, ett ord. - Byt gärna namn på kod, men allt som lagras eller skickas behåller sitt namn: tabeller och kolumner, nyckelnamn för inställningar, JSON-fält, jobbnamn och reglagenamn.
- Kommentarer innehåller inga färdplansnummer, datum, namn eller långa tankstreck.
Postägare
| Ägare | Poster |
|---|---|
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 och de delade radfälten |
Kontrollerna
Kontrollerna finns i app/backend/tools/structurecheck. De flesta kräver -tags structure.
| Kontroll | Säkerställer |
|---|---|
TestTopLayout |
Översta mapparna i repot |
TestModuleSet, TestCoreSet, TestPackageMap |
Mappar som får finnas i internal/ och internal/core/ |
TestModuleEdges |
Lagerordning |
TestModuleImportsRootOnly |
Import av bara rotpaket |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Core-importer, radordning och namn |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Var SQL ligger och vem som äger tabellerna |
TestGoFileNames, TestNoBannedPackageNames |
Fil- och paketnamn |
TestFileSizeCap, TestCorePackageSize |
Fil- och core-paketstorlek |
TestCommentHygiene |
Kommentarsreglerna ovan |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
En flytt ändrar ingen route, migrering, HTTP-headernamn eller JSON-nyckel |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Gamla sidadresser förblir borta ur kod, tester och dokument |
TestNoDependencyBotConfig |
Ingen fil för beroendebot i .github |
Relaterat
Länk till RelateratHolyArrs är gratis. Om det sparade dig tid kan du ge det en stjärna på GitHub, sponsra det eller bjuda mig på en kaffe.