Edasi sisu juurde

Moodulid

Asjatundja

Vali moodul, kuhu su muudatus kuulub, ja tea, milliseid mooduleid see tohib kutsuda.

  • Loe kaardi ja reeglite jaoks lehte Arhitektuur.
  • Igal moodulil on sama nimi kaustas app/backend/internal/<module>/, ning kaustades app/frontend/src/lib/<module>/ ja app/tests/<module>/, kui sellel on ekraanid või brauseritestid.
Moodul Teeb
requests Soovimine, kinnitused, soovide reeglid, välised loendid, aruanded
movies Filmide pealkirjad, väljaanded, komplektid, otsing ja korrastamine
shows Sarjad, hooajad, episoodid, otsing ja korrastamine
music Esitajad, albumid, lood, otsing ja korrastamine
sources Allikad, Jacketti ja Prowlarri sild, väljalaskeotsing
downloads Allalaadijad, järjekord, nähtud failid, failiteede vastendused, sildid, koopiavalikud
subtitles Subtiitrite keeled, saidid, sobitamine ja salvestamine
discover Explore, Popular, Search, People, Calendar, pealkirjalehed
suggest Ridade ja riiulite valimine ja järjestamine (ainult taustaosa)
mediafiles Kataloogikirjed, valikureeglid, nimetamine, andmepaketid, meedia üksikasjad
importer Faili import: lahtipakkimine, sildid, sobitamine (ainult taustaosa)
library Meediakogu kaustad, üle võtmine ja ümbernimetamine (ainult taustaosa)
metadata Välise andmeallika klient, muusikaotsingud, vanusepiirangu astmed, treilerid
mediaservers Plexile, Jellyfinile ja Embyle ütlemine, et nad vaataksid uuesti
accounts Kasutajad, sisselogimine, single sign-on, tehisintellekti rakenduse sisselogimine, laste piirangud, vaatamisvalikud
alerts Teavituskanalid ja millal need sõna võtavad
migrate Andmete toomine vanematest rakendustest
arrapi Sonarri ja Radarri stiilis API
ai Tehisintellekti rakenduste ühendused (edasi lükatud)
backups Varukoopiate tegemine, hoidmine ja taastamine
health Tervisekontrollid, doktor, tugipakett
updates Uuenduste kontroll ja allkirjastatud uuenduste loend
setup Esimese käivituse viisard

Moodul impordib ainult madalamat kihti. Keegi ei impordi moodulit discover. Tõeallikas on tools/structurecheck/allow.go.

Kiht Moodulid
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

Kui sinu moodul vajab midagi kõrgemalt kihilt, ära seda impordi. Lase kõrgemal moodulil lihtsad andmed alla anda või määra madalamas moodulis väike liides, mille wiring.go täidab.

Registreeri see mooduli failis routes.go koos selle õigusega. openapi.json tuleb marsruutidest ja test ebaõnnestub, kui need lahku lähevad. Välja antud teed ja väljade nimed jäävad samaks. Lisa välju, ära kunagi nimeta ümber. Seejärel kirjuta API marsruudid uuesti käsuga go run ./app/backend/tools/apidoc.

Mahuta oma muudatus esmalt nende 23 sisse ja ava issue enne uue lisamist. Uus moodul vajab oma taustaosa kausta (ning lib/<module>/ ja app/tests/<module>/, kui sellel on ekraanid), kohta kihtide järjekorras failis tools/structurecheck ja rida failis wiring.go.

Sümptom. TestModuleEdges ebaõnnestub. Põhjus. Moodul impordib sama või kõrgema kihi moodulit. Lahendus. Anna kõrgemast moodulist lihtsad andmed alla või lisa väike liides, mis ühendatakse failis wiring.go.

Sümptom. TestSQLOnlyInStore või TestTableOwnership ebaõnnestub. Põhjus. SQL asub väljaspool store*.go faili või puudutab teise mooduli tabelit. Lahendus. Tõsta päring omaniku store’i ja kutsu omaniku teenust ID järgi.

Veel reegleid
  • Moodul impordib teise mooduli ainult juurpaketti.
  • Store’i funktsioonid võtavad database.Querier. Loe teise mooduli ridu selle teenuse kaudu ID järgi ja anna pikad ID loendid ühe JSON-massiivina käsuga json_each(?).
  • settings, schedules, secrets, jobs ja events kuuluvad core’ile. Igal seadete grupil on üks omanikumoodul. Teise mooduli grupi muutmiseks kutsu selle omanikku.
  • Iga väljapoole suunatud päring käib läbi core/outbound.
  • Core paketid on ridades ülalt alla: parts, webserver ja startup, logs, jobs ja model, outbound ja secrets, seejärel database, files ja releasename. Core pakett impordib ainult oma rida või madalamat.
  • Nimed: Go failid on väikeste tähtedega alakriipsudega, Svelte osad on PascalCase, ning TypeScript, dokumendid, testid ja deploy failid on kebab-case. Python failid kasutavad alakriipse, et neid saaks importida. Kaustad kaustas app/ on väikeste tähtedega, üks sõna.
  • Nimeta koodi julgelt ümber, aga kõik salvestatu või saadetu hoiab oma nime: tabelid ja veerud, seadete võtmed, JSON väljad, tööülesannete nimed ja lülitite nimed.
  • Kommentaarides ei ole teekaardi numbreid, kuupäevi, nimesid ega mõttekriipse.
Kirjete omanikud
Omanik Kirjed
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 jagatud ridade väljad
Kontrollid

Kontrollid asuvad kaustas app/backend/tools/structurecheck. Enamik vajab -tags structure.

Kontroll Hoiab
TestTopLayout Repo ülemised kaustad
TestModuleSet, TestCoreSet, TestPackageMap Kaustad, mis on lubatud kaustades internal/ ja internal/core/
TestModuleEdges Kihtide järjekord
TestModuleImportsRootOnly Ainult juurpaketi impordid
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable Core impordid, ridade järjekord ja nimed
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist SQL asukoht ja tabelite omanikud
TestGoFileNames, TestNoBannedPackageNames Faili- ja paketinimed
TestFileSizeCap, TestCorePackageSize Faili ja core paketi suurus
TestCommentHygiene Ülaltoodud kommentaarireeglid
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged Tõstmine ei muuda ühtegi marsruuti, migratsiooni, HTTP päise nime ega JSON võtit
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs Vanad lehe aadressid jäävad koodist, testidest ja dokumentidest välja
TestNoDependencyBotConfig Kaustas .github pole sõltuvusbotti faili

HolyArrs on tasuta. Kui see säästis sinu aega, anna talle GitHubis täht, toeta teda või osta mulle kohvi.