كائن نقل البيانات (DTO) باستخدام Kawkab
كائن نقل البيانات (Data Transfer Object - DTO) هو كائن يستخدم لنقل البيانات بين الطبقات المختلفة في تطبيقك بطريقة منظمة ومرنة. مع Kawkab، يمكنك إنشاء كائنات DTO بسهولة واستخدامها لإدارة البيانات الواردة من الطلبات أو البيانات الممررة بين الأجزاء المختلفة من التطبيق.
إنشاء DTO جديد باستخدام Kawkab
لإنشاء DTO جديد، قم بتنفيذ الأمر التالي:
npm run kawkab dto:make <name> [module]
تفاصيل المعاملات:
<name>
: اسم الـ DTO الذي تريد إنشاؤه (مثلUser
).[module]
: اسم الموديول الذي يحتوي على الـ DTO (اختياري، الافتراضي هوmain
).
مثال عملي:
npm run kawkab dto:make user
نتيجة التنفيذ:
- سيتم إنشاء كائن DTO باسم
UserDTO
في الموديولmain
. - يمكنك الآن استخدام هذا الـ DTO بسهولة في تطبيقك.
كيفية استخدام DTO في التطبيق
بمجرد إنشاء كائن DTO، يمكنك استيراده واستخدامه في ملفات المشروع.
استيراد DTO:
للاستفادة من الـ DTO، استخدم الاستيراد التالي:
import { UserDTO } from "../dto/user";
إنشاء كائن DTO:
يمكنك إنشاء كائن DTO جديد بثلاث طرق:
1. إنشاء كائن بدون تمرير بيانات:
عند عدم تمرير بيانات، سيقوم كائن الـ DTO تلقائيًا بجلب البيانات من الطلب (Request):
const dto = new UserDTO();
console.log(dto.data); // يحتوي على البيانات من الطلب الحالي
2. تمرير بيانات مباشرة عند الإنشاء:
يمكنك تمرير البيانات يدويًا عند إنشاء الكائن:
const dto = new UserDTO({
email: "hassan@example.com",
});
console.log(dto.data); // يحتوي على { email: "hassan@example.com" }
محتوى ملف DTO:
سيحتوي ملف UserDTO
الذي تم إنشاؤه على الكود التالي:
import { BaseDTO, rule as r, req } from "kawkab";
export interface Item {
[key: string]: any;
}
export class UserDTO extends BaseDTO {
constructor(data: Item = req.inputs()) {
super();
this.dto(this, data);
}
static inject(data: Item = req.inputs()) {
return { ...new this(data) };
}
data(i: Item): object {
return {
email: i?.email,
};
}
rules() {
return {
email: r.string().email(),
};
}
}
ملاحظات إضافية
-
التحقق من صحة البيانات:
- يمكن تعريف قواعد التحقق باستخدام الدالة
rules()
. في المثال أعلاه، تم تعريف قاعدة للتحقق من صحة البريد الإلكتروني.
- يمكن تعريف قواعد التحقق باستخدام الدالة
-
جلب البيانات الافتراضية:
- يتم جلب بيانات الطلب افتراضيًا باستخدام
req.inputs()
إذا لم يتم تمرير بيانات عند إنشاء الكائن.
- يتم جلب بيانات الطلب افتراضيًا باستخدام
-
تنظيم البيانات:
- يمكنك تحديد شكل البيانات النهائية عبر الدالة
data()
.
- يمكنك تحديد شكل البيانات النهائية عبر الدالة
الخاتمة
يوفر Kawkab طريقة مرنة لإنشاء كائنات نقل البيانات (DTO) لتنظيم البيانات والتحقق من صحتها بسهولة. باستخدام هذا الأسلوب، يمكنك تحسين كود التطبيق وفصل منطق البيانات عن منطق الأعمال. استفد من هذه الميزة لتطوير تطبيقات أكثر استقرارًا وتنظيمًا.