Modul
Pakar
Pilih modul tempat perubahan anda berada, dan ketahui modul mana yang boleh dipanggilnya.
Sebelum bermula
Pautan ke Sebelum bermula- Baca Seni bina untuk peta folder dan peraturan.
- Setiap modul mempunyai nama yang sama dalam
app/backend/internal/<module>/, dan dalamapp/frontend/src/lib/<module>/sertaapp/tests/<module>/apabila ia mempunyai skrin atau ujian pelayar.
Cari modul yang betul
Pautan ke Cari modul yang betul| Modul | Fungsi |
|---|---|
requests |
Meminta, kelulusan, peraturan permintaan, senarai luar, laporan |
movies |
Judul filem, edisi, set, carian dan penyusunan |
shows |
Siri, musim, episod, carian dan penyusunan |
music |
Artis, album, lagu, carian dan penyusunan |
sources |
Sumber, jambatan Jackett dan Prowlarr, carian keluaran |
downloads |
Pemuat turun, giliran, fail yang pernah dilihat, peta laluan, teg, pilihan salinan |
subtitles |
Bahasa sari kata, laman, padanan dan penyimpanan |
discover |
Teroka, Popular, Cari, Orang, Kalendar, halaman judul |
suggest |
Memilih dan menyusun baris serta rak (bahagian belakang sahaja) |
mediafiles |
Rekod katalog, peraturan pilihan, penamaan, pakej data, butiran media |
importer |
Import fail: nyahpek, teg, padanan (bahagian belakang sahaja) |
library |
Folder Pustaka, mengambil alih dan menamakan semula (bahagian belakang sahaja) |
metadata |
Penyambung data luar, carian muzik, tangga penarafan, treler |
mediaservers |
Menyuruh Plex, Jellyfin dan Emby memeriksa semula |
accounts |
Pengguna, log masuk, log masuk tunggal, log masuk app AI, had kanak-kanak, pilihan tontonan |
alerts |
Saluran amaran dan bila ia bersuara |
migrate |
Membawa data masuk dari app lama |
arrapi |
API gaya Sonarr dan Radarr |
ai |
Sambungan app AI (ditahan) |
backups |
Membuat, menyimpan dan memulihkan sandaran |
health |
Semakan kesihatan, doctor, pakej sokongan |
updates |
Semakan kemas kini dan senarai kemas kini bertandatangan |
setup |
Wizard larian pertama |
Susunan lapisan
Pautan ke Susunan lapisanSesuatu modul hanya mengimport lapisan yang lebih rendah. Tiada yang mengimport discover. tools/structurecheck/allow.go ialah sumber kebenaran.
| Lapisan | Modul |
|---|---|
| 0 | core |
| 1 | metadata, suggest |
| 2 | accounts |
| 3 | mediafiles |
| 4 | importer |
| 5 | library |
| 6 | sources |
| 7 | downloads |
| 8 | subtitles, mediaservers, alerts |
| 9 | movies, shows |
| 10 | requests, health |
| 11 | music, arrapi, migrate, ai, backups, updates, setup |
| 13 | discover |
Jika modul anda memerlukan sesuatu daripada lapisan yang lebih tinggi, jangan importnya. Suruh modul yang lebih tinggi menghantar data biasa ke bawah, atau takrifkan antara muka kecil dalam modul yang lebih rendah yang diisi oleh wiring.go.
Tambah laluan atau modul
Pautan ke Tambah laluan atau modulLaluan baharu
Pautan ke Laluan baharuDaftarkannya dalam routes.go milik modul dengan kebenarannya. openapi.json datang daripada laluan, dan ujian gagal jika ada percanggahan. Laluan dan nama medan yang sudah dikeluarkan kekal. Tambah medan, jangan namakan semula. Kemudian tulis semula Laluan API dengan go run ./app/backend/tools/apidoc.
Modul baharu
Pautan ke Modul baharuMuatkan perubahan anda dalam 23 modul yang ada dahulu, dan buka isu sebelum menambah satu. Modul baharu memerlukan folder bahagian belakangnya (serta lib/<module>/ dan app/tests/<module>/ jika ia mempunyai skrin), tempat dalam susunan lapisan di tools/structurecheck, dan satu baris dalam wiring.go.
Jika tidak berfungsi
Pautan ke Jika tidak berfungsiGejala. TestModuleEdges gagal.
Punca. Satu modul mengimport modul pada lapisan yang sama atau lebih tinggi.
Penyelesaian. Hantar data biasa ke bawah dari modul yang lebih tinggi, atau tambah antara muka kecil yang disambungkan dalam wiring.go.
Gejala. TestSQLOnlyInStore atau TestTableOwnership gagal.
Punca. SQL berada di luar fail store*.go, atau menyentuh jadual modul lain.
Penyelesaian. Alihkan pertanyaan ke stor pemilik dan panggil servis pemilik mengikut ID.
Untuk pakar
Pautan ke Untuk pakarLebih banyak peraturan
- Sesuatu modul hanya mengimport pakej akar modul lain.
- Fungsi stor menerima
database.Querier. Baca baris modul lain melalui servisnya mengikut ID, dan hantar senarai ID yang panjang sebagai satu tatasusunan JSON denganjson_each(?). settings,schedules,secrets,jobsdaneventsmilik core. Setiap kumpulan tetapan mempunyai satu modul pemilik. Untuk mengubah kumpulan modul lain, panggil pemiliknya.- Setiap panggilan ke luar melalui
core/outbound. - Pakej core berada dalam baris, dari atas ke bawah:
parts,webserverdanstartup,logs,jobsdanmodel,outbounddansecrets, kemudiandatabase,filesdanreleasename. Pakej core hanya mengimport barisnya sendiri atau yang lebih rendah. - Nama: fail Go huruf kecil dengan garis bawah, bahagian Svelte PascalCase, dan fail TypeScript, dokumentasi, ujian dan deploy menggunakan kebab-case. Fail Python menggunakan garis bawah supaya boleh diimport. Folder dalam
app/huruf kecil, satu perkataan. - Namakan semula kod dengan bebas, tetapi apa-apa yang disimpan atau dihantar mengekalkan namanya: jadual dan lajur, kunci tetapan, medan JSON, nama tugas dan nama suis.
- Komen tidak membawa nombor pelan hala tuju, tarikh, nama atau sengkang em.
Pemilik rekod
| Pemilik | Rekod |
|---|---|
mediafiles |
Title, Item, Version, Slot, Part, File, LibraryFolder, Quality, PickRules |
downloads |
Download, Downloader, SeenFile, PathMap |
sources |
Source, Release |
requests |
Ask, Report |
accounts |
User |
core/jobs |
Job, Schedule, JobError |
core/database |
Event dan medan baris kongsi |
Semakan
Semakan berada dalam app/backend/tools/structurecheck. Kebanyakannya memerlukan -tags structure.
| Semakan | Memastikan |
|---|---|
TestTopLayout |
Folder teratas repo |
TestModuleSet, TestCoreSet, TestPackageMap |
Folder yang dibenarkan dalam internal/ dan internal/core/ |
TestModuleEdges |
Susunan lapisan |
TestModuleImportsRootOnly |
Import pakej akar sahaja |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Import core, susunan baris dan nama |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Tempat SQL dan pemilik jadual |
TestGoFileNames, TestNoBannedPackageNames |
Nama fail dan pakej |
TestFileSizeCap, TestCorePackageSize |
Saiz fail dan pakej core |
TestCommentHygiene |
Peraturan komen di atas |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
Satu perpindahan tidak mengubah laluan, migrasi, nama pengepala HTTP atau kunci JSON |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Alamat halaman lama kekal hilang daripada kod, ujian dan dokumentasi |
TestNoDependencyBotConfig |
Tiada fail bot kebergantungan dalam .github |
Berkaitan
Pautan ke BerkaitanHolyArrs percuma. Jika ia menjimatkan masa anda, beri bintang di GitHub, taja projek ini atau belanja saya kopi.