Arhitektūra
Pieredzējušiem
Uzzini, kur atrodas kods un kādi noteikumi ir spēkā, pirms maini ko lielu.
Īsumā
Saite uz ĪsumāHolyArrs ir viena Go programma ar iebūvētu tīmekļa lietotni. Tā apkalpo tīmekļa lietotni un JSON API uz porta 6262, un datus glabā 2 SQLite failos konfigurācijas mapē. Tā izsauc lejupielādētājus, avotus (caur Jackett vai Prowlarr), multivides serverus, paziņojumu kanālus un HolyArrs metadatu serveri.
Seko vienam pieprasījumam. Kāds pieprasa filmu sadaļā Izpēte.
requestsieraksta pieprasījumu.- Pēc apstiprināšanas
moviespieprasasourcesizlaidumus. - Izvēles noteikumi
mediafilestos novērtē ar punktiem. downloadsnosūta labāko lejupielādētājam.- Kad lejupielāde beidzas,
mediafilesimportē failu. - Par to uzzina
mediaserversunalerts.
Koda karte
Saite uz Koda karteapp/backend/cmd/holyarrs/ main.go starts the program; wiring.go builds the modules and joins themapp/backend/internal/<module>/ one flat folder per moduleapp/backend/internal/core/ plumbing every module may useapp/backend/tools/ dev-only programsapp/frontend/ the SvelteKit web app; embed.go bundles its buildapp/frontend/src/routes/<page>/ thin pages that combine module partsapp/frontend/src/lib/<module>/ each module's web codeapp/frontend/src/lib/ui/ parts used by 2 or more modules, and nothing elseapp/frontend/src/lib/core/ server client, app state, helpersapp/tests/ end-to-end tests (Playwright)deploy/ the Dockerfile and release scriptsdocs/ guides and these pagesgo.mod atrodas repozitorija saknē, jo go:embed nevar sasniegt augšējo mapi.
Kur ko atrast
Saite uz Kur ko atrast| Tu vēlies mainīt | Meklē šeit |
|---|---|
| Kā tiek izvēlēts izlaidums | internal/mediafiles |
| Lejupielādētāja klients | internal/downloads, līguma testi internal/downloads/conformance_test.go |
| Paziņojumu kanāls | internal/alerts |
| Pieteikšanās, lietotāji, API atslēgas | internal/accounts |
| Pirmās palaišanas vednis | internal/setup, app/frontend/src/routes/welcome |
| Pabeigta faila importēšana (izpakošana, birkas, saskaņošana) | internal/importer |
| Bibliotēkas mapes, pārņemšana un pārsaukšana | internal/library |
| Kā tiek izvēlētas un sakārtotas rindas un plaukti | internal/suggest |
| Kuras lietotnes daļas ir ieslēgtas | internal/core/parts |
| Lapas adrese | app/frontend/src/routes/ |
| Migrācija | internal/core/database/migrations/ |
| Docker attēls | deploy/Dockerfile |
Noteikumi
Saite uz NoteikumiPārbaudes mapē app/backend/tools/structurecheck pārtrauc būvēšanu, ja kāds noteikums tiek pārkāpts. Palaid tās ar rindu no Testēšana.
- Slāņu secība. Modulis importē tikai zemāka slāņa moduļus un tikai to saknes pakotni. Viena slāņa moduļi viens otru nekad neimportē.
- Izsaukšana uz augšu. Ja zemākam modulim kaut kas vajadzīgs no augstāka, augstākais nodod datus uz leju kā vienkāršus datus, vai arī zemākais definē nelielu saskarni, ko aizpilda
wiring.go. - SQL paliek mājās. SQL glabā tikai paša moduļa
store*.gofaili, un tikai par paša moduļa tabulām. Lai nolasītu cita moduļa rindas, izsauc tā servisu. - Koplietotās tabulas pieder core. Pie
settings,schedules,secrets,jobsuneventspiekļūsti caur core palīgfunkcijām. - Viena izeja. Katrs izsaukums uz āru iet caur
core/outbound. - Aizturētās funkcijas reģistrē slēdzi ar
core/startup. Kamēr tas ir izslēgts, maršruta nav, un lapa funkciju paslēpj. - Nekādu „miskastes” pakotņu. Nekādu
util,common,sharedvaihelpers.
Slāņu secība ir sadaļā Moduļi.
Pieredzējušiem
Saite uz PieredzējušiemModuļa iekšpuse
Katram aizmugures modulim ir vieni un tie paši failu nosaukumi.
| Fails | Satur |
|---|---|
routes.go |
API maršruti, katrs ar tam vajadzīgo atļauju |
service.go un tēmu faili |
Loģika, ko izsauc citi moduļi |
store.go, store_<topic>.go |
Viss SQL par moduļa paša tabulām |
types.go |
Moduļa ieraksti |
Tīmekļa pusē lib/<module>/ satur index.ts (ko drīkst izmantot citi moduļi), tā Svelte daļas un to testus, kā arī api.ts un state.svelte.ts tikai tad, ja modulim ir savi izsaukumi vai stāvoklis.
Core pakotnes
Core ir pamatinfrastruktūra. Tajā nav produkta noteikumu, un tas neimportē nevienu moduli.
| Pakotne | Satur |
|---|---|
core/database |
Abu SQLite failu atvēršana un migrēšana, vaicājumu palīgfunkcijas, iestatījumu un notikumu palīgfunkcijas, kopīgie rindu lauki, vēstures apgriešana |
core/files |
Failu un mapju palīgfunkcijas, brīva vieta diskā |
core/releasename |
Kvalitāte, grupa un epizožu numuri no izlaiduma nosaukuma |
core/outbound |
Vienīgais veids, kā izsaukt ārējos serverus, ar adrešu pārbaudēm |
core/secrets |
Atslēgu glabātuve un atslēgu rotācija |
core/logs |
Lietotnes žurnāls un avāriju piezīmes |
core/jobs |
Uzdevumu rinda, grafiki un cilpas, kas pēc avārijas restartējas |
core/webserver |
Maršrutētāja pamati, URL base, saspiešana, tiešā pārraide |
core/startup |
Palaišanas lietotājs, zemas atmiņas režīms, aizturēto funkciju slēdži, atmiņas limits, daļas |
core/parts |
Daļu slēdži, ko katrs modulis pārbauda, pirms apkalpo vai darbojas |
core/model |
Kopīgi tipi, piemēram, aktieri un subjekti |
Kad core jāpiekļūst moduļa datiem, modulis reģistrē āķi pie core failā wiring.go. Tā darbojas atslēgu rotācija.
Dati
| Fails | Satur |
|---|---|
holyarrs.db |
Bibliotēku, pieprasījumus, iestatījumus un visu pārējo svarīgo |
holyarrs-events.db |
Vēsturi un citas notikumu rindas. Tas aug un tiek apgriezts, neskarot galveno failu |
Migrācijas ir numurēti SQL faili mapēs core/database/migrations/main un core/database/migrations/events. Tie darbojas startā.
Saistītais
Saite uz SaistītaisHolyArrs ir bezmaksas. Ja tas ietaupīja tavu laiku, atzīmē to ar zvaigznīti GitHub, atbalsti to vai uzcienā mani ar kafiju.