ما تغطيه طبقة البيانات
طبقة البيانات في تطبيق Twenty هي البيانات التي يضيفها تطبيقك إلى مساحة العمل — أنواع السجلات الجديدة التي يصرّح عنها، والأعمدة التي يضيفها إلى الكائنات الموجودة، وكيف ترتبط هذه السجلات ببعضها البعض.في هذا القسم
الكائنات
defineObject - اعلن عن أنواع السجلات الجديدة مع حقول تخصهم.توسيع الكائنات
defineField - إضافة حقول إلى الكائنات القياسية أو التطبيقات الأخرى.العلاقات
الاتصالات الثنائية الاتجاه MANY_TO_ONE / ONE_TO_MANY بين الأشياء.النشاط من النوع
حدد أحداث المراجعة التلقائية وأحداث التطبيق الصريحة لجداول زمنية للتسجيل.قواعد التحقق
defineValidationRule — أعلن الشروط التي يجب أن يستوفيها السجل قبل أن يمكن حفظه.الكيانات بنظرة سريعة
تكتشف واجهة سطر الأوامر هذه العناصر عبر تحليل AST أثناء وقت البناء، لذا فإن تنظيم الملفات يعود إليك — القاعدة المتّبعة هي
src/objects/ و src/validation-rules/ و src/fields/ و src/indexes/ و src/timeline-activity-types/ و src/related-record-paths/. معرّفات UUID ثابتة من نوع universalIdentifier تربط كل شيء معًا عبر عمليات النشر.
الفهارس (اختياري)
يمكن للتطبيقات إرفاق الفهارس مع الكائنات الخاصة بها للحفاظ على سرعة الاستعلامات المتكررة. أكثر الحالات شيوعًا هي عمود حالة أو مفتاح أجنبي تقوم بقراءته بشكل متكرر.src/indexes/post-card-status.index.ts
الفهارس الفريدة
تقبلdefineIndex الخيار isUnique: true لكلٍّ من التفرد على عمود واحد أو على عدّة أعمدة. هذه هي البنية الموصى بها — إن defineField({ isUnique: true }) مهملة وسيتم إزالتها في إصدار قادم.
قيود أخرى
- تظل عبارات
WHEREالجزئية تحت تحكم المشرف — لا يمكن للتطبيقات التصريح بها. - يتم تقييد كل كائن بعدد 10 فهارس مخصصة (لا تُحتسب فهارس الإطار نفسه).
fields بالطريقة التي ينبغي على Postgres استخدامها — العمود في أقصى اليسار أولًا، مثل دليل الهاتف. الفهارس ليست مجانية: كل عملية كتابة في الجدول تقوم بتحديثها. أضِف واحدًا فقط عندما يكون لديك استعلام يحتاج إليه.
مسارات السجلات المرتبطة (اختياري)
يبدأ مسار سجل مرتبط على كائن ويتبع ما يصل إلى ثلاثة حقول علاقة، يكون كل منها على الكائن الذي وصل إليه الحقل السابق. تستخدم أذونات السجلات هذه المسارات لتوسيع الوصول من سجل إلى سجلاته المرتبطة.- يُطبَّق المسار المتأصل (
isInherent: true) كلما كان السجل الابتدائي قابلاً للقراءة، مهما كانت طريقة منح ذلك الوصول. استخدمه للسجلات التي تنتمي إلى أصلها، مثل مرفقات بطاقة منشور. - يُطبَّق المسار العادي فقط عندما يأتي الوصول إلى السجل الابتدائي مباشرةً من دور، بحيث تختار مساحات العمل المسارات التي تعتمد عليها.
src/related-record-paths/post-card-attachments.related-record-path.ts
secondFieldMetadataUniversalIdentifier وthirdFieldMetadataUniversalIdentifier للمسارات الأطول. يجب أن تكون كل قفزة علاقة نشطة على الكائن الذي تم الوصول إليه حتى الآن، ولا يمكن لمسار أن يزور الكائن نفسه مرتين، ولا يمكن لمسارين استخدام القفزات نفسها.