Modulok
Haladó
Válaszd ki a modult, amelyikbe a változtatásod tartozik, és tudd, mely modulokat hívhatja.
Mielőtt elkezdenéd
Hivatkozás ide: Mielőtt elkezdenéd- Olvasd el az Architektúra oldalt a mappatérképért és a szabályokért.
- Minden modul ugyanazzal a névvel szerepel az
app/backend/internal/<module>/mappában, és azapp/frontend/src/lib/<module>/ésapp/tests/<module>/mappában is, ha vannak képernyői vagy böngészős tesztjei.
Találd meg a megfelelő modult
Hivatkozás ide: Találd meg a megfelelő modult| Modul | Feladata |
|---|---|
requests |
Kérés, jóváhagyás, kérési szabályok, külső listák, jelentések |
movies |
Filmcímek, kiadások, gyűjtemények, keresés és rendezés |
shows |
Sorozatok, évadok, epizódok, keresés és rendezés |
music |
Előadók, albumok, számok, keresés és rendezés |
sources |
Források, a Jackett és Prowlarr híd, Release-keresés |
downloads |
Letöltők, a sor, látott fájlok, útvonal-leképezések, tagek, másolatválasztás |
subtitles |
Feliratnyelvek, oldalak, párosítás és mentés |
discover |
Felfedezés, Népszerű, Keresés, Személyek, Naptár, címoldalak |
suggest |
Sorok és polcok kiválasztása és rendezése (csak backend) |
mediafiles |
Katalógusrekordok, választási szabályok, elnevezés, adatcsomagok, médiaadatok |
importer |
Fájlimportálás: kicsomagolás, tagek, párosítás (csak backend) |
library |
Médiatár-mappák, átvétel és átnevezés (csak backend) |
metadata |
A külső adatok kliense, zenei keresések, korhatár-skálák, trailerek |
mediaservers |
A Plex, a Jellyfin és az Emby értesítése, hogy nézzenek újra |
accounts |
Felhasználók, bejelentkezés, Single Sign-on, AI app bejelentkezés, gyerekkorlátok, nézési beállítások |
alerts |
Értesítési csatornák és hogy mikor szólalnak meg |
migrate |
Adatok átvétele a korábbi appokból |
arrapi |
A Sonarr- és Radarr-stílusú API |
ai |
AI app kapcsolatok (későbbre halasztva) |
backups |
Backupok készítése, megőrzése és visszaállítása |
health |
Állapotellenőrzések, a doctor, a támogatási csomag |
updates |
A frissítésellenőrzés és az aláírt frissítési lista |
setup |
Az első indítás varázslója |
Rétegsorrend
Hivatkozás ide: RétegsorrendEgy modul csak alacsonyabb réteget importál. A discover-t semmi nem importálja. A tools/structurecheck/allow.go az irányadó forrás.
| Réteg | Modulok |
|---|---|
| 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 |
Ha a modulodnak valami kell egy magasabb rétegből, ne importáld. Add át a magasabb modullal a sima adatot lefelé, vagy definiálj az alsóban egy kis interfészt, amit a wiring.go tölt ki.
Route vagy modul hozzáadása
Hivatkozás ide: Route vagy modul hozzáadásaÚj route
Hivatkozás ide: Új routeRegisztráld a modul routes.go fájljában a jogosultságával együtt. Az openapi.json a route-okból készül, és egy teszt elbukik, ha eltérés van. A kiadott útvonalak és mezőnevek maradnak. Mezőt hozzáadni szabad, átnevezni nem. Ezután írd újra az API route-ok oldalt a go run ./app/backend/tools/apidoc paranccsal.
Új modul
Hivatkozás ide: Új modulElőször próbáld beilleszteni a változtatást a meglévő 23 közé, és nyiss egy issue-t, mielőtt újat adsz hozzá. Egy új modulhoz kell a backend mappája (meg a lib/<module>/ és az app/tests/<module>/, ha vannak képernyői), egy hely a rétegsorrendben a tools/structurecheck-ben, és egy sor a wiring.go-ban.
Ha nem működik
Hivatkozás ide: Ha nem működikTünet. A TestModuleEdges elbukik.
Ok. Egy modul olyat importál, amelyik azonos vagy magasabb rétegben van.
Megoldás. Add át a sima adatot lefelé a magasabb modulból, vagy adj hozzá egy kis interfészt, amit a wiring.go köt be.
Tünet. A TestSQLOnlyInStore vagy a TestTableOwnership elbukik.
Ok. SQL van egy store*.go fájlon kívül, vagy másik modul táblájához nyúl.
Megoldás. Told a lekérdezést a tulajdonos store-jába, és hívd a tulajdonos service-ét azonosító alapján.
Haladóknak
Hivatkozás ide: HaladóknakTovábbi szabályok
- Egy modul csak egy másik modul gyökércsomagját importálja.
- A store függvények egy
database.Querier-t kapnak. Más modul sorait a service-én át olvasd azonosító alapján, a hosszú azonosítólistákat pedig egyetlen JSON tömbként add át ajson_each(?)segítségével. - A
settings,schedules,secrets,jobséseventsa core-hoz tartozik. Minden beállításcsoportnak egyetlen tulajdonos modulja van. Más modul csoportjának módosításához a tulajdonosát hívd. - Minden külső hívás a
core/outbound-on megy át. - A core csomagok sorokban állnak, fentről lefelé:
parts,webserverésstartup,logs,jobsésmodel,outboundéssecrets, végüldatabase,filesésreleasename. Egy core csomag csak a saját sorát vagy alacsonyabbat importál. - Nevek: a Go fájlok kisbetűsek, aláhúzással, a Svelte részek PascalCase-ek, a TypeScript, a docs, a tesztek és a deploy fájlok kebab-case-ek. A Python fájlok aláhúzást használnak, hogy importálhatók legyenek. Az
app/mappái kisbetűsek, egy szavasak. - A kódot szabadon átnevezheted, de ami tárolva van vagy ki van küldve, az megtartja a nevét: táblák és oszlopok, beállításkulcsok, JSON mezők, feladatnevek és kapcsolónevek.
- A kommentekben nincs roadmap-szám, dátum, név vagy gondolatjel.
Rekordtulajdonosok
| Tulajdonos | Rekordok |
|---|---|
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 és a közös sormezők |
Az ellenőrzések
Az ellenőrzések az app/backend/tools/structurecheck mappában vannak. A legtöbbhöz -tags structure kell.
| Ellenőrzés | Mit tart |
|---|---|
TestTopLayout |
A repo felső szintű mappái |
TestModuleSet, TestCoreSet, TestPackageMap |
Az internal/ és internal/core/ alatt engedett mappák |
TestModuleEdges |
Rétegsorrend |
TestModuleImportsRootOnly |
Csak gyökércsomag-importok |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Core importok, sorrend és nevek |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
Az SQL helye és a táblák tulajdonosai |
TestGoFileNames, TestNoBannedPackageNames |
Fájl- és csomagnevek |
TestFileSizeCap, TestCorePackageSize |
Fájl- és core csomagméret |
TestCommentHygiene |
A fenti komment-szabályok |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
Az áthelyezés nem változtat route-ot, migrációt, HTTP-fejlécnevet vagy JSON-kulcsot |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
A régi oldalcímek nem kerülnek vissza a kódba, a tesztekbe és a docsba |
TestNoDependencyBotConfig |
Nincs függőségi bot fájl a .github-ban |
Kapcsolódó oldalak
Hivatkozás ide: Kapcsolódó oldalakA HolyArrs ingyenes. Ha időt spórolt neked, adj neki egy csillagot a GitHubon, támogasd vagy hívj meg egy kávéra.