உள்ளடக்கத்திற்குச் செல்

கட்டமைப்பு

நிபுணர்

பெரிய மாற்றம் செய்யும் முன், code எங்கே இருக்கிறது, எந்த விதிகள் பொருந்தும் என்று அறிந்துகொள்ளவும்.

HolyArrs என்பது web app உள்ளே இணைக்கப்பட்ட ஒரே Go நிரல். இது web app-ஐயும் JSON API-ஐயும் port 6262-இல் வழங்குகிறது, தன் தரவைக் கட்டமைவு அடைவில் உள்ள 2 SQLite கோப்புகளில் வைக்கிறது. இது பதிவிறக்கிகள், மூலங்கள் (Jackett அல்லது Prowlarr வழியாக), media server-கள், அறிவிப்பு வழிகள், HolyArrs metadata server ஆகியவற்றை அழைக்கிறது.

ஒரு கோரிக்கையைப் பின்தொடரவும். ஒருவர் Explore பக்கத்தில் ஒரு திரைப்படத்தைக் கோருகிறார்.

  1. requests அந்தக் கோரிக்கையைப் பதிவு செய்கிறது.
  2. அங்கீகாரத்துக்குப் பிறகு, movies வெளியீடுகளுக்காக sources-ஐக் கேட்கிறது.
  3. mediafiles-இல் உள்ள தேர்வு விதிகள் அவற்றுக்குப் புள்ளி போடுகின்றன.
  4. downloads சிறந்ததைப் பதிவிறக்கிக்கு அனுப்புகிறது.
  5. அது முடிந்ததும், mediafiles கோப்பை இறக்குமதி செய்கிறது.
  6. mediaservers-க்கும் alerts-க்கும் தெரிவிக்கப்படுகிறது.
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:embed மேல் அடைவை அணுக முடியாததால், go.mod repo-வின் மூலத்தில் உள்ளது.

எதை எங்கே காணலாம்

எதை எங்கே காணலாம் இணைப்பு
நீங்கள் மாற்ற விரும்புவது பார்க்க வேண்டிய இடம்
ஒரு வெளியீடு எப்படித் தேர்ந்தெடுக்கப்படுகிறது internal/mediafiles
ஒரு பதிவிறக்கி client internal/downloads, contract சோதனைகள் internal/downloads/conformance_test.go-இல்
ஒரு அறிவிப்பு வழி internal/alerts
உள்நுழைவு, பயனர்கள், API விசைகள் internal/accounts
முதல் இயக்க wizard internal/setup, app/frontend/src/routes/welcome
முடிந்த கோப்பை இறக்குமதி செய்தல் (பிரித்தல், tag-கள், பொருத்துதல்) internal/importer
நூலக அடைவுகள், ஏற்றுக்கொள்ளுதல், பெயர் மாற்றுதல் internal/library
வரிசைகளும் அடுக்குகளும் எப்படித் தேர்ந்தெடுக்கப்பட்டு வரிசைப்படுத்தப்படுகின்றன internal/suggest
பயன்பாட்டின் எந்தப் பகுதிகள் இயக்கத்தில் உள்ளன internal/core/parts
ஒரு பக்க முகவரி app/frontend/src/routes/
ஒரு migration internal/core/database/migrations/
Docker image deploy/Dockerfile

app/backend/tools/structurecheck-இல் உள்ள சோதனைகள், ஒரு விதி மீறப்பட்டால் build-ஐத் தோல்வியடையச் செய்கின்றன. சோதனை பக்கத்தில் உள்ள வரியால் அவற்றை இயக்கவும்.

  • அடுக்கு வரிசை. ஒரு module தனக்குக் கீழ் அடுக்கில் உள்ள modules-ஐ மட்டுமே import செய்யும், அவற்றின் root package-ஐ மட்டும். ஒரே அடுக்கில் உள்ள modules ஒன்றையொன்று import செய்யாது.
  • மேலே அழைத்தல். கீழ் module-க்கு மேல் module-இடமிருந்து ஏதாவது தேவைப்பட்டால், மேல் module எளிய தரவைக் கீழே அனுப்பும், அல்லது கீழ் module ஒரு சிறிய interface-ஐ வரையறுக்கும், அதை wiring.go நிரப்பும்.
  • SQL தன் இடத்திலேயே. ஒரு module-இன் சொந்த store*.go கோப்புகள் மட்டுமே SQL-ஐக் கொண்டிருக்கும், அதுவும் தன் சொந்த அட்டவணைகளின் மேல் மட்டும். வேறு module-இன் வரிசைகளைப் படிக்க, அதன் service-ஐ அழைக்கவும்.
  • பகிரப்பட்ட அட்டவணைகள் core-க்கு உரியவை. settings, schedules, secrets, jobs, events ஆகியவற்றை core உதவிகள் வழியாக அணுகவும்.
  • வெளியே செல்ல ஒரே வழி. ஒவ்வொரு வெளி அழைப்பும் core/outbound வழியாகச் செல்கிறது.
  • நிறுத்திவைக்கப்பட்ட வசதிகள் core/startup-இல் ஒரு சுவிட்சைப் பதிவு செய்கின்றன. அது அணைந்திருக்கும் வரை, route இருக்காது, பக்கமும் அந்த வசதியை மறைக்கும்.
  • எல்லாம் கலந்த package-கள் கூடாது. util, common, shared, helpers என்று எதுவும் இல்லை.

அடுக்கு வரிசை Modules பக்கத்தில் உள்ளது.

ஒரு module-இன் உள்ளே

ஒவ்வொரு backend module-உம் ஒரே கோப்புப் பெயர்களைப் பயன்படுத்துகிறது.

கோப்பு கொண்டிருப்பது
routes.go API routes, ஒவ்வொன்றும் தனக்குத் தேவையான அனுமதியுடன்
service.go மற்றும் topic கோப்புகள் மற்ற modules அழைக்கும் logic
store.go, store_<topic>.go module-இன் சொந்த அட்டவணைகளுக்கான எல்லா SQL-உம்
types.go module-இன் பதிவுகள்

Web பக்கத்தில், lib/<module>/ என்பது index.ts (மற்ற modules பயன்படுத்தக்கூடியவை), அதன் Svelte பகுதிகள், அவற்றின் சோதனைகளைக் கொண்டிருக்கும். api.ts, state.svelte.ts ஆகியவை அதற்குச் சொந்த அழைப்புகளோ state-ஓ இருந்தால் மட்டும் இருக்கும்.

Core package-கள்

Core என்பது அடிப்படை இணைப்புகள். அதில் தயாரிப்பு விதிகள் எதுவும் இல்லை, எந்த module-ஐயும் import செய்வதில்லை.

Package கொண்டிருப்பது
core/database இரண்டு SQLite கோப்புகளையும் திறத்தல், migrate செய்தல், query உதவிகள், settings மற்றும் events உதவிகள், பகிரப்பட்ட வரிசைப் புலங்கள், வரலாற்றைக் குறைத்தல்
core/files கோப்பு மற்றும் அடைவு உதவிகள், வட்டில் காலி இடம்
core/releasename வெளியீட்டுப் பெயரிலிருந்து தரம், குழு, அத்தியாய எண்கள்
core/outbound வெளி server-களை அழைக்க ஒரே வழி, முகவரிச் சோதனைகளுடன்
core/secrets விசைக் கிடங்கும் விசை சுழற்சியும்
core/logs பயன்பாட்டு log-உம் crash குறிப்புகளும்
core/jobs பணி வரிசை, அட்டவணைகள், crash-க்குப் பிறகு மீண்டும் தொடங்கும் loop-கள்
core/webserver Router இணைப்புகள், URL base, சுருக்கம், நேரடி push
core/startup இயக்கும் பயனர், குறைந்த நினைவக முறை, நிறுத்திவைக்கப்பட்ட சுவிட்சுகள், நினைவக வரம்பு, பகுதிகள்
core/parts ஒவ்வொரு module-உம் சேவை செய்யும் முன் அல்லது இயங்கும் முன் கேட்கும் பகுதி சுவிட்சுகள்
core/model actors, subjects போன்ற பகிரப்பட்ட வகைகள்

Core module தரவைத் தொட வேண்டியிருந்தால், module wiring.go-இல் core-இடம் ஒரு hook-ஐப் பதிவு செய்யும். விசை சுழற்சி இப்படித்தான் வேலை செய்கிறது.

தரவு
கோப்பு கொண்டிருப்பது
holyarrs.db நூலகம், கோரிக்கைகள், அமைப்புகள், முக்கியமான மற்ற எல்லாமும்
holyarrs-events.db வரலாறும் மற்ற நிகழ்வு வரிசைகளும். இது வளரும், முதன்மைக் கோப்பைத் தொடாமலே குறைக்கப்படும்

Migrations என்பவை core/database/migrations/main, core/database/migrations/events ஆகியவற்றில் உள்ள எண்ணிடப்பட்ட SQL கோப்புகள். அவை தொடக்கத்தில் இயங்கும்.

HolyArrs இலவசம். இது உங்கள் நேரத்தைச் சேமித்திருந்தால், GitHub-இல் நட்சத்திரம் இடுங்கள், ஆதரவளியுங்கள் அல்லது எனக்கு ஒரு காபி வாங்கித் தாருங்கள்.