Moduler
Ekspert
Velg modulen endringen din hører hjemme i, og vit hvilke moduler den kan kalle.
Før du begynner
Lenke til Før du begynner- Les Arkitektur for mappekartet og reglene.
- Hver modul har samme navn i
app/backend/internal/<module>/, og iapp/frontend/src/lib/<module>/ogapp/tests/<module>/når den har skjermbilder eller nettlesertester.
Finn riktig modul
Lenke til Finn riktig modul| Modul | Gjør |
|---|---|
requests |
Å be om titler, godkjenninger, forespørselsregler, eksterne lister, rapporter |
movies |
Filmtitler, utgaver, sett, søk og organisering |
shows |
Serier, sesonger, episoder, søk og organisering |
music |
Artister, album, låter, søk og organisering |
sources |
Kilder, broen til Jackett og Prowlarr, release-søk |
downloads |
Nedlastere, køen, kjente filer, stikoblinger, tagger, kopivalg |
subtitles |
Undertekstspråk, sider, matching og lagring |
discover |
Explore, Popular, Search, People, Calendar, tittelsider |
suggest |
Valg og sortering av rader og hyller (bare backend) |
mediafiles |
Katalogposter, valgregler, navngiving, datapakker, mediadetaljer |
importer |
Filimport: utpakking, tagger, matching (bare backend) |
library |
Bibliotekmapper, overtakelse og omdøping (bare backend) |
metadata |
Klienten for data utenfra, musikkoppslag, aldersgrenser, trailere |
mediaservers |
Å be Plex, Jellyfin og Emby om å se på nytt |
accounts |
Brukere, innlogging, single sign-on, AI-app-innlogging, barnegrenser, visningsvalg |
alerts |
Varselkanaler og når de melder fra |
migrate |
Å hente over data fra tidligere apper |
arrapi |
API-et i Sonarr- og Radarr-stil |
ai |
Tilkoblinger til AI-apper (tilbakeholdt) |
backups |
Å lage, beholde og gjenopprette backuper |
health |
Helsesjekker, doctor, supportpakken |
updates |
Oppdateringssjekken og den signerte oppdateringslisten |
setup |
Veiviseren ved første oppstart |
Rekkefølge på lagene
Lenke til Rekkefølge på lageneEn modul importerer bare et lavere lag. Ingenting importerer discover. tools/structurecheck/allow.go er fasiten.
| Lag | 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 |
Hvis modulen din trenger noe fra et høyere lag, ikke importer det. La den høyere modulen sende rene data ned, eller definer et lite grensesnitt i den lavere som wiring.go fyller inn.
Legg til en rute eller en modul
Lenke til Legg til en rute eller en modulNy rute
Lenke til Ny ruteRegistrer den i routes.go i modulen, med tillatelsen den trenger. openapi.json kommer fra rutene, og en test feiler ved avvik. Ruter og feltnavn som er utgitt, blir stående. Legg til felter, aldri gi dem nytt navn. Skriv så API-ruter på nytt med go run ./app/backend/tools/apidoc.
Ny modul
Lenke til Ny modulFå endringen til å passe inn i de 23 først, og åpne en sak før du legger til en. En ny modul trenger backend-mappen sin (pluss lib/<module>/ og app/tests/<module>/ hvis den har skjermbilder), en plass i rekkefølgen på lagene i tools/structurecheck og en linje i wiring.go.
Hvis det ikke fungerer
Lenke til Hvis det ikke fungererSymptom. TestModuleEdges feiler.
Årsak. En modul importerer en på samme eller et høyere lag.
Løsning. Send rene data ned fra den høyere modulen, eller legg til et lite grensesnitt som kobles i wiring.go.
Symptom. TestSQLOnlyInStore eller TestTableOwnership feiler.
Årsak. SQL ligger utenfor en store*.go-fil, eller rører tabellen til en annen modul.
Løsning. Flytt spørringen til store-filen til eieren og kall tjenesten til eieren med ID.
For viderekomne
Lenke til For viderekomneFlere regler
- En modul importerer bare rotpakken til en annen modul.
- Store-funksjoner tar en
database.Querier. Les radene til en annen modul gjennom tjenesten dens med ID, og send lange ID-lister som én JSON-array medjson_each(?). settings,schedules,secrets,jobsogeventshører til core. Hver innstillingsgruppe har én eiermodul. For å endre gruppen til en annen modul, kall eieren.- Alle kall til utsiden går gjennom
core/outbound. - Core-pakker ligger i rader, fra topp til bunn:
parts,webserverogstartup,logs,jobsogmodel,outboundogsecrets, sådatabase,filesogreleasename. En core-pakke importerer bare sin egen rad eller lavere. - Navn: Go-filer er små bokstaver med understrek, Svelte-deler er PascalCase, og TypeScript-, doks-, test- og deploy-filer er kebab-case. Python-filer bruker understrek så de kan importeres. Mapper i
app/er små bokstaver, ett ord. - Gi kode nytt navn fritt, men alt som lagres eller sendes beholder navnet: tabeller og kolonner, innstillingsnøkler, JSON-felter, oppgavenavn og bryternavn.
- Kommentarer har ingen veikartnumre, datoer, navn eller tankestreker.
Eiere av poster
| Eier | 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 og de felles radfeltene |
Sjekkene
Sjekkene ligger i app/backend/tools/structurecheck. De fleste trenger -tags structure.
| Sjekk | Sikrer |
|---|---|
TestTopLayout |
Mappene øverst i repoet |
TestModuleSet, TestCoreSet, TestPackageMap |
Mapper som er tillatt i internal/ og internal/core/ |
TestModuleEdges |
Rekkefølgen på lagene |
TestModuleImportsRootOnly |
Bare import av rotpakken |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Core-importer, radrekkefølge og navn |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Hvor SQL ligger og hvem som eier tabellene |
TestGoFileNames, TestNoBannedPackageNames |
Fil- og pakkenavn |
TestFileSizeCap, TestCorePackageSize |
Størrelse på filer og core-pakker |
TestCommentHygiene |
Kommentarreglene over |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
En flytting endrer ingen rute, migrering, HTTP-headernavn eller JSON-nøkkel |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Gamle sideadresser blir borte fra kode, tester og doks |
TestNoDependencyBotConfig |
Ingen fil for avhengighetsbot i .github |
Relatert
Lenke til RelatertHolyArrs er gratis. Hvis det sparte deg tid, kan du gi det en stjerne på GitHub, sponse det eller spandere en kaffe.