உள்ளடக்கத்திற்குச் செல்

Modules

நிபுணர்

உங்கள் மாற்றம் எந்த module-க்குச் சொந்தம் என்றும், அது எந்த modules-ஐ அழைக்கலாம் என்றும் அறிந்துகொள்ளவும்.

  • அடைவு வரைபடத்துக்கும் விதிகளுக்கும் கட்டமைப்பு பக்கத்தைப் படிக்கவும்.
  • ஒவ்வொரு module-க்கும் app/backend/internal/<module>/-இல் அதே பெயர் இருக்கும். திரைகளோ browser சோதனைகளோ இருந்தால், app/frontend/src/lib/<module>/, app/tests/<module>/ ஆகியவற்றிலும் அதே பெயர் இருக்கும்.

சரியான module-ஐக் கண்டுபிடிக்கவும்

சரியான module-ஐக் கண்டுபிடிக்கவும் இணைப்பு
Module செய்வது
requests கோருதல், அங்கீகாரங்கள், கோரிக்கை விதிகள், வெளிப்புறப் பட்டியல்கள், அறிக்கைகள்
movies திரைப்படத் தலைப்புகள், பதிப்புகள், தொகுப்புகள், தேடல், ஒழுங்குபடுத்துதல்
shows தொடர்கள், பருவங்கள், அத்தியாயங்கள், தேடல், ஒழுங்குபடுத்துதல்
music கலைஞர்கள், ஆல்பங்கள், பாடல்கள், தேடல், ஒழுங்குபடுத்துதல்
sources மூலங்கள், Jackett மற்றும் Prowlarr பாலம், வெளியீடு தேடல்
downloads பதிவிறக்கிகள், வரிசை, பார்த்த கோப்புகள், பாதை இணைப்புகள், tag-கள், நகல் தேர்வுகள்
subtitles வசன மொழிகள், தளங்கள், பொருத்துதல், சேமித்தல்
discover Explore, Popular, Search, People, Calendar, தலைப்புப் பக்கங்கள்
suggest வரிசைகளையும் அடுக்குகளையும் தேர்ந்தெடுத்து வரிசைப்படுத்துதல் (backend மட்டும்)
mediafiles பட்டியல் பதிவுகள், தேர்வு விதிகள், பெயரிடுதல், தரவுத் தொகுப்புகள், ஊடக விவரங்கள்
importer கோப்பு இறக்குமதி: பிரித்தல், tag-கள், பொருத்துதல் (backend மட்டும்)
library நூலக அடைவுகள், ஏற்றுக்கொள்ளுதல், பெயர் மாற்றுதல் (backend மட்டும்)
metadata வெளித் தரவு client, இசைத் தேடல்கள், மதிப்பீட்டு வரிசைகள், trailers
mediaservers Plex, Jellyfin, Emby ஆகியவற்றை மீண்டும் பார்க்கச் சொல்லுதல்
accounts பயனர்கள், உள்நுழைவு, single sign-on, AI பயன்பாட்டு உள்நுழைவு, குழந்தை வரம்புகள், பார்வைத் தேர்வுகள்
alerts அறிவிப்பு வழிகளும் அவை எப்போது பேசும் என்பதும்
migrate முந்தைய பயன்பாடுகளிலிருந்து தரவைக் கொண்டுவருதல்
arrapi Sonarr, Radarr பாணி API
ai AI பயன்பாட்டு இணைப்புகள் (நிறுத்திவைக்கப்பட்டது)
backups Backup எடுத்தல், வைத்திருத்தல், மீட்டமைத்தல்
health நலச் சோதனைகள், doctor, ஆதரவுத் தொகுப்பு
updates புதுப்பிப்புச் சோதனையும் கையொப்பமிட்ட புதுப்பிப்புப் பட்டியலும்
setup முதல் இயக்க wizard

ஒரு module தனக்குக் கீழ் அடுக்கை மட்டுமே import செய்யும். discover-ஐ எதுவும் import செய்வதில்லை. tools/structurecheck/allow.go தான் உண்மையின் மூலம்.

அடுக்கு Modules
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

உங்கள் module-க்கு மேல் அடுக்கிலிருந்து ஏதாவது தேவைப்பட்டால், அதை import செய்ய வேண்டாம். மேல் module எளிய தரவைக் கீழே அனுப்பட்டும், அல்லது கீழ் module-இல் ஒரு சிறிய interface-ஐ வரையறுக்கவும், அதை wiring.go நிரப்பும்.

Route அல்லது module சேர்த்தல்

Route அல்லது module சேர்த்தல் இணைப்பு

அதை module-இன் routes.go-இல் அதன் அனுமதியுடன் பதிவு செய்யவும். openapi.json routes-இலிருந்து உருவாகிறது, வேறுபாடு வந்தால் ஒரு சோதனை தோல்வியடையும். வெளியான பாதைகளும் புலப் பெயர்களும் அப்படியே இருக்கும். புலங்களைச் சேர்க்கலாம், பெயர் மாற்றக் கூடாது. பிறகு go run ./app/backend/tools/apidoc மூலம் API routes பக்கத்தை மீண்டும் எழுதவும்.

முதலில் உங்கள் மாற்றத்தை இருக்கும் 23-க்குள் பொருத்திப் பார்க்கவும், புதியதைச் சேர்க்கும் முன் ஒரு issue திறக்கவும். புதிய module-க்கு அதன் backend அடைவு (திரைகள் இருந்தால் lib/<module>/, app/tests/<module>/ உடன்), tools/structurecheck-இல் அடுக்கு வரிசையில் ஓர் இடம், wiring.go-இல் ஒரு வரி ஆகியவை தேவை.

இது வேலை செய்யவில்லை என்றால்

இது வேலை செய்யவில்லை என்றால் இணைப்பு

அறிகுறி. TestModuleEdges தோல்வியடைகிறது. காரணம். ஒரு module, தன் அடுக்கிலோ மேல் அடுக்கிலோ உள்ள ஒன்றை import செய்கிறது. தீர்வு. மேல் module-இடமிருந்து எளிய தரவைக் கீழே அனுப்பவும், அல்லது wiring.go-இல் இணைக்கப்படும் சிறிய interface-ஐச் சேர்க்கவும்.

அறிகுறி. TestSQLOnlyInStore அல்லது TestTableOwnership தோல்வியடைகிறது. காரணம். SQL ஒரு store*.go கோப்புக்கு வெளியே உள்ளது, அல்லது வேறு module-இன் அட்டவணையைத் தொடுகிறது. தீர்வு. Query-ஐ உரிமையாளரின் store-க்கு நகர்த்தி, உரிமையாளரின் service-ஐ ID மூலம் அழைக்கவும்.

மேலும் விதிகள்
  • ஒரு module மற்றொரு module-இன் root package-ஐ மட்டுமே import செய்யும்.
  • Store செயல்பாடுகள் database.Querier-ஐ எடுக்கும். மற்ற module-இன் வரிசைகளை அதன் service வழியாக ID மூலம் படிக்கவும், நீண்ட ID பட்டியல்களை json_each(?) உடன் ஒரே JSON array ஆக அனுப்பவும்.
  • settings, schedules, secrets, jobs, events ஆகியவை core-க்கு உரியவை. ஒவ்வொரு அமைப்புக் குழுவுக்கும் ஒரு உரிமையாளர் module உண்டு. மற்றொரு module-இன் குழுவை மாற்ற, அதன் உரிமையாளரை அழைக்கவும்.
  • ஒவ்வொரு வெளி அழைப்பும் core/outbound வழியாகச் செல்கிறது.
  • Core package-கள் மேலிருந்து கீழாக வரிசைகளில் அமைந்துள்ளன: parts, webserver மற்றும் startup, logs, jobs மற்றும் model, outbound மற்றும் secrets, பிறகு database, files, releasename. ஒரு core package தன் வரிசையையோ அதற்குக் கீழுள்ளதையோ மட்டுமே import செய்யும்.
  • பெயர்கள்: Go கோப்புகள் சிறிய எழுத்தில் underscore உடன், Svelte பகுதிகள் PascalCase, TypeScript, docs, சோதனைகள், deploy கோப்புகள் kebab-case. Python கோப்புகள் import செய்யப்பட underscore பயன்படுத்தும். app/-இல் உள்ள அடைவுகள் சிறிய எழுத்தில், ஒரே சொல்.
  • Code-இன் பெயர்களை மாற்றலாம், ஆனால் சேமிக்கப்படும் அல்லது அனுப்பப்படும் எதுவும் தன் பெயரை வைத்திருக்கும்: அட்டவணைகள், நெடுவரிசைகள், அமைப்பு விசைகள், JSON புலங்கள், பணிப் பெயர்கள், சுவிட்சுப் பெயர்கள்.
  • கருத்துகளில் roadmap எண்கள், தேதிகள், பெயர்கள், em dash எதுவும் இல்லை.
பதிவு உரிமையாளர்கள்
உரிமையாளர் பதிவுகள்
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 repo-வின் மேல் அடைவுகள்
TestModuleSet, TestCoreSet, TestPackageMap internal/, internal/core/-இல் அனுமதிக்கப்பட்ட அடைவுகள்
TestModuleEdges அடுக்கு வரிசை
TestModuleImportsRootOnly root package import மட்டும்
TestCoreImportsNoModule, TestCoreRowOrder, TestCoreNamesNoModuleTable Core imports, வரிசை ஒழுங்கு, பெயர்கள்
TestSQLOnlyInStore, TestTableOwnership, TestSQLAllowlistShrinks, TestSeedSQLAllowlist SQL இடம், அட்டவணை உரிமையாளர்கள்
TestGoFileNames, TestNoBannedPackageNames கோப்பு, package பெயர்கள்
TestFileSizeCap, TestCorePackageSize கோப்பு மற்றும் core package அளவு
TestCommentHygiene மேலே உள்ள கருத்து விதிகள்
TestRouteTableUnchanged, TestMigrationsUnchanged, TestHeaderAndJSONLiteralsUnchanged ஒரு நகர்த்தல் எந்த route, migration, HTTP header பெயர், JSON விசையையும் மாற்றாது
TestNoOldPageAddresses, TestNoOldPagesInTestsOrDocs பழைய பக்க முகவரிகள் code, சோதனைகள், docs-இல் மீண்டும் வராது
TestNoDependencyBotConfig .github-இல் dependency bot கோப்பு இல்லை

HolyArrs இலவசம். இது உங்கள் நேரத்தைச் சேமித்திருந்தால், GitHub-இல் நட்சத்திரம் இடுங்கள், ஆதரவளியுங்கள் அல்லது எனக்கு ஒரு காபி வாங்கித் தாருங்கள்.