Пређи на садржај

Модули

Напредни

Изабери модул коме твоја измена припада и знај које модуле сме да зове.

Пре него што почнеш

Линк до Пре него што почнеш
  • Прочитај Архитектура за мапу фолдера и правила.
  • Сваки модул има исто име у app/backend/internal/<module>/, а у app/frontend/src/lib/<module>/ и app/tests/<module>/ када има екране или тестове у претраживачу.

Нађи прави модул

Линк до Нађи прави модул
Модул Ради
requests Тражење, одобрења, правила захтева, спољне листе, пријаве
movies Филмске наслове, издања, сетове, претрагу и организовање
shows Серије, сезоне, епизоде, претрагу и организовање
music Извођаче, албуме, песме, претрагу и организовање
sources Изворе, Jackett и Prowlarr мост, претрагу релиза
downloads Преузимаче, ред, виђене фајлове, мапе путања, тагове, избор копија
subtitles Језике титлова, сајтове, упаривање и чување
discover Explore, Popular, Search, People, Calendar, странице наслова
suggest Бирање и распоређивање редова и полица (само backend)
mediafiles Записе каталога, правила избора, именовање, пакете података, детаље о медијима
importer Увоз фајлова: распакивање, тагови, упаривање (само backend)
library Фолдере библиотеке, усвајање и преименовање (само backend)
metadata Клијент за спољне податке, музичке упите, лествице оцена, трејлере
mediaservers Говори Plex-у, Jellyfin-у и Emby-ју да поново погледају
accounts Кориснике, пријаву, single sign-on, пријаву AI апликација, ограничења за децу, изборе гледања
alerts Канале за обавештења и када проговоре
migrate Пребацивање података из претходних апликација
arrapi API у стилу Sonarr-а и Radarr-а
ai Везе са AI апликацијама (задржано)
backups Прављење, чување и враћање бекапа
health Провере исправности, doctor, пакет за подршку
updates Проверу ажурирања и потписану листу ажурирања
setup Чаробњак за прво покретање

Редослед слојева

Линк до Редослед слојева

Модул увози само нижи слој. Нико не увози discover. Извор истине је tools/structurecheck/allow.go.

Слој Модули
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

Ако твом модулу треба нешто са вишег слоја, не увози то. Нека виши модул спусти обичне податке, или дефиниши мали интерфејс у нижем који попуњава wiring.go.

Додај руту или модул

Линк до Додај руту или модул

Региструј је у routes.go модула са њеном дозволом. openapi.json долази из рута, а тест пада када се разилазе. Већ објављене путање и имена поља остају. Поља додај, никада не преименуј. Затим поново напиши API руте помоћу go run ./app/backend/tools/apidoc.

Прво смести измену у постојећа 23, и отвори issue пре него што додаш нови. Нови модул треба свој backend фолдер (плус lib/<module>/ и app/tests/<module>/ ако има екране), место у редоследу слојева у tools/structurecheck и ред у wiring.go.

Симптом. TestModuleEdges пада. Узрок. Модул увози модул са истог или вишег слоја. Решење. Спусти обичне податке из вишег модула, или додај мали интерфејс који се попуњава у wiring.go.

Симптом. TestSQLOnlyInStore или TestTableOwnership пада. Узрок. SQL је ван store*.go фајла, или дира табелу другог модула. Решење. Премести упит у store власника и позови сервис власника преко ID-а.

Још правила
  • Модул увози само корени пакет другог модула.
  • Store функције примају database.Querier. Редове другог модула читај преко његовог сервиса по ID-у, а дугачке листе ID-ова прослеђуј као један JSON низ са json_each(?).
  • settings, schedules, secrets, jobs и events припадају core-у. Свака група подешавања има један модул власника. Да промениш групу другог модула, позови његовог власника.
  • Сваки позив ка споља иде кроз core/outbound.
  • Core пакети су у редовима, одозго надоле: parts, webserver и startup, logs, jobs и model, outbound и secrets, па database, files и releasename. Core пакет увози само свој ред или нижи.
  • Имена: Go фајлови су малим словима са доњим цртама, Svelte делови су PascalCase, а TypeScript, docs, тестови и deploy фајлови су kebab-case. Python фајлови користе доње црте да би могли да се увозе. Фолдери у app/ су малим словима, једна реч.
  • Код слободно преименуј, али све што се чува или шаље задржава своје име: табеле и колоне, кључеве подешавања, JSON поља, имена задатака и имена прекидача.
  • Коментари не носе бројеве из roadmap-а, датуме, имена ни дугачке цртице.
Власници записа
Власник Записи
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 и заједничка поља редова
Провере

Провере су у app/backend/tools/structurecheck. Већини треба -tags structure.

Провера Чува
TestTopLayout Главне фолдере репоа
TestModuleSet, TestCoreSet, TestPackageMap Фолдере дозвољене у internal/ и internal/core/
TestModuleEdges Редослед слојева
TestModuleImportsRootOnly Увоз само корених пакета
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable Core увозе, редослед редова и имена
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist Место SQL-а и власнике табела
TestGoFileNames, TestNoBannedPackageNames Имена фајлова и пакета
TestFileSizeCap, TestCorePackageSize Величину фајла и core пакета
TestCommentHygiene Горња правила за коментаре
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged Премештање не мења руту, миграцију, име HTTP заглавља ни JSON кључ
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs Старе адресе страница остају ван кода, тестова и docs-а
TestNoDependencyBotConfig Нема фајла за dependency бот у .github

Повезане странице

Линк до Повезане странице

HolyArrs је бесплатан. Ако ти је уштедео време, остави звездицу на GitHub-у, постани спонзор или купи ми кафу.