Seni bina
Pakar
Ketahui di mana kod berada dan peraturan mana yang terpakai sebelum anda mengubah sesuatu yang besar.
Ringkasnya
Pautan ke RingkasnyaHolyArrs ialah satu program Go dengan app web terbina dalam. Ia menyediakan app web dan API JSON pada port 6262, dan menyimpan datanya dalam 2 fail SQLite di folder konfigurasi. Ia memanggil pemuat turun, Sumber (melalui Jackett atau Prowlarr), pelayan media, saluran amaran dan pelayan metadata HolyArrs.
Ikuti satu permintaan. Seseorang meminta sebuah filem di Teroka.
requestsmerekodkan permintaan itu.- Selepas diluluskan,
moviesmeminta keluaran daripadasources. - Peraturan pilihan dalam
mediafilesmemberi markah kepada keluaran itu. downloadsmenghantar yang terbaik kepada pemuat turun.- Apabila siap,
mediafilesmengimport failnya. mediaserversdanalertsdiberitahu.
Peta kod
Pautan ke Peta kodapp/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 berada di akar repo kerana go:embed tidak boleh mencapai folder induk.
Di mana mencari sesuatu
Pautan ke Di mana mencari sesuatu| Anda mahu mengubah | Lihat di |
|---|---|
| Cara sesuatu keluaran dipilih | internal/mediafiles |
| Penyambung ke pemuat turun | internal/downloads, ujian kontrak dalam internal/downloads/conformance_test.go |
| Saluran amaran | internal/alerts |
| Log masuk, pengguna, kunci API | internal/accounts |
| Wizard larian pertama | internal/setup, app/frontend/src/routes/welcome |
| Mengimport fail yang sudah siap (nyahpek, teg, padanan) | internal/importer |
| Folder Pustaka, mengambil alih dan menamakan semula | internal/library |
| Cara baris dan rak dipilih dan disusun | internal/suggest |
| Bahagian app yang hidup | internal/core/parts |
| Alamat halaman | app/frontend/src/routes/ |
| Satu migrasi | internal/core/database/migrations/ |
| Imej Docker | deploy/Dockerfile |
Peraturan
Pautan ke PeraturanSemakan dalam app/backend/tools/structurecheck menggagalkan binaan apabila ada peraturan yang dilanggar. Jalankannya dengan baris dalam Pengujian.
- Susunan lapisan. Sesuatu modul hanya mengimport modul pada lapisan yang lebih rendah, dan hanya pakej akarnya. Modul pada lapisan yang sama tidak pernah mengimport satu sama lain.
- Memanggil ke atas. Apabila modul yang lebih rendah memerlukan sesuatu daripada yang lebih tinggi, modul yang lebih tinggi menghantar data biasa ke bawah, atau modul yang lebih rendah mentakrifkan antara muka kecil yang diisi oleh
wiring.go. - SQL kekal di rumah. Hanya fail
store*.gomilik modul itu sendiri yang memuatkan SQL, dan hanya untuk jadualnya sendiri. Untuk membaca baris modul lain, panggil servisnya. - Jadual kongsi milik core. Capai
settings,schedules,secrets,jobsdaneventsmelalui pembantu core. - Satu jalan keluar. Setiap panggilan ke luar melalui
core/outbound. - Ciri ditahan mendaftarkan suis dengan
core/startup. Selagi suis dimatikan, laluannya tiada dan halaman menyembunyikan ciri itu. - Tiada pakej serba ada. Tiada
util,common,sharedatauhelpers.
Susunan lapisan ada dalam Modul.
Untuk pakar
Pautan ke Untuk pakarDi dalam sebuah modul
Setiap modul bahagian belakang menggunakan nama fail yang sama.
| Fail | Memuatkan |
|---|---|
routes.go |
Laluan API, setiap satu dengan kebenaran yang diperlukan |
service.go dan fail topik |
Logik yang dipanggil modul lain |
store.go, store_<topic>.go |
Semua SQL untuk jadual milik modul itu |
types.go |
Rekod modul itu |
Di bahagian web, lib/<module>/ memuatkan index.ts (apa yang boleh digunakan modul lain), bahagian Sveltenya dan ujiannya, serta api.ts dan state.svelte.ts hanya apabila ia mempunyai panggilan atau keadaan sendiri.
Pakej core
Core ialah kod asas yang dikongsi. Ia tidak memuatkan peraturan produk dan tidak mengimport mana-mana modul.
| Pakej | Memuatkan |
|---|---|
core/database |
Membuka dan memigrasi kedua-dua fail SQLite, pembantu pertanyaan, pembantu tetapan dan peristiwa, medan baris kongsi, pemangkasan sejarah |
core/files |
Pembantu fail dan folder, ruang cakera kosong |
core/releasename |
Kualiti, kumpulan dan nombor episod daripada nama keluaran |
core/outbound |
Satu-satunya cara memanggil pelayan luar, dengan semakan alamat |
core/secrets |
Stor kunci dan pusingan kunci |
core/logs |
Log app dan nota ranap |
core/jobs |
Giliran tugas, jadual dan gelung yang bermula semula selepas ranap |
core/webserver |
Asas penghala, URL base, mampatan, tolakan langsung |
core/startup |
Pengguna larian, mod memori rendah, suis ciri ditahan, had memori, bahagian |
core/parts |
Suis bahagian yang disemak setiap modul sebelum menyediakan atau berjalan |
core/model |
Jenis kongsi seperti pelaku dan subjek |
Apabila core perlu menyentuh data modul, modul itu mendaftarkan cangkuk dengan core dalam wiring.go. Pusingan kunci berfungsi dengan cara ini.
Data
| Fail | Memuatkan |
|---|---|
holyarrs.db |
Pustaka, permintaan, tetapan dan semua yang penting |
holyarrs-events.db |
Sejarah dan baris peristiwa lain. Ia membesar dan dipangkas tanpa menyentuh fail utama |
Migrasi ialah fail SQL bernombor dalam core/database/migrations/main dan core/database/migrations/events. Ia berjalan semasa permulaan.
Berkaitan
Pautan ke BerkaitanHolyArrs percuma. Jika ia menjimatkan masa anda, beri bintang di GitHub, taja projek ini atau belanja saya kopi.