292 lines
9.4 KiB
TypeScript
292 lines
9.4 KiB
TypeScript
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();
|
|
});
|