Arkkitehtuuri
Asiantuntija
Selvitä, missä koodi sijaitsee ja mitkä säännöt pätevät, ennen kuin muutat jotain isoa.
Lyhyesti
Linkki otsikkoon LyhyestiHolyArrs on yksi Go-ohjelma, johon verkkosovellus on sisäänrakennettu. Se tarjoaa verkkosovelluksen ja JSON-API:n portissa 6262 ja tallentaa tietonsa kahteen SQLite-tiedostoon asetuskansiossa. Se ottaa yhteyttä latausohjelmiin, lähteisiin (Jackettin tai Prowlarrin kautta), mediapalvelimiin, ilmoituskanaviin ja HolyArrsin metadatapalvelimeen.
Seuraa yhtä pyyntöä. Joku pyytää elokuvaa kohdassa Explore (selaa).
requestskirjaa pyynnön.- Hyväksynnän jälkeen
moviespyytääsources-moduulilta julkaisuja. mediafiles-moduulin valintasäännöt antavat niille pisteet.downloadslähettää parhaan latausohjelmalle.- Kun lataus valmistuu,
mediafilestuo tiedoston. mediaserversjaalertssaavat tiedon.
Koodikartta
Linkki otsikkoon Koodikarttaapp/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 on repon juuressa, koska go:embed ei yllä ylätason kansioon.
Mistä mikäkin löytyy
Linkki otsikkoon Mistä mikäkin löytyy| Haluat muuttaa | Katso |
|---|---|
| Miten julkaisu valitaan | internal/mediafiles |
| Latausohjelman asiakas | internal/downloads, sopimustestit tiedostossa internal/downloads/conformance_test.go |
| Ilmoituskanava | internal/alerts |
| Kirjautuminen, käyttäjät, API-avaimet | internal/accounts |
| Ensimmäisen käynnistyksen ohjattu toiminto | internal/setup, app/frontend/src/routes/welcome |
| Valmistuneen tiedoston tuonti (purku, tagit, täsmäytys) | internal/importer |
| Kirjastokansiot, hallintaan ottaminen ja uudelleennimeäminen | internal/library |
| Miten rivit ja hyllyt valitaan ja järjestetään | internal/suggest |
| Mitkä sovelluksen osat ovat käytössä | internal/core/parts |
| Sivun osoite | app/frontend/src/routes/ |
| Migraatio | internal/core/database/migrations/ |
| Docker-image | deploy/Dockerfile |
Säännöt
Linkki otsikkoon SäännötKansion app/backend/tools/structurecheck tarkistukset kaatavat buildin, jos jokin sääntö rikkoutuu. Suorita ne sivun Testaus komennolla.
- Kerrosjärjestys. Moduuli tuo vain alemman kerroksen moduuleja, ja vain niiden juuripaketin. Saman kerroksen moduulit eivät koskaan tuo toisiaan.
- Kutsu ylöspäin. Kun alempi moduuli tarvitsee jotain ylemmältä, ylempi välittää tavallista dataa alas tai alempi määrittelee pienen rajapinnan, jonka
wiring.gotäyttää. - SQL pysyy kotona. Vain moduulin omissa
store*.go-tiedostoissa on SQL:ää, ja vain moduulin omiin tauluihin. Jos haluat lukea toisen moduulin rivejä, kutsu sen palvelua. - Jaetut taulut kuuluvat coreen. Käytä
settings-,schedules-,secrets-,jobs- jaevents-tauluja core-apufunktioiden kautta. - Yksi tie ulos. Jokainen ulkoinen kutsu kulkee
core/outbound-paketin kautta. - Myöhemmäksi jätetyt ominaisuudet rekisteröivät kytkimen
core/startup-pakettiin. Kun kytkin on pois päältä, reittiä ei ole ja sivu piilottaa ominaisuuden. - Ei sekalaisia paketteja. Ei
util-,common-,shared- eikähelpers-pakettia.
Kerrosjärjestys on sivulla Moduulit.
Asiantuntijoille
Linkki otsikkoon AsiantuntijoilleModuulin sisällä
Jokaisessa backend-moduulissa on samat tiedostonimet.
| Tiedosto | Sisältö |
|---|---|
routes.go |
API-reitit, kullakin tarvittava oikeus |
service.go ja aihekohtaiset tiedostot |
Logiikka, jota muut moduulit kutsuvat |
store.go, store_<topic>.go |
Kaikki moduulin omien taulujen SQL |
types.go |
Moduulin tietueet |
Verkkopuolella lib/<module>/ sisältää tiedoston index.ts (mitä muut moduulit saavat käyttää), moduulin Svelte-osat testeineen sekä api.ts- ja state.svelte.ts-tiedostot vain, jos moduulilla on omia kutsuja tai tilaa.
Core-paketit
Core on putkistoa. Siinä ei ole tuotteen sääntöjä, eikä se tuo yhtään moduulia.
| Paketti | Sisältö |
|---|---|
core/database |
Molempien SQLite-tiedostojen avaus ja migraatiot, kyselyapufunktiot, asetusten ja tapahtumien apufunktiot, jaetut rivikentät, historian siistiminen |
core/files |
Tiedosto- ja kansioapufunktiot, levyn vapaa tila |
core/releasename |
Laatu, ryhmä ja jaksonumerot julkaisun nimestä |
core/outbound |
Ainoa tapa kutsua ulkoisia palvelimia, osoitetarkistuksineen |
core/secrets |
Avainvarasto ja avainten vaihto |
core/logs |
Sovelluksen loki ja kaatumismuistiinpanot |
core/jobs |
Tehtäväjono, aikataulut ja silmukat, jotka käynnistyvät uudelleen kaatumisen jälkeen |
core/webserver |
Reitittimen putkisto, URL base, pakkaus, live-push |
core/startup |
Ajokäyttäjä, vähämuistitila, myöhemmäksi jätettyjen ominaisuuksien kytkimet, muistiraja, osat |
core/parts |
Osien kytkimet, joilta jokainen moduuli kysyy ennen palvelemista tai ajoa |
core/model |
Jaetut tyypit, kuten toimijat ja kohteet |
Kun coren pitää koskea moduulin dataan, moduuli rekisteröi coreen koukun tiedostossa wiring.go. Avainten vaihto toimii näin.
Data
| Tiedosto | Sisältö |
|---|---|
holyarrs.db |
Kirjasto, pyynnöt, asetukset ja kaikki muu tärkeä |
holyarrs-events.db |
Historia ja muut tapahtumarivit. Se kasvaa, ja sitä siistitään koskematta päätiedostoon |
Migraatiot ovat numeroituja SQL-tiedostoja kansioissa core/database/migrations/main ja core/database/migrations/events. Ne suoritetaan käynnistyksessä.
Aiheesta lisää
Linkki otsikkoon Aiheesta lisääHolyArrs on ilmainen. Jos se säästi aikaasi, anna sille tähti GitHubissa, tue sitä tai tarjoa minulle kahvit.