import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { // ✅ Countries const india = await prisma.countries.upsert({ where: { countryName: 'India' }, update: {}, create: { countryName: 'India', countryCode: 'IN', countryFlag: '🇮🇳', isActive: true, }, }); const usa = await prisma.countries.upsert({ where: { countryName: 'United States' }, update: {}, create: { countryName: 'United States', countryCode: 'US', countryFlag: '🇺🇸', isActive: true, }, }); // ✅ Currencies await prisma.currencies.createMany({ data: [ { countryXid: india.id, currencyName: 'Indian Rupee', currencySymbol: '₹' }, { countryXid: usa.id, currencyName: 'US Dollar', currencySymbol: '$' }, ], skipDuplicates: true, }); // ✅ States const maharashtra = await prisma.states.upsert({ where: { stateName: 'Maharashtra' }, update: {}, create: { countryXid: india.id, stateName: 'Maharashtra' }, }); const california = await prisma.states.upsert({ where: { stateName: 'California' }, update: {}, create: { countryXid: usa.id, stateName: 'California' }, }); // ✅ Cities await prisma.cities.createMany({ data: [ { stateXid: maharashtra.id, cityName: 'Mumbai' }, { stateXid: california.id, cityName: 'Los Angeles' }, ], skipDuplicates: true, }); // ✅ Taxes await prisma.taxes.createMany({ data: [ { countryXid: india.id, taxName: 'GST', taxPer: 18 }, { countryXid: usa.id, taxName: 'VAT', taxPer: 10 }, ], skipDuplicates: true, }); // ✅ Banks const hdfc = await prisma.banks.upsert({ where: { bankName: 'HDFC Bank' }, update: {}, create: { countryXid: india.id, bankName: 'HDFC Bank' }, }); const chase = await prisma.banks.upsert({ where: { bankName: 'Chase Bank' }, update: {}, create: { countryXid: usa.id, bankName: 'Chase Bank' }, }); // ✅ Bank Branches await prisma.bankBranches.createMany({ data: [ { bankXid: hdfc.id, stateXid: maharashtra.id, cityXid: (await prisma.cities.findFirst({ where: { cityName: 'Mumbai' } }))!.id, branchAddress: 'HDFC Fort Branch, Mumbai', ifscCode: 'HDFC0001234', }, { bankXid: chase.id, stateXid: california.id, cityXid: (await prisma.cities.findFirst({ where: { cityName: 'Los Angeles' } }))!.id, branchAddress: 'Chase Downtown LA', ifscCode: 'CHASUS12345', }, ], skipDuplicates: true, }); // ✅ Interests + Activity Types const chillandzen = await prisma.interests.upsert({ where: { interestName: 'Chill and Zen' }, update: {}, create: { interestName: 'Chill and Zen', displayOrder: 1 }, }); const sweatmode = await prisma.interests.upsert({ where: { interestName: 'Sweat Mode' }, update: {}, create: { interestName: 'Sweat Mode', displayOrder: 2 }, }); const gameon = await prisma.interests.upsert({ where: { interestName: 'Game On' }, update: {}, create: { interestName: 'Game On', displayOrder: 3 }, }); const partycentral = await prisma.interests.upsert({ where: { interestName: 'Party Central' }, update: {}, create: { interestName: 'Party Central', displayOrder: 4 }, }); const artsy = await prisma.interests.upsert({ where: { interestName: 'Artsy' }, update: {}, create: { interestName: 'Artsy', displayOrder: 5 }, }); const foodiediaries = await prisma.interests.upsert({ where: { interestName: 'Foodie Diaries' }, update: {}, create: { interestName: 'Foodie Diaries', displayOrder: 6 }, }); await prisma.activityTypes.createMany({ data: [ { interestXid: chillandzen.id, activityTypeName: 'Cricket' }, { interestXid: chillandzen.id, activityTypeName: 'Football' }, ], skipDuplicates: true, }); // ✅ Document Types await prisma.documentType.createMany({ data: [ { documentTypeName: 'GST Certificate', displayOrder: 1 }, { documentTypeName: 'PAN / BIN Card', displayOrder: 2 }, { documentTypeName: 'Registration Certification', displayOrder: 3 }, { documentTypeName: 'Aadhaar Card', displayOrder: 4 }, { documentTypeName: 'Fire Insurance', displayOrder: 5 }, { documentTypeName: 'ATOAI Certification', displayOrder: 6 }, { documentTypeName: 'FASSI Certification', displayOrder: 7 }, { documentTypeName: 'Safety Certification', displayOrder: 8 }, { documentTypeName: 'Others', displayOrder: 9 }, ], skipDuplicates: true, }); // ✅ Amenities await prisma.amenities.createMany({ data: [ { amenitiesName: 'Wi-Fi' }, { amenitiesName: 'Air Conditioner' }, { amenitiesName: 'Phone Charger' }, { amenitiesName: 'Mobile Network' }, ], skipDuplicates: true, // prevents error if already seeded }); // ✅ Food Types await prisma.foodTypes.createMany({ data: [ { foodTypeName: 'Veg' }, { foodTypeName: 'Non-Veg' }, { foodTypeName: 'Vegan' }, { foodTypeName: 'Jain' }, ], skipDuplicates: true, }); // ✅ AGE RESTRICTIONS await prisma.ageRestrictions.createMany({ data: [ { ageRestrictionName: 'Below 18', minAge: 1, maxAge: 17 }, { ageRestrictionName: 'Above 18', minAge: 18, maxAge: 200 }, ], skipDuplicates: true, }); // ✅ ALLOWED ENTRY TYPES await prisma.allowedEntryTypes.createMany({ data: [ { allowedEntryTypeName: 'Solo' }, { allowedEntryTypeName: 'Couple' }, { allowedEntryTypeName: 'Group' }, ], skipDuplicates: true, }); // ✅ ROLES await prisma.roles.createMany({ data: [ { roleName: 'Admin' }, { roleName: 'Co_Admin' }, { roleName: 'Account_Manager' }, { roleName: 'Host' }, { roleName: 'Operator' }, { roleName: 'User' }, ], skipDuplicates: true, }); // ✅ Frequencies await prisma.frequencies.createMany({ data: [ { frequencyName: 'Single Event' }, { frequencyName: 'Multiple Events Per Day' }, { frequencyName: 'Training' }, ], skipDuplicates: true, }); // ✅ Navigation Modes await prisma.navigationModes.createMany({ data: [ { navigationModeName: 'Elephant Ride', navigationModeIcon: '🚗' }, { navigationModeName: 'Horse Ride', navigationModeIcon: '🏍️' }, { navigationModeName: 'Camel Ride', navigationModeIcon: '🚶' }, ], skipDuplicates: true, }); // ✅ Transport Modes await prisma.transportModes.createMany({ data: [ { transportModeName: 'Open Jeep / Car / SUV - 4 seater', transportModeIcon: '🚌' }, { transportModeName: 'Open Jeep / Car / SUV - 6 seater', transportModeIcon: '🚌' }, { transportModeName: '4W Jeep / SUV - 4 seater', transportModeIcon: '🚆' }, { transportModeName: '4W Jeep / SUV - 6 seater', transportModeIcon: '🚆' }, ], skipDuplicates: true, }); // ✅ PQQ Categories + Questions + Answers const category = await prisma.pQQCategories.upsert({ where: { categoryName: 'General' }, update: {}, create: { categoryName: 'General', subCategoryName: 'Basic', categoryTitle: 'General Information', displayOrder: 1, isActive: true, PQQQuestions: { create: [ { questionName: 'Do you have insurance?', displayOrder: 1, PQQAnswers: { create: [ { answerName: 'Yes', answerScore: '10', displayOrder: 1 }, { answerName: 'No', answerScore: '0', displayOrder: 2 }, ], }, }, { questionName: 'Do you have ISO certification?', displayOrder: 2, PQQAnswers: { create: [ { answerName: 'Yes', answerScore: '20', displayOrder: 1 }, { answerName: 'No', answerScore: '0', displayOrder: 2 }, ], }, }, ], }, }, include: { PQQQuestions: true }, }); console.log('✅ Seed data inserted successfully!'); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });