دورة تطوير نظام إدارة الأعراس والمناسبات ودعوات QR عمليًا

الترحيلات migrations والبذور seed

الترحيلات migrations والبذور seed — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
وقت الدراسة
14 دقيقة

المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: نمذجة قاعدة البيانات بـ Prisma

مدخل إلى الدرس: الترحيلات migrations والبذور seed

الترحيلات migrations والبذور seed — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي

طريقة الدراسة: اقرأ التعريف، تتبّع المثال في الشرح، نفّذه بنفسك، ثم اختبر النتيجة والحالات الاستثنائية قبل الانتقال.

أهداف هذا الدرس

  • إنشاء أول ترحيل (migration) وتطبيقه محلياً.
  • فهم الفرق بين migrate dev و db push في التطوير.
  • تهيئة قاعدة ببيانات تجريبية عبر script prisma/seed.ts.

المخطط: مسار تغيير المخطط من التحرير إلى قاعدة البيانات

flowchart TD
    A["تعديل schema.prisma (نموذج/حقل جديد)"] --> B["npx prisma migrate dev --name init"]
    B --> C1["1) حساب الفرق (diff)"]
    B --> C2["2) إنشاء ملف SQL في prisma/migrations"]
    B --> C3["3) تطبيقه على قاعدة التطوير"]
    B --> C4["4) إعادة توليد Prisma Client"]
    C1 & C2 & C3 & C4 --> D["الجدول الجديد جاهز + سجل ترحيلات أمين"]

مثال

# إنشاء أول ترحيل وتطبيقه محلياً
npx prisma migrate dev --name init
✔ Generated Prisma Client
✔ Pushed migrations to the database

# ثم في كل مرة نعدّل النماذج
npx prisma migrate dev            # ينشئ ويطبق ترحيلاً جديداً
# أو في وضع الطوارئ التجريبي السريع
npx prisma db push                # يطابق schema دون سجل migrant

مثال

// prisma/seed.ts — بيانات تجريبية منظمة
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();

async function main() {
  const event = await prisma.event.upsert({
    where: { slug: "wedding-2026" },
    update: {},
    create: {
      slug: "wedding-2026",
      name: "حفل خرقة وأحمد",
      date: new Date("2026-05-15T18:00:00Z"),
      location: "قاعة الأمنية، الرياض",
      guests: {
        create: [
          { name: "خالد العتيبي", category: "vip", tableNo: "2" },
          { name: "سارة القحطاني", category: "general", tableNo: "5" },
        ],
      },
    },
  });
  console.log("Seeded guests for", event.name);
}

main()
  .then(() => prisma.$disconnect())
  .catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });

متى استخدم ماذا؟

الأمرالموعدالسجل migrant
migrate devالكتابة المحلية مع مراجعةيُنشئ يحدّث التاريخ
db pushتطوير عجول/نموذج أوليبلا سجل
migrate deployالإنتاج (بلا --dev)يطبق التاريخ

خطر مؤكد

لا تنفّذ migrate reset على بيانات إنتاج! هي للمحلية فقط وتمسح قاعدة وتعيد زرع السجل.

تمرين تطبيقي: أنشىء migration باسم init ثم اكتب seed يضيف مناسبة حقيقية مثلاسمك بثلاثة ضيوف وشغّله مرتين؛ لاحظ أن upsert يمنع التكرار.

أخطاء شائعة يجب تفاديها

  • تشغيل db push في إنتاج محلي بلا سجل تاريخ.
  • ترك seed ببيانات كلمة مرور سرية.
  • نسيان prisma $disconnect في seed يعلق العملية.

معجم مصطلحات الدرس

مigatedر dev
صياغة migration من التغيير وتطبيقه المحلي.
db push
مطابقة schema مع القاعدة الفورية بلا أثر.
الزرع Seed
حقن بيانات تمهيدية افتراضية للتجربة.

مراجعة وتمرين تثبيت المهارة

اختبار سريع: اشرح بعبارتك معنى «الترحيلات migrations والبذور seed»، ثم بيّن أين ستستخدمه داخل نظام تسجيل حضور دعوات مناسبة عبر رمز QR، وما الخطأ الذي يجب اختباره قبل الاعتماد على الحل.

تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.

دروس نصية

#1

نظرة عامة على الدورة والمخرجات

#2

مقدمة إلى Next.js وأسباب اختياره

#3

أساسيات schema.prisma والنماذج

#4

مقدمة Route Handlers وبنية الاستجابة

#5

فهم Server Components والجلب الآمن

#6

تصميم الرمز Secured والتوقيع HMAC

#7

بناء الإنتاج وتجنّب أخطاء الحالة المربكة

#8

تحليل المتطلبات وتحديد الكيانات

#9

إنشاء مشروع Next.js وتجربته

#10

نموذج المناسبة Event بالعلاقات

#11

واجهة إنشاء المناسبة POST /api/events

#12

تصميم صفحة الدعوة الإلكترونية

#13

توليد صورة QR من قاعدة الدعوة

#14

نشر المشروع على Vercel

#15

تصميم قاعدة البيانات والعلاقات

#16

تجريب PostgreSQL محلياً وإنشاء قاعدة الداتا

#17

نموذج المدعو Guest مع الرمز الموقّع

#18

واجهات الضيوف الإضافة والقائمة

#19

نموذج الرد RSVP التفاعلي

#20

تجربة المسح في بوابة الحفل

#21

قاعدة بيانات إنتاج مُدارة وأمانها

#22

تدفق الدعوة وقراءة QR من التوليد إلى الحضور

#23

تثبيت Prisma والاتصال بالقاعدة

#24

نموذج الرد Rsvp ومنع التكرار

#25

واجهة تسجيل الحضور POST /api/checkin

#26

صفحة قائمة الضيوف والفرز

#27

واجهة تتفهم حالة الحضور والحصر

#28

إدارة المتغيرات السرية بيئة وواجهة

#29

سيناريو المشروع وقواعد العمل

#30

بنية مجلدات المشروع ومسارات الصفحات

#31

الاستعلام والجلب مع العلاقات

#32

التحقق من المدخلات ومعالجة الأخطاء

#33

لوحة الإحصائيات الحية

#34

تأمين الروابط والهجمات الشائعة

#35

قائمة الفحص النهائي قبل الإطلاق

#36

الترحيلات migrations والبذور seed

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 6/36
أنت تشاهد
الترحيلات migrations والبذور seed