import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { console.log('Seeding default demo campaign and prizes...'); const existingCampaign = await prisma.campaign.findUnique({ where: { slug: 'default-campaign' }, }); if (existingCampaign) { console.log('Default campaign already exists.'); return; } const campaign = await prisma.campaign.create({ data: { title: 'گردونه شانس جشنواره بزرگ نوروزی', slug: 'default-campaign', description: 'هر روز با چرخاندن گردونه، شانس برنده شدن آیفون، سکه طلا، و کدهای تخفیف شگفت‌انگیز را داشته باشید!', startAt: new Date(Date.now() - 24 * 3600 * 1000), endAt: new Date(Date.now() + 60 * 24 * 3600 * 1000), status: 'ACTIVE', defaultChances: 3, ctaText: 'بچرخون و برنده شو!', wheelDesign: 'CLASSIC_CASINO', rules: '۱. هر کاربر در بدو ورود ۳ شانس چرخاندن رایگان دریافت می‌کند.\n۲. جوایز فیزیکی پس از هماهنگی تلفنی توسط پشتیبانی ارسال خواهد شد.\n۳. کدهای تخفیف بلافاصله پیامک شده و تا ۷ روز پس از دریافت معتبر هستند.', prizes: { create: [ { title: 'آیفون ۱۵ پرو', type: 'PHYSICAL', stockType: 'LIMITED', initialStock: 3, remainingStock: 3, weight: 1, sortOrder: 1, segmentColor: '#b91c1c', }, { title: 'تخفیف ۵۰٪ دیجی‌کالا', type: 'DISCOUNT_CODE', stockType: 'UNLIMITED', weight: 25, sortOrder: 2, segmentColor: '#1e293b', }, { title: 'کارت هدیه ۵۰۰ تومانی', type: 'CREDIT', stockType: 'LIMITED', initialStock: 50, remainingStock: 50, weight: 10, sortOrder: 3, segmentColor: '#b91c1c', }, { title: 'پوچ (دفعه بعد)', type: 'NO_PRIZE', stockType: 'UNLIMITED', weight: 20, sortOrder: 4, segmentColor: '#1e293b', }, { title: 'تخفیف ۳۰٪ اسنپ', type: 'DISCOUNT_CODE', stockType: 'UNLIMITED', weight: 20, sortOrder: 5, segmentColor: '#b91c1c', }, { title: 'ساعت هوشمند', type: 'PHYSICAL', stockType: 'LIMITED', initialStock: 10, remainingStock: 10, weight: 4, sortOrder: 6, segmentColor: '#1e293b', }, { title: 'شانس مجدد', type: 'OTHER', stockType: 'UNLIMITED', weight: 15, sortOrder: 7, segmentColor: '#b91c1c', }, { title: 'پوچ (بدون جایزه)', type: 'NO_PRIZE', stockType: 'UNLIMITED', weight: 5, sortOrder: 8, segmentColor: '#1e293b', }, ], }, }, }); console.log(`Campaign created with ID: ${campaign.id} and 8 prizes.`); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });