Drizzle ORM مع TypeScript: دليل شامل مع أمثلة تطبيقية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Drizzle ORM مع TypeScript: الدليل الشامل

1. ما هو Drizzle ORM ولماذا تحتاجه؟

Drizzle ORM هي مكتبة حديثة وخفيفة وآمنة من ناحية الأنواع (type-safe) للتعامل مع قواعد البيانات العلائقية باستخدام TypeScript وJavaScript. على عكس المكتبات التقليدية مثل TypeORM أو Sequelize، صُممت Drizzle لتركز على الأداء العالي والقدرة على التنبؤ والتكامل الكامل مع نظام الأنواع في TypeScript. لا تحاول Drizzle إخفاء لغة SQL، بل على العكس، توفر طريقة مريحة وآمنة لكتابة استعلامات SQL مع الاحتفاظ بالتحكم الكامل في الكود المُنشأ.

الهدف الأساسي لـ Drizzle هو توفير وقت المطور من خلال التخلص من كتابة استعلامات SQL الخام والتعامل اليدوي مع أنواع النتائج. يمكنك وصف هيكل قاعدة البيانات في كود TypeScript، وتقوم Drizzle تلقائياً باستنتاج الأنواع لجميع الجداول والعلاقات والاستعلامات. هذا يعني أن الأخطاء المتعلقة بأسماء الأعمدة الخاطئة أو أنواع البيانات غير الصحيحة أو الحقول المفقودة سيتم اكتشافها أثناء مرحلة الترجمة (compile time) وليس أثناء تشغيل التطبيق. تدعم المكتبة PostgreSQL وMySQL وSQLite وغيرها من قواعد البيانات الشائعة.

تعتبر Drizzle الخيار الأمثل للمشاريع التي تتطلب أداءً عالياً وتحكماً كاملاً في SQL، مع الاستفادة من مزايا ORM مثل الإكمال التلقائي في بيئة التطوير والتحقق من الأنواع والوصف التصريحي للهيكل. تُستخدم غالباً مع أطر العمل مثل Next.js وNestJS وExpress. بفضل حجمها الصغير (حوالي 7KB بعد الضغط) وخلوها من "السحر" غير المتوقع، تُعد Drizzle خياراً ممتازاً للمشاريع الصغيرة والكبيرة على حد سواء.

2. التثبيت

يتم تثبيت Drizzle ORM وأداة سطر الأوامر الخاصة بها (Drizzle Kit) باستخدام npm أو yarn. يعتمد اختيار المُشغّل (driver) على قاعدة البيانات المستخدمة.

# لقواعد بيانات PostgreSQL
npm install drizzle-orm pg
npm install -D drizzle-kit @types/pg

# لقواعد بيانات MySQL
npm install drizzle-orm mysql2
npm install -D drizzle-kit @types/node

# لقواعد بيانات SQLite
npm install drizzle-orm better-sqlite3
npm install -D drizzle-kit @types/better-sqlite3

بعد التثبيت، يجب إنشاء ملف إعدادات drizzle.config.ts لأداة Drizzle Kit:

import type { Config } from "drizzle-kit";

export default {
  schema: "./src/db/schema.ts",
  out: "./drizzle",
  dialect: "postgresql", // أو "mysql" أو "sqlite"
  dbCredentials: {
    url: process.env.DATABASE_URL!,
  },
} satisfies Config;

3. البداية السريعة

مثال عملي بسيط لقاعدة بيانات PostgreSQL. نبدأ بتعريف الهيكل، ثم إنشاء الاتصال وتنفيذ الاستعلام.

// src/db/schema.ts
import { pgTable, serial, text, integer } from "drizzle-orm/pg-core";

export const users = pgTable("users", {
  id: serial("id").primaryKey(),
  name: text("name").notNull(),
  age: integer("age"),
});

// src/index.ts
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { users } from "./db/schema";
import { eq } from "drizzle-orm";

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
});

const db = drizzle(pool);

async function main() {
  // إدراج بيانات
  const newUser = await db.insert(users).values({
    name: "أحمد",
    age: 30,
  }).returning();
  console.log("المستخدم المُنشأ:", newUser);

  // جلب البيانات
  const allUsers = await db.select().from(users);
  console.log("جميع المستخدمين:", allUsers);

  // جلب بشرط
  const user = await db.select()
    .from(users)
    .where(eq(users.name, "أحمد"));
  console.log("المستخدم الذي تم العثور عليه:", user);
}

main().catch(console.error);

4. أهم الطرق والدوال

فيما يلي الطرق الأساسية في Drizzle ORM مع التوقيعات والأمثلة.

4.1 drizzle(client)

توصيات