إدارة المستودعات (Repositories) في كوكب Kawkab
المستودعات (Repositories) هي مكون أساسي في إطار العمل كوكب Kawkab تُستخدم لفصل منطق الوصول إلى البيانات عن الخدمات (Services) وبقية التطبيق. يتيح لك هذا الأسلوب تنظيم العمليات المرتبطة بقاعدة البيانات وجعل الكود أكثر نظافة وقابلية لإعادة الاستخدام.
أمر إنشاء مستودع
لإنشاء مستودع جديد، استخدم الأمر التالي:
npm run kawkab repository:make <name> [module]
المعلمات:
<name>
: اسم المستودع المراد إنشاؤه (مثل:user
).[module]
(اختياري): اسم الوحدة التي ينتمي إليها المستودع. إذا لم يتم تحديد وحدة، سيتم وضعه في الوحدة الافتراضيةmain
.
مثال:
npm run kawkab repository:make user
الهيكل الأساسي لملف المستودع
عند إنشاء مستودع جديد، سيتم إنشاء ملف يحتوي على الهيكل التالي مثل:
import { BaseRepository, Inject, inherit } from "kawkab";
import { User } from "../models/user";
export class UserRepository extends inherit(BaseRepository, Inject) {
findById(id: number) {
return User.query().find(id);
}
}
شرح الكود:
- BaseRepository: الفئة الأساسية التي تحتوي على الوظائف الافتراضية للعمل مع قواعد البيانات.
- Inject: تُستخدم لإدارة الاعتماديات (Dependency Injection).
- inherit: تُستخدم لدمج الوظائف من الفئات الأساسية.
findById
: مثال على طريقة مخصصة للعثور على مستخدم بناءً على المعرف (ID).
استخدام المستودع داخل خدمة
بعد إنشاء المستودع، يمكن استيراده واستخدامه داخل الخدمات (Services). إليك مثالًا على ذلك:
import { BaseService, Inject, inherit } from "kawkab";
import { UserRepository } from "../repositories/user";
export class UserService extends inherit(BaseService, Inject) {
constructor(private userRepository = UserRepository.inject()) {
super();
}
findById(id: number) {
return this.userRepository.findById(id);
}
}
شرح الكود:
UserRepository.inject()
: يتم حقن المستودع تلقائيًا لاستخدامه داخل الخدمة.findById
: خدمة تستدعي وظيفةfindById
في المستودع لتنفيذ منطق قاعدة البيانات.
فوائد استخدام المستودعات
- فصل منطق قاعدة البيانات: يسهل فصل منطق الوصول إلى البيانات عن بقية التطبيق.
- إعادة استخدام الكود: يمكن استخدام المستودعات عبر خدمات متعددة.
- اختبارات أسهل: تسهل المستودعات اختبار الكود بفضل فصل منطق البيانات.
- تنظيم الكود: تجعل الكود أكثر ترتيبًا وقابلية للتوسع.
الخاتمة
باستخدام المستودعات (Repositories) في كوكب Kawkab، يمكنك إدارة منطق قاعدة البيانات بشكل أفضل وتحقيق هيكل أكثر تنظيمًا لتطبيقك.
🎉 ابدأ الآن بإنشاء مستودعات مذهلة في إطار عمل كوكب Kawkab!