Moduulit
Asiantuntija
Valitse moduuli, johon muutoksesi kuuluu, ja tiedä, mitä moduuleja se saa kutsua.
Ennen kuin aloitat
Linkki otsikkoon Ennen kuin aloitat- Lue Arkkitehtuuri, niin tunnet kansiokartan ja säännöt.
- Jokaisella moduulilla on sama nimi kansiossa
app/backend/internal/<module>/, ja kansioissaapp/frontend/src/lib/<module>/jaapp/tests/<module>/, jos sillä on näkymiä tai selaintestejä.
Etsi oikea moduuli
Linkki otsikkoon Etsi oikea moduuli| Moduuli | Tehtävä |
|---|---|
requests |
Pyytäminen, hyväksynnät, pyyntösäännöt, ulkoiset listat, raportit |
movies |
Elokuvanimikkeet, painokset, kokoelmat, haku ja järjestely |
shows |
Sarjat, tuotantokaudet, jaksot, haku ja järjestely |
music |
Artistit, albumit, kappaleet, haku ja järjestely |
sources |
Lähteet, Jackett- ja Prowlarr-silta, julkaisuhaku |
downloads |
Latausohjelmat, jono, nähdyt tiedostot, polkujen yhdistäminen, tagit, kopion valinnat |
subtitles |
Tekstitysten kielet, sivustot, täsmäytys ja tallennus |
discover |
Explore, Popular, Search, People, Calendar, nimikesivut |
suggest |
Rivien ja hyllyjen valinta ja järjestys (vain backend) |
mediafiles |
Katalogitietueet, valintasäännöt, nimeäminen, datapaketit, mediatiedot |
importer |
Tiedostojen tuonti: purku, tagit, täsmäytys (vain backend) |
library |
Kirjastokansiot, hallintaan ottaminen ja uudelleennimeäminen (vain backend) |
metadata |
Ulkoisen datan asiakas, musiikkihaut, ikärajaportaat, trailerit |
mediaservers |
Plexin, Jellyfinin ja Embyn pyytäminen katsomaan uudelleen |
accounts |
Käyttäjät, kirjautuminen, single sign-on, tekoälysovelluksen kirjautuminen, lasten rajat, katseluvalinnat |
alerts |
Ilmoituskanavat ja milloin ne puhuvat |
migrate |
Datan tuonti aiemmista sovelluksista |
arrapi |
Sonarrin ja Radarrin tyylinen API |
ai |
Tekoälysovellusten yhteydet (myöhemmäksi jätetty) |
backups |
Varmuuskopioiden teko, säilytys ja palautus |
health |
Kuntotarkistukset, doctor, tukipaketti |
updates |
Päivitystarkistus ja allekirjoitettu päivityslista |
setup |
Ensimmäisen käynnistyksen ohjattu toiminto |
Kerrosjärjestys
Linkki otsikkoon KerrosjärjestysModuuli tuo vain alemman kerroksen. Mikään ei tuo discover-moduulia. Totuuden lähde on tools/structurecheck/allow.go.
| Kerros | Moduulit |
|---|---|
| 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 |
Jos moduulisi tarvitsee jotain ylemmältä kerrokselta, älä tuo sitä. Anna ylemmän moduulin välittää tavallista dataa alas tai määrittele alempaan pieni rajapinta, jonka wiring.go täyttää.
Lisää reitti tai moduuli
Linkki otsikkoon Lisää reitti tai moduuliUusi reitti
Linkki otsikkoon Uusi reittiRekisteröi se moduulin tiedostossa routes.go oikeuksineen. openapi.json syntyy reiteistä, ja testi kaatuu, jos ne eroavat. Julkaistut polut ja kenttien nimet pysyvät. Lisää kenttiä, älä nimeä niitä uudelleen. Kirjoita sitten sivu API-reitit uudelleen komennolla go run ./app/backend/tools/apidoc.
Uusi moduuli
Linkki otsikkoon Uusi moduuliYritä sovittaa muutoksesi ensin nykyisiin 23 moduuliin, ja avaa issue ennen kuin lisäät uuden. Uusi moduuli tarvitsee backend-kansion (sekä lib/<module>/ ja app/tests/<module>/, jos sillä on näkymiä), paikan kerrosjärjestyksessä kohdassa tools/structurecheck ja rivin tiedostoon wiring.go.
Jos se ei toimi
Linkki otsikkoon Jos se ei toimiOire. TestModuleEdges epäonnistuu.
Syy. Moduuli tuo toisen, joka on samalla tai ylemmällä kerroksella.
Ratkaisu. Välitä tavallista dataa alas ylemmältä moduulilta tai lisää pieni rajapinta, joka yhdistetään tiedostossa wiring.go.
Oire. TestSQLOnlyInStore tai TestTableOwnership epäonnistuu.
Syy. SQL on store*.go-tiedoston ulkopuolella tai koskee toisen moduulin taulua.
Ratkaisu. Siirrä kysely omistajan storeen ja kutsu omistajan palvelua ID:llä.
Asiantuntijoille
Linkki otsikkoon AsiantuntijoilleLisää sääntöjä
- Moduuli tuo toisesta moduulista vain juuripaketin.
- Store-funktiot ottavat parametrina
database.Querier-olion. Lue toisen moduulin rivit sen palvelun kautta ID:llä, ja välitä pitkät ID-listat yhtenä JSON-taulukkona käyttäenjson_each(?). settings,schedules,secrets,jobsjaeventskuuluvat coreen. Jokaisella asetusryhmällä on yksi omistajamoduuli. Jos haluat muuttaa toisen moduulin ryhmää, kutsu sen omistajaa.- Jokainen ulkoinen kutsu kulkee
core/outbound-paketin kautta. - Core-paketit ovat riveissä ylhäältä alas:
parts,webserverjastartup,logs,jobsjamodel,outboundjasecrets, sittendatabase,filesjareleasename. Core-paketti tuo vain oman rivinsä tai alemman. - Nimet: Go-tiedostot ovat pienillä kirjaimilla alaviivoin, Svelte-osat PascalCasella, ja TypeScript-, dokumentaatio-, testi- ja deploy-tiedostot kebab-casella. Python-tiedostoissa on alaviivat, jotta ne voi tuoda. Kansiot kansiossa
app/ovat pienillä kirjaimilla ja yksi sana. - Koodin voi nimetä uudelleen vapaasti, mutta kaikki tallennettu tai lähetetty pitää nimensä: taulut ja sarakkeet, asetusavaimet, JSON-kentät, tehtävien nimet ja kytkinten nimet.
- Kommenteissa ei ole roadmap-numeroita, päivämääriä, nimiä eikä pitkiä ajatusviivoja.
Tietueiden omistajat
| Omistaja | Tietueet |
|---|---|
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 ja jaetut rivikentät |
Tarkistukset
Tarkistukset ovat kansiossa app/backend/tools/structurecheck. Useimmat tarvitsevat -tags structure.
| Tarkistus | Valvoo |
|---|---|
TestTopLayout |
Repon ylätason kansiot |
TestModuleSet, TestCoreSet, TestPackageMap |
Sallitut kansiot kansioissa internal/ ja internal/core/ |
TestModuleEdges |
Kerrosjärjestys |
TestModuleImportsRootOnly |
Vain juuripaketin importit |
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable |
Coren importit, rivijärjestys ja nimet |
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist |
SQL:n sijainti ja taulujen omistajat |
TestGoFileNames, TestNoBannedPackageNames |
Tiedostojen ja pakettien nimet |
TestFileSizeCap, TestCorePackageSize |
Tiedoston ja core-paketin koko |
TestCommentHygiene |
Yllä olevat kommenttisäännöt |
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged |
Siirto ei muuta reittiä, migraatiota, HTTP-otsakkeen nimeä eikä JSON-avainta |
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs |
Vanhat sivuosoitteet pysyvät poissa koodista, testeistä ja dokumentaatiosta |
TestNoDependencyBotConfig |
Kansiossa .github ei ole riippuvuusbotin tiedostoa |
Aiheesta lisää
Linkki otsikkoon Aiheesta lisääHolyArrs on ilmainen. Jos se säästi aikaasi, anna sille tähti GitHubissa, tue sitä tai tarjoa minulle kahvit.