Pāriet uz saturu

Moduļi

Pieredzējušiem

Izvēlies moduli, kuram tava izmaiņa pieder, un uzzini, kurus moduļus tas drīkst izsaukt.

  • Izlasi Arhitektūra, lai uzzinātu mapju karti un noteikumus.
  • Katram modulim ir viens un tas pats nosaukums mapē app/backend/internal/<module>/, kā arī mapēs app/frontend/src/lib/<module>/ un app/tests/<module>/, ja tam ir ekrāni vai pārlūka testi.

Atrodi īsto moduli

Saite uz Atrodi īsto moduli
Modulis Dara
requests Pieprasīšana, apstiprinājumi, pieprasījumu noteikumi, ārējie saraksti, atskaites
movies Filmu nosaukumi, izdevumi, komplekti, meklēšana un kārtošana
shows Seriāli, sezonas, epizodes, meklēšana un kārtošana
music Izpildītāji, albumi, ieraksti, meklēšana un kārtošana
sources Avoti, Jackett un Prowlarr tilts, izlaidumu meklēšana
downloads Lejupielādētāji, rinda, redzētie faili, ceļu kartes, birkas, kopiju izvēles
subtitles Subtitru valodas, vietnes, saskaņošana un saglabāšana
discover Izpēte, Populārais, Meklēšana, Cilvēki, Kalendārs, nosaukumu lapas
suggest Rindu un plauktu izvēle un kārtošana (tikai aizmugure)
mediafiles Kataloga ieraksti, izvēles noteikumi, nosaukšana, datu pakotnes, multivides dati
importer Failu imports: izpakošana, birkas, saskaņošana (tikai aizmugure)
library Bibliotēkas mapes, pārņemšana un pārsaukšana (tikai aizmugure)
metadata Ārējo datu klients, mūzikas meklēšana, vērtējumu skalas, treileri
mediaservers Plex, Jellyfin un Emby paziņošana, lai tie skenē vēlreiz
accounts Lietotāji, pieteikšanās, vienotā pieteikšanās, AI lietotņu pieteikšanās, bērnu limiti, skatīšanās izvēles
alerts Paziņojumu kanāli un kad tie runā
migrate Datu pārnešana no iepriekšējām lietotnēm
arrapi Sonarr un Radarr stila API
ai AI lietotņu savienojumi (aizturēts)
backups Dublējumu izveide, glabāšana un atjaunošana
health Veselības pārbaudes, ārsts, atbalsta pakotne
updates Atjauninājumu pārbaude un parakstītais atjauninājumu saraksts
setup Pirmās palaišanas vednis

Modulis importē tikai zemāku slāni. Neviens neimportē discover. Patiesības avots ir tools/structurecheck/allow.go.

Slānis Moduļi
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

Ja tavam modulim kaut kas vajadzīgs no augstāka slāņa, neimportē to. Liec augstākajam modulim nodot vienkāršus datus uz leju vai definē zemākajā nelielu saskarni, ko aizpilda wiring.go.

Pievieno maršrutu vai moduli

Saite uz Pievieno maršrutu vai moduli

Reģistrē to moduļa routes.go ar tā atļauju. openapi.json rodas no maršrutiem, un tests neizdodas, ja tie atšķiras. Izlaistie ceļi un lauku nosaukumi paliek. Laukus pievieno, nekad nepārsauc. Tad pārraksti API maršruti ar go run ./app/backend/tools/apidoc.

Vispirms mēģini savu izmaiņu ievietot šajos 23 moduļos, un pirms jauna pievienošanas atver problēmu. Jaunam modulim vajadzīga sava aizmugures mape (kā arī lib/<module>/ un app/tests/<module>/, ja tam ir ekrāni), vieta slāņu secībā failā tools/structurecheck un rinda failā wiring.go.

Simptoms. TestModuleEdges neizdodas. Cēlonis. Modulis importē citu no tā paša vai augstāka slāņa. Risinājums. Nodod vienkāršus datus uz leju no augstākā moduļa vai pievieno nelielu saskarni, ko savieno wiring.go.

Simptoms. TestSQLOnlyInStore vai TestTableOwnership neizdodas. Cēlonis. SQL atrodas ārpus store*.go faila vai skar cita moduļa tabulu. Risinājums. Pārvieto vaicājumu īpašnieka glabātuvē un izsauc īpašnieka servisu pēc ID.

Vairāk noteikumu
  • Modulis importē tikai cita moduļa saknes pakotni.
  • Glabātuves funkcijas pieņem database.Querier. Cita moduļa rindas nolasi caur tā servisu pēc ID, un garus ID sarakstus nodod kā vienu JSON masīvu ar json_each(?).
  • settings, schedules, secrets, jobs un events pieder core. Katrai iestatījumu grupai ir viens īpašnieka modulis. Lai mainītu cita moduļa grupu, izsauc tā īpašnieku.
  • Katrs izsaukums uz āru iet caur core/outbound.
  • Core pakotnes ir rindās no augšas uz leju: parts, webserver un startup, logs, jobs un model, outbound un secrets, tad database, files un releasename. Core pakotne importē tikai savu rindu vai zemāku.
  • Nosaukumi: Go failu nosaukumi ir ar mazajiem burtiem un pasvītrām, Svelte daļas ir PascalCase, bet TypeScript, dokumentācijas, testu un izvietošanas faili ir kebab-case. Python faili lieto pasvītras, lai tos varētu importēt. Mapju nosaukumi app/ ir ar mazajiem burtiem, viens vārds.
  • Kodu pārsauc brīvi, bet viss, kas tiek glabāts vai sūtīts, saglabā savu nosaukumu: tabulas un kolonnas, iestatījumu atslēgas, JSON lauki, uzdevumu nosaukumi un slēdžu nosaukumi.
  • Komentāros nav ceļveža numuru, datumu, vārdu vai garo domuzīmju.
Ierakstu īpašnieki
Īpašnieks Ieraksti
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 un kopīgie rindu lauki
Pārbaudes

Pārbaudes atrodas mapē app/backend/tools/structurecheck. Lielākajai daļai vajadzīgs -tags structure.

Pārbaude Nodrošina
TestTopLayout Repozitorija augšējās mapes
TestModuleSet, TestCoreSet, TestPackageMap Mapes, kas atļautas internal/ un internal/core/
TestModuleEdges Slāņu secība
TestModuleImportsRootOnly Tikai saknes pakotnes importi
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable Core importi, rindu secība un nosaukumi
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist SQL novietojums un tabulu īpašnieki
TestGoFileNames, TestNoBannedPackageNames Failu un pakotņu nosaukumi
TestFileSizeCap, TestCorePackageSize Faila un core pakotnes izmērs
TestCommentHygiene Iepriekš minētie komentāru noteikumi
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged Pārvietošana nemaina nevienu maršrutu, migrāciju, HTTP galvenes nosaukumu vai JSON atslēgu
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs Vecās lapu adreses paliek prom no koda, testiem un dokumentācijas
TestNoDependencyBotConfig Nav atkarību robota faila mapē .github

HolyArrs ir bezmaksas. Ja tas ietaupīja tavu laiku, atzīmē to ar zvaigznīti GitHub, atbalsti to vai uzcienā mani ar kafiju.