117 lines
3.6 KiB
TypeScript
117 lines
3.6 KiB
TypeScript
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();
|
|
});
|