Siirry sisältöön

Moduulit

Asiantuntija

Valitse moduuli, johon muutoksesi kuuluu, ja tiedä, mitä moduuleja se saa kutsua.

  • Lue Arkkitehtuuri, niin tunnet kansiokartan ja säännöt.
  • Jokaisella moduulilla on sama nimi kansiossa app/backend/internal/<module>/, ja kansioissa app/frontend/src/lib/<module>/ ja app/tests/<module>/, jos sillä on näkymiä tai selaintestejä.
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

Moduuli 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ää.

Rekisterö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.

Yritä 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.

Oire. 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ä.

Lisää 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äen json_each(?).
  • settings, schedules, secrets, jobs ja events kuuluvat 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, webserver ja startup, logs, jobs ja model, outbound ja secrets, sitten database, files ja releasename. 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

HolyArrs on ilmainen. Jos se säästi aikaasi, anna sille tähti GitHubissa, tue sitä tai tarjoa minulle kahvit.