கட்டமைப்பு
நிபுணர்
பெரிய மாற்றம் செய்யும் முன், code எங்கே இருக்கிறது, எந்த விதிகள் பொருந்தும் என்று அறிந்துகொள்ளவும்.
சுருக்கமாக
சுருக்கமாக இணைப்புHolyArrs என்பது web app உள்ளே இணைக்கப்பட்ட ஒரே Go நிரல். இது web app-ஐயும் JSON API-ஐயும் port 6262-இல் வழங்குகிறது, தன் தரவைக் கட்டமைவு அடைவில் உள்ள 2 SQLite கோப்புகளில் வைக்கிறது. இது பதிவிறக்கிகள், மூலங்கள் (Jackett அல்லது Prowlarr வழியாக), media server-கள், அறிவிப்பு வழிகள், HolyArrs metadata server ஆகியவற்றை அழைக்கிறது.
ஒரு கோரிக்கையைப் பின்தொடரவும். ஒருவர் Explore பக்கத்தில் ஒரு திரைப்படத்தைக் கோருகிறார்.
requestsஅந்தக் கோரிக்கையைப் பதிவு செய்கிறது.- அங்கீகாரத்துக்குப் பிறகு,
moviesவெளியீடுகளுக்காகsources-ஐக் கேட்கிறது. mediafiles-இல் உள்ள தேர்வு விதிகள் அவற்றுக்குப் புள்ளி போடுகின்றன.downloadsசிறந்ததைப் பதிவிறக்கிக்கு அனுப்புகிறது.- அது முடிந்ததும்,
mediafilesகோப்பை இறக்குமதி செய்கிறது. mediaservers-க்கும்alerts-க்கும் தெரிவிக்கப்படுகிறது.
Code வரைபடம்
Code வரைபடம் இணைப்புapp/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: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-இல் நட்சத்திரம் இடுங்கள், ஆதரவளியுங்கள் அல்லது எனக்கு ஒரு காபி வாங்கித் தாருங்கள்.