أصبح Drizzle ORM بسرعة الخيار المفضّل لمطوّري TypeScript الذين يريدون وصولاً آمن الأنواع إلى قاعدة البيانات دون العبء الزائد لأدوات ORM التقليدية.
لماذا Drizzle؟
- صفر عبء وقت التشغيل: يُترجَم إلى SQL خالص
- آمن الأنواع: استنتاج كامل لأنواع TypeScript
- صياغة شبيهة بـ SQL: مألوفة لمطوّري SQL
- خفيف: اعتماديات قليلة
تعريف المخططات
import { pgTable, serial, text, timestamp } from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: serial("id").primaryKey(),
name: text("name").notNull(),
email: text("email").unique().notNull(),
createdAt: timestamp("created_at").defaultNow(),
});
export const posts = pgTable("posts", {
id: serial("id").primaryKey(),
title: text("title").notNull(),
authorId: integer("author_id").references(() => users.id),
});
الاستعلامات
// Select with relations
const result = await db
.select()
.from(users)
.leftJoin(posts, eq(posts.authorId, users.id))
.where(eq(users.name, "Edrees"));
// Insert
await db.insert(users).values({ name: "John", email: "john@example.com" });
// Update
await db.update(users).set({ name: "Jane" }).where(eq(users.id, 1));
Drizzle مقابل Prisma
| الميزة | Drizzle | Prisma |
|---|---|---|
| حجم الحزمة | ~50KB | ~2MB |
| التحكم في SQL | كامل | محدود |
| منحنى التعلّم | شبيه بـ SQL | لغة DSL خاصة |
التعليقات (0)
اترك تعليقًا
لا توجد تعليقات بعد. كن أول من يشارك أفكاره!