الحفر أعمقكائن نقل البيانات

كائن نقل البيانات (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(),
        };
    }
}

ملاحظات إضافية

  1. التحقق من صحة البيانات:

    • يمكن تعريف قواعد التحقق باستخدام الدالة rules(). في المثال أعلاه، تم تعريف قاعدة للتحقق من صحة البريد الإلكتروني.
  2. جلب البيانات الافتراضية:

    • يتم جلب بيانات الطلب افتراضيًا باستخدام req.inputs() إذا لم يتم تمرير بيانات عند إنشاء الكائن.
  3. تنظيم البيانات:

    • يمكنك تحديد شكل البيانات النهائية عبر الدالة data().

الخاتمة

يوفر Kawkab طريقة مرنة لإنشاء كائنات نقل البيانات (DTO) لتنظيم البيانات والتحقق من صحتها بسهولة. باستخدام هذا الأسلوب، يمكنك تحسين كود التطبيق وفصل منطق البيانات عن منطق الأعمال. استفد من هذه الميزة لتطوير تطبيقات أكثر استقرارًا وتنظيمًا.