first commit
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
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();
|
||||
});
|
||||
Reference in New Issue
Block a user