Moduler
Erfaren
Vælg det modul, din ændring hører til, og vid, hvilke moduler det må kalde.
Før du begynder
Link til Før du begynder- Læs Arkitektur for mappekortet og reglerne.
- Hvert modul har samme navn i
app/backend/internal/<module>/, og iapp/frontend/src/lib/<module>/ogapp/tests/<module>/, når det har skærmbilleder eller browsertests.
Find det rigtige modul
Link til Find det rigtige modul| Modul | Gør |
|---|---|
requests |
Ønsker, godkendelser, ønskeregler, eksterne lister, rapporter |
movies |
Filmtitler, udgaver, samlinger, søgning og oprydning |
shows |
Serier, sæsoner, afsnit, søgning og oprydning |
music |
Kunstnere, album, numre, søgning og oprydning |
sources |
Kilder, Jackett- og Prowlarr-broen, søgning efter releases |
downloads |
Downloadere, køen, sete filer, stikoblinger, tags, valg af kopi |
subtitles |
Undertekstsprog, sider, matchning og gemning |
discover |
Explore, Popular, Search, People, Calendar, titelsider |
suggest |
Valg og sortering af rækker og hylder (kun backend) |
mediafiles |
Katalogposter, udvalgsregler, navngivning, datapakker, mediedetaljer |
importer |
Filimport: udpakning, tags, matchning (kun backend) |
library |
Biblioteksmapper, overtagelse og omdøbning (kun backend) |
metadata |
Klienten til eksterne data, musikopslag, aldersgrænsestiger, trailere |
mediaservers |
At bede Plex, Jellyfin og Emby om at kigge igen |
accounts |
Brugere, login, single sign-on, login til AI-apps, børnegrænser, visningsvalg |
alerts |
Beskedkanaler og hvornår de siger noget |
migrate |
At tage data med over fra tidligere apps |
arrapi |
API’et i Sonarr- og Radarr-stil |
ai |
Forbindelser til AI-apps (tilbageholdt) |
backups |
At lave, gemme og gendanne backups |
health |
Tilstandstjek, doktoren, supportpakken |
updates |
Opdateringstjekket og den signerede opdateringsliste |
setup |
Guiden ved første start |
Lagrækkefølge
Link til LagrækkefølgeEt modul importerer kun et lavere lag. Intet importerer discover. tools/structurecheck/allow.go er den, der gælder.
| 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 dit modul har brug for noget fra et højere lag, så importer det ikke. Lad det højere modul sende almindelige data ned, eller definer en lille grænseflade i det lavere, som wiring.go udfylder.
Tilføj en rute eller et modul
Link til Tilføj en rute eller et modulNy rute
Link til Ny ruteRegistrer den i modulets routes.go med dens rettighed. openapi.json bliver lavet ud fra ruterne, og en test fejler, hvis de glider fra hinanden. Udgivne stier og feltnavne består. Tilføj felter, omdøb dem aldrig. Skriv så API-ruter om med go run ./app/backend/tools/apidoc.
Nyt modul
Link til Nyt modulPrøv først at få din ændring til at passe ind i de 23, og åbn en issue, før du tilføjer et. Et nyt modul skal have sin backend-mappe (plus lib/<module>/ og app/tests/<module>/, hvis det har skærmbilleder), en plads i lagrækkefølgen i tools/structurecheck og en linje i wiring.go.
Hvis det ikke virker
Link til Hvis det ikke virkerSymptom. TestModuleEdges fejler.
Årsag. Et modul importerer et på samme eller et højere lag.
Løsning. Send almindelige data ned fra det højere modul, eller tilføj en lille grænseflade, der kobles i wiring.go.
Symptom. TestSQLOnlyInStore eller TestTableOwnership fejler.
Årsag. SQL ligger uden for en store*.go-fil eller rører et andet moduls tabel.
Løsning. Flyt forespørgslen over i ejerens store, og kald ejerens service med ID.
For erfarne
Link til For erfarneFlere regler
- Et modul importerer kun rodpakken i et andet modul.
- Store-funktioner tager en
database.Querier. Læs et andet moduls rækker gennem dets service med ID, og send lange ID-lister som ét JSON-array medjson_each(?). settings,schedules,secrets,jobsogeventstilhører core. Hver indstillingsgruppe har ét ejermodul. Hvis du vil ændre et andet moduls gruppe, så kald dets ejer.- Alle kald udad går gennem
core/outbound. - Core-pakker ligger i rækker, oppefra og ned:
parts,webserverogstartup,logs,jobsogmodel,outboundogsecrets, sådatabase,filesogreleasename. En core-pakke importerer kun sin egen række eller en lavere. - Navne: Go-filer er med små bogstaver og understreger, Svelte-dele er PascalCase, og TypeScript-, dokumentations-, test- og deploy-filer er kebab-case. Python-filer bruger understreger, så de kan importeres. Mapper i
app/er med små bogstaver, ét ord. - Omdøb kode frit, men alt, der er gemt eller sendt, beholder sit navn: tabeller og kolonner, indstillingsnøgler, JSON-felter, opgavenavne og kontaktnavne.
- Kommentarer har ingen køreplansnumre, datoer, navne eller tankestreger.
Ejere af records
| Ejer | Records |
|---|---|
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 fælles rækkefelter |
Tjekkene
Tjekkene ligger i app/backend/tools/structurecheck. De fleste kræver -tags structure.
| Tjek | Sikrer |
|---|---|
TestTopLayout |
Mapperne øverst i repoet |
TestModuleSet, TestCoreSet, TestPackageMap |
Mapper tilladt i internal/ og internal/core/ |
TestModuleEdges |
Lagrækkefølge |
TestModuleImportsRootOnly |
Kun import af rodpakker |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Core-importer, rækkefølge og navne |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Placering af SQL og ejere af tabeller |
TestGoFileNames, TestNoBannedPackageNames |
Fil- og pakkenavne |
TestFileSizeCap, TestCorePackageSize |
Størrelse på filer og core-pakker |
TestCommentHygiene |
Kommentarreglerne ovenfor |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
En flytning ændrer ingen rute, migrering, HTTP-headernavn eller JSON-nøgle |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Gamle sideadresser forbliver væk fra kode, tests og dokumentation |
TestNoDependencyBotConfig |
Ingen fil til en afhængighedsbot i .github |
Se også
Link til Se ogsåHolyArrs er gratis. Hvis det sparede dig tid, kan du give det en stjerne på GitHub, sponsorere det eller give mig en kop kaffe.