Langkau ke kandungan

Modul

Pakar

Pilih modul tempat perubahan anda berada, dan ketahui modul mana yang boleh dipanggilnya.

  • Baca Seni bina untuk peta folder dan peraturan.
  • Setiap modul mempunyai nama yang sama dalam app/backend/internal/<module>/, dan dalam app/frontend/src/lib/<module>/ serta app/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

Sesuatu 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 modul

Daftarkannya 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.

Muatkan 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 berfungsi

Gejala. 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.

Lebih 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 dengan json_each(?).
  • settings, schedules, secrets, jobs dan events milik 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, webserver dan startup, logs, jobs dan model, outbound dan secrets, kemudian database, files dan releasename. 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

HolyArrs percuma. Jika ia menjimatkan masa anda, beri bintang di GitHub, taja projek ini atau belanja saya kopi.