Fara í efni

Arkitektúr

Sérfræðingur

Finndu hvar kóðinn er og hvaða reglur gilda áður en þú breytir einhverju stóru.

HolyArrs er eitt Go-forrit með vefforritið innbyggt. Það þjónar vefforritinu og JSON API á porti 6262 og geymir gögnin í 2 SQLite-skrám í stillingamöppunni. Það hefur samband við niðurhalsforrit, uppsprettur (í gegnum Jackett eða Prowlarr), margmiðlunarþjóna, tilkynningarleiðir og metadata-server HolyArrs.

Fylgdu einni beiðni. Einhver biður um kvikmynd á Explore.

  1. requests skráir beiðnina.
  2. Eftir samþykki biður movies sources um útgáfur.
  3. Valreglurnar í mediafiles gefa þeim stig.
  4. downloads sendir þá bestu til niðurhalsforritsins.
  5. Þegar niðurhalinu lýkur flytur mediafiles skrána inn.
  6. mediaservers og alerts fá að vita það.
app/backend/cmd/holyarrs/ main.go starts the program; wiring.go builds the modules and joins them
app/backend/internal/<module>/ one flat folder per module
app/backend/internal/core/ plumbing every module may use
app/backend/tools/ dev-only programs
app/frontend/ the SvelteKit web app; embed.go bundles its build
app/frontend/src/routes/<page>/ thin pages that combine module parts
app/frontend/src/lib/<module>/ each module's web code
app/frontend/src/lib/ui/ parts used by 2 or more modules, and nothing else
app/frontend/src/lib/core/ server client, app state, helpers
app/tests/ end-to-end tests (Playwright)
deploy/ the Dockerfile and release scripts
docs/ guides and these pages

go.mod er í rót repo vegna þess að go:embed nær ekki í yfirmöppu.

Þú vilt breyta Skoðaðu
Hvernig útgáfa er valin internal/mediafiles
Niðurhalsforriti (client) internal/downloads, samningapróf í internal/downloads/conformance_test.go
Tilkynningarleið internal/alerts
Innskráningu, notendum, API-lyklum internal/accounts
Töframanni fyrstu ræsingar internal/setup, app/frontend/src/routes/welcome
Innflutningi á fullgerðri skrá (afpökkun, merki, pörun) internal/importer
Safnmöppum, yfirtöku og endurnefningu internal/library
Hvernig raðir og hillur eru valdar og raðað internal/suggest
Hvaða hlutar forritsins eru í gangi internal/core/parts
Vistfangi síðu app/frontend/src/routes/
Migration internal/core/database/migrations/
Docker image deploy/Dockerfile

Athuganir í app/backend/tools/structurecheck láta smíðina falla ef reglu er brotin. Keyrðu þær með línunni í Prófanir.

  • Lagaröð. Eining flytur aðeins inn einingar á neðra lagi, og aðeins rótarpakka þeirra. Einingar á sama lagi flytja aldrei inn hver aðra.
  • Köll upp á við. Þegar neðri eining þarf eitthvað frá efri einingu sendir sú efri hrein gögn niður, eða sú neðri skilgreinir lítið viðmót sem wiring.go fyllir út í.
  • SQL helst heima. Aðeins store*.go skrár einingarinnar innihalda SQL, og aðeins yfir hennar eigin töflur. Til að lesa raðir annarrar einingar kallarðu í þjónustu hennar.
  • Sameiginlegar töflur tilheyra core. Nálgastu settings, schedules, secrets, jobs og events í gegnum hjálparföll core.
  • Ein leið út. Hvert utanaðkomandi kall fer í gegnum core/outbound.
  • Frestaðir eiginleikar skrá rofa hjá core/startup. Á meðan slökkt er á honum er leiðin ekki til og síðan felur eiginleikann.
  • Engir safnpakkar. Enginn util, common, shared eða helpers.

Lagaröðin er í Einingar.

Inni í einingu

Hver bakendaeining notar sömu skráarnöfn.

Skrá Inniheldur
routes.go API-leiðir, hver með heimildinni sem hún þarf
service.go og efnisskrár Rökfræði sem aðrar einingar kalla í
store.go, store_<topic>.go Allt SQL fyrir eigin töflur einingarinnar
types.go Færslur einingarinnar

Vefmegin geymir lib/<module>/ skrána index.ts (það sem aðrar einingar mega nota), Svelte-hlutana og próf þeirra, auk api.ts og state.svelte.ts aðeins þegar einingin hefur eigin köll eða eigið ástand.

Core-pakkar

Core er lagnir. Það inniheldur engar vörureglur og flytur enga einingu inn.

Pakki Inniheldur
core/database Opnun og migration beggja SQLite-skránna, fyrirspurnahjálp, hjálp fyrir stillingar og atburði, sameiginleg raðasvið, snyrtingu sögu
core/files Hjálp fyrir skrár og möppur, laust diskpláss
core/releasename Gæði, hóp og þáttanúmer úr nafni útgáfu
core/outbound Eina leiðin til að hafa samband út fyrir forritið, með vistfangaathugunum
core/secrets Lyklageymslan og skipti á lyklum
core/logs Log forritsins og hrunskýrslur
core/jobs Verkefnaröðin, tímaáætlanir og lykkjurnar sem endurræsast eftir hrun
core/webserver Leiðarlagnir, URL-grunnur, þjöppun, bein ýting
core/startup Notandi sem forritið keyrir sem, lágminnishamur, frestaðir rofar, minnistakmörk, hlutar
core/parts Hlutarofarnir sem hver eining spyr um áður en hún þjónar eða keyrir
core/model Sameiginlegar gerðir eins og leikendur og viðföng

Þegar core þarf að snerta gögn einingar skráir einingin krók hjá core í wiring.go. Skipti á lyklum virka svona.

Gögn
Skrá Inniheldur
holyarrs.db Safnið, beiðnir, stillingar og allt annað sem skiptir máli
holyarrs-events.db Sögu og aðrar atburðaraðir. Hún stækkar og er snyrt án þess að aðalskráin sé snert

Migrations eru númeruð SQL-skjöl í core/database/migrations/main og core/database/migrations/events. Þau keyra við ræsingu.

HolyArrs er ókeypis. Ef það sparaði þér tíma geturðu gefið því stjörnu á GitHub, styrkt það eða boðið mér í kaffi.