Arhitektuur
Asjatundja
Enne suure muudatuse tegemist uuri, kus kood asub ja millised reeglid kehtivad.
Lühidalt
Link jaotisele LühidaltHolyArrs on üks Go programm, millesse on veebirakendus sisse ehitatud. See pakub veebirakendust ja JSON API-t pordil 6262 ning hoiab andmeid kahes SQLite-failis seadete kaustas. Programm pöördub allalaadijate, allikate (Jacketti või Prowlarri kaudu), meediaserverite, teavituskanalite ja HolyArrsi metaandmete serveri poole.
Jälgi üht päringut. Keegi soovib lehel Explore (avasta) filmi.
requestssalvestab soovi.- Pärast kinnitamist küsib
moviesväljalasked mooduliltsources. - Moodulis
mediafilesolevad valikureeglid annavad neile punkte. downloadssaadab parima allalaadijale.- Kui allalaadimine on valmis, impordib
mediafilesfaili. mediaserversjaalertssaavad sellest teada.
Koodikaart
Link jaotisele Koodikaartapp/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 asub repo juurkaustas, sest go:embed ei ulatu ülemkausta.
Kust mida leida
Link jaotisele Kust mida leida| Soovid muuta | Vaata siit |
|---|---|
| Kuidas väljalaset valitakse | internal/mediafiles |
| Allalaadija klient | internal/downloads, lepingutestid failis internal/downloads/conformance_test.go |
| Teavituskanal | internal/alerts |
| Sisselogimine, kasutajad, API-võtmed | internal/accounts |
| Esimese käivituse viisard | internal/setup, app/frontend/src/routes/welcome |
| Valmis faili import (lahtipakkimine, sildid, sobitamine) | internal/importer |
| Meediakogu kaustad, üle võtmine ja ümbernimetamine | internal/library |
| Kuidas ridu ja riiuleid valitakse ja järjestatakse | internal/suggest |
| Millised rakenduse osad on sees | internal/core/parts |
| Lehe aadress | app/frontend/src/routes/ |
| Migratsioon | internal/core/database/migrations/ |
| Docker image | deploy/Dockerfile |
Reeglid
Link jaotisele ReeglidKontrollid kaustas app/backend/tools/structurecheck ebaõnnestuvad ehitamisel, kui mõni reegel on rikutud. Käivita need käsuga lehel Testimine.
- Kihtide järjekord. Moodul impordib ainult madalama kihi mooduleid ja ainult nende juurpaketti. Samal kihil olevad moodulid ei impordi üksteist kunagi.
- Ülespoole kutsumine. Kui madalam moodul vajab midagi kõrgemalt, annab kõrgem moodul talle lihtsad andmed alla või madalam moodul määrab väikese liidese, mille
wiring.gotäidab. - SQL jääb koju. SQL asub ainult mooduli enda
store*.gofailides ja ainult mooduli enda tabelite kohal. Teise mooduli ridade lugemiseks kutsu selle teenust. - Jagatud tabelid kuuluvad core’ile. Tabelitele
settings,schedules,secrets,jobsjaeventspääse core’i abifunktsioonide kaudu. - Üks väljapääs. Iga väljapoole suunatud päring käib läbi
core/outbound. - Edasi lükatud funktsioonid registreerivad lüliti moodulis
core/startup. Kui lüliti on väljas, siis marsruuti pole ja leht peidab funktsiooni. - Ei mingeid kõigepakette. Ei
util,common,sharedegahelpers.
Kihtide järjekord on lehel Moodulid.
Asjatundjale
Link jaotisele AsjatundjaleMooduli sees
Iga taustaosa moodul kasutab samu failinimesid.
| Fail | Sisaldab |
|---|---|
routes.go |
API marsruudid, igaühel vajalik õigus |
service.go ja teemafailid |
Loogika, mida teised moodulid kutsuvad |
store.go, store_<topic>.go |
Kogu SQL mooduli enda tabelite jaoks |
types.go |
Mooduli kirjed |
Veebi poolel hoiab lib/<module>/ faili index.ts (mida teised moodulid tohivad kasutada), oma Svelte osi ja nende teste, ning api.ts ja state.svelte.ts ainult siis, kui moodulil on oma päringud või olek.
Core paketid
Core on torustik. Selles pole tootereegleid ja see ei impordi ühtegi moodulit.
| Pakett | Sisaldab |
|---|---|
core/database |
Mõlema SQLite-faili avamine ja migreerimine, päringute abifunktsioonid, seadete ja sündmuste abifunktsioonid, jagatud ridade väljad, ajaloo kärpimine |
core/files |
Faili- ja kaustaabifunktsioonid, vaba kettaruum |
core/releasename |
Kvaliteet, grupp ja episoodinumbrid väljalaske nimest |
core/outbound |
Ainus viis välisserveritele helistada, koos aadressikontrollidega |
core/secrets |
Võtmehoidla ja võtmete vahetus |
core/logs |
Rakenduse logi ja kokkujooksmise märkmed |
core/jobs |
Tööülesannete järjekord, ajakavad ja tsüklid, mis pärast kokkujooksmist uuesti käivituvad |
core/webserver |
Router, URL base, tihendamine, reaalajas edastus |
core/startup |
Kasutaja, kelle all käivitatakse, vähese mälu režiim, edasi lükatud lülitid, mälupiir, osad |
core/parts |
Osade lülitid, mida iga moodul enne teenindamist või käivitamist küsib |
core/model |
Jagatud tüübid, näiteks tegutsejad ja subjektid |
Kui core peab mooduli andmetega tegelema, registreerib moodul failis wiring.go core’is konksu. Võtmete vahetus töötab nii.
Andmed
| Fail | Sisaldab |
|---|---|
holyarrs.db |
Meediakogu, soovid, seaded ja kõik muu tähtsa |
holyarrs-events.db |
Ajalugu ja muud sündmuste read. See kasvab ja seda kärbitakse, peafaili puutumata |
Migratsioonid on nummerdatud SQL-failid kaustades core/database/migrations/main ja core/database/migrations/events. Need jooksevad käivitamisel.
Seotud lehed
Link jaotisele Seotud lehedHolyArrs on tasuta. Kui see säästis sinu aega, anna talle GitHubis täht, toeta teda või osta mulle kohvi.