मॉड्यूल
एक्सपर्ट
वह मॉड्यूल चुनें जिसमें आपका बदलाव आता है, और जानें कि वह किन मॉड्यूल को कॉल कर सकता है।
शुरू करने से पहले
शुरू करने से पहले का लिंक- फ़ोल्डर के नक्शे और नियमों के लिए आर्किटेक्चर पढ़ें।
- हर मॉड्यूल का नाम
app/backend/internal/<module>/में वही होता है, और जब उसके स्क्रीन या ब्राउज़र टेस्ट हों तोapp/frontend/src/lib/<module>/औरapp/tests/<module>/में भी।
सही मॉड्यूल खोजें
सही मॉड्यूल खोजें का लिंक| मॉड्यूल | क्या करता है |
|---|---|
requests |
माँगना, मंज़ूरी, रिक्वेस्ट के नियम, बाहरी सूचियाँ, रिपोर्ट |
movies |
फ़िल्म के टाइटल, एडिशन, सेट, खोज और व्यवस्थित करना |
shows |
शो, सीज़न, एपिसोड, खोज और व्यवस्थित करना |
music |
कलाकार, एल्बम, ट्रैक, खोज और व्यवस्थित करना |
sources |
सोर्स, Jackett और Prowlarr का ब्रिज, रिलीज़ की खोज |
downloads |
डाउनलोडर, कतार, देखी जा चुकी फ़ाइलें, पाथ मैप, टैग, कॉपी के विकल्प |
subtitles |
सबटाइटल की भाषाएं, साइट, मिलान और सेव करना |
discover |
एक्सप्लोर, Popular, खोज, People, कैलेंडर, टाइटल के पेज |
suggest |
लाइनें और शेल्फ़ चुनना और क्रम में लगाना (सिर्फ़ बैकएंड) |
mediafiles |
कैटलॉग के रिकॉर्ड, चुनाव के नियम, नाम देना, डेटा पैक, मीडिया की जानकारी |
importer |
फ़ाइल इंपोर्ट: अनपैक करना, टैग, मिलान (सिर्फ़ बैकएंड) |
library |
लाइब्रेरी फ़ोल्डर, अपनाना और नाम बदलना (सिर्फ़ बैकएंड) |
metadata |
बाहरी डेटा का क्लाइंट, संगीत की लुकअप, रेटिंग की सीढ़ियाँ, ट्रेलर |
mediaservers |
Plex, Jellyfin और Emby को दोबारा देखने के लिए कहना |
accounts |
यूज़र, साइन-इन, सिंगल साइन-ऑन, AI ऐप साइन-इन, बच्चों की सीमाएं, देखने के विकल्प |
alerts |
अलर्ट चैनल और वे कब बोलते हैं |
migrate |
पुराने ऐप से डेटा लाना |
arrapi |
Sonarr और Radarr जैसा API |
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 रूट से बनती है, और फ़र्क आने पर एक टेस्ट फ़ेल होता है। जारी हो चुके पाथ और फ़ील्ड के नाम वैसे ही रहते हैं। फ़ील्ड जोड़ें, उनका नाम कभी न बदलें। फिर go run ./app/backend/tools/apidoc से API रूट दोबारा लिखें।
नया मॉड्यूल
नया मॉड्यूल का लिंकपहले अपने बदलाव को इन 23 में बैठाने की कोशिश करें, और नया जोड़ने से पहले एक इशू खोलें। नए मॉड्यूल को अपना बैकएंड फ़ोल्डर चाहिए (और स्क्रीन हों तो lib/<module>/ और app/tests/<module>/ भी), tools/structurecheck में लेयर के क्रम में एक जगह, और wiring.go में एक लाइन।
अगर काम न करे
अगर काम न करे का लिंकलक्षण। TestModuleEdges फ़ेल होता है।
वजह। कोई मॉड्यूल उसी या ऊपर की लेयर का मॉड्यूल इंपोर्ट कर रहा है।
हल। ऊपर वाले मॉड्यूल से सादा डेटा नीचे भेजें, या एक छोटा इंटरफ़ेस जोड़ें जो wiring.go में जुड़ता है।
लक्षण। TestSQLOnlyInStore या TestTableOwnership फ़ेल होता है।
वजह। SQL किसी store*.go फ़ाइल के बाहर है, या किसी और मॉड्यूल की टेबल को छू रहा है।
हल। क्वेरी को टेबल के मालिक मॉड्यूल के स्टोर में ले जाएं और उस मॉड्यूल की सर्विस को ID से कॉल करें।
एक्सपर्ट के लिए
एक्सपर्ट के लिए का लिंकऔर नियम
- एक मॉड्यूल दूसरे मॉड्यूल का सिर्फ़ रूट पैकेज इंपोर्ट करता है।
- स्टोर के फ़ंक्शन एक
database.Querierलेते हैं। किसी और मॉड्यूल की लाइनें उसकी सर्विस से ID के ज़रिए पढ़ें, और ID की लंबी सूचीjson_each(?)के साथ एक JSON array के रूप में भेजें। settings,schedules,secrets,jobsऔरeventscore के हैं। सेटिंग के हर ग्रुप का एक मालिक मॉड्यूल होता है। किसी और मॉड्यूल का ग्रुप बदलना हो, तो उसके मालिक को कॉल करें।- बाहर की हर कॉल
core/outboundसे होकर जाती है। - core के पैकेज कतारों में रखे हैं, ऊपर से नीचे:
parts,webserverऔरstartup,logs,jobsऔरmodel,outboundऔरsecrets, फिरdatabase,filesऔरreleasename। core का एक पैकेज सिर्फ़ अपनी कतार या उससे नीचे की कतार को इंपोर्ट करता है। - नाम: Go फ़ाइलें छोटे अक्षरों में अंडरस्कोर के साथ, Svelte हिस्से PascalCase में, और TypeScript, डॉक्स, टेस्ट और deploy की फ़ाइलें kebab-case में होती हैं। Python फ़ाइलों में अंडरस्कोर होते हैं ताकि उन्हें इंपोर्ट किया जा सके।
app/के फ़ोल्डर छोटे अक्षरों में, एक शब्द के होते हैं। - कोड का नाम खुलकर बदलें, पर जो कुछ स्टोर होता या भेजा जाता है उसका नाम वही रहता है: टेबल और कॉलम, सेटिंग की कुंजी, JSON फ़ील्ड, जॉब के नाम और स्विच के नाम।
- कमेंट में रोडमैप नंबर, तारीख़, नाम या 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 |
रेपो के सबसे ऊपर के फ़ोल्डर |
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 |
पुराने पेज एड्रेस कोड, टेस्ट और डॉक्स से बाहर ही रहते हैं |
TestNoDependencyBotConfig |
.github में डिपेंडेंसी बॉट की कोई फ़ाइल नहीं |
इससे जुड़े पेज
इससे जुड़े पेज का लिंकHolyArrs मुफ़्त है। अगर इससे आपका समय बचा, तो GitHub पर स्टार दें, स्पॉन्सर करें या मुझे एक कॉफ़ी पिलाएं।