import { PrismaClient } from '@prisma-app/client'; const prisma = new PrismaClient(); async function main() { console.log('๐Ÿงน Clearing existing records...'); await prisma.menuRecipe.deleteMany(); await prisma.recipeIngredient.deleteMany(); await prisma.menu.deleteMany(); await prisma.recipe.deleteMany(); await prisma.ingredient.deleteMany(); await prisma.allergen.deleteMany(); console.log('๐ŸŒฑ Seeding database with new recipes...'); // Create ingredients first const ingredients = await Promise.all([ prisma.ingredient.create({ data: { name: 'Vincotto' } }), prisma.ingredient.create({ data: { name: 'Olive Oil' } }), prisma.ingredient.create({ data: { name: 'Chives' } }), prisma.ingredient.create({ data: { name: 'Shallots' } }), prisma.ingredient.create({ data: { name: 'Salt & Pepper' } }), prisma.ingredient.create({ data: { name: 'Chili Flakes' } }), prisma.ingredient.create({ data: { name: 'Charred Orange' } }), prisma.ingredient.create({ data: { name: 'Red Wine Vinegar' } }), prisma.ingredient.create({ data: { name: 'Honey' } }), prisma.ingredient.create({ data: { name: 'Dijon' } }), prisma.ingredient.create({ data: { name: 'Garlic' } }), prisma.ingredient.create({ data: { name: 'Orange Zest' } }), prisma.ingredient.create({ data: { name: 'Water' } }), prisma.ingredient.create({ data: { name: 'White Wine Vinegar' } }), prisma.ingredient.create({ data: { name: 'Sugar' } }), prisma.ingredient.create({ data: { name: 'Salt' } }), prisma.ingredient.create({ data: { name: 'Nduja' } }), prisma.ingredient.create({ data: { name: 'Shallot Brunoise' } }), prisma.ingredient.create({ data: { name: 'Butter' } }), prisma.ingredient.create({ data: { name: 'Sundried Cherry Tomato' } }) ]); // Create a map for easy ingredient lookup const ingredientMap = new Map(ingredients.map(ing => [ing.name, ing])); // Recipe 1: Vincotto Dressing const vincottoDressing = await prisma.recipe.create({ data: { name: 'Vincotto Dressing', description: 'A rich and flavorful dressing made with vincotto, perfect for salads and marinades', time: 'Quick', station: 'Garde Manger', instructions: '1. Combine all ingredients in a bowl\n2. Whisk until well combined\n3. Season to taste with salt and pepper\n4. Store in refrigerator for up to 1 week', ingredients: { create: [ { ingredientId: ingredientMap.get('Vincotto')!.id, quantity: 90, unit: 'ml' }, { ingredientId: ingredientMap.get('Olive Oil')!.id, quantity: 150, unit: 'ml' }, { ingredientId: ingredientMap.get('Chives')!.id, quantity: 30, unit: 'ml' }, { ingredientId: ingredientMap.get('Shallots')!.id, quantity: 45, unit: 'ml' }, { ingredientId: ingredientMap.get('Salt & Pepper')!.id, quantity: null, unit: null, prep: 'Pinch to taste' }, { ingredientId: ingredientMap.get('Chili Flakes')!.id, quantity: null, unit: null, prep: 'Pinch to taste' } ] } } }); // Recipe 2: Charred Orange Salad Dressing const charredOrangeDressing = await prisma.recipe.create({ data: { name: 'Charred Orange Salad Dressing', description: 'A bright and citrusy dressing with charred orange notes', time: 'Medium', station: 'Garde Manger', instructions: '1. Char oranges over open flame until blackened\n2. Juice the charred oranges\n3. Combine all ingredients in a bowl\n4. Whisk until emulsified\n5. Season to taste', ingredients: { create: [ { ingredientId: ingredientMap.get('Charred Orange')!.id, quantity: 5, unit: 'oranges' }, { ingredientId: ingredientMap.get('Olive Oil')!.id, quantity: 90, unit: 'ml' }, { ingredientId: ingredientMap.get('Red Wine Vinegar')!.id, quantity: 30, unit: 'ml' }, { ingredientId: ingredientMap.get('Honey')!.id, quantity: 20, unit: 'ml' }, { ingredientId: ingredientMap.get('Dijon')!.id, quantity: 10, unit: 'ml' }, { ingredientId: ingredientMap.get('Garlic')!.id, quantity: 2.5, unit: 'ml' }, { ingredientId: ingredientMap.get('Orange Zest')!.id, quantity: null, unit: null, prep: 'Pinch to taste' }, { ingredientId: ingredientMap.get('Salt & Pepper')!.id, quantity: null, unit: null, prep: 'Pinch to taste' } ] } } }); // Recipe 3: Scallop Vinegar const scallopVinegar = await prisma.recipe.create({ data: { name: 'Scallop Vinegar', description: 'A sweet and tangy vinegar solution for curing and marinating scallops', time: 'Quick', station: 'Garde Manger', instructions: '1. Combine all ingredients in a saucepan\n2. Bring to a boil, stirring to dissolve sugar and salt\n3. Remove from heat and let cool\n4. Store in refrigerator for up to 2 weeks', ingredients: { create: [ { ingredientId: ingredientMap.get('Water')!.id, quantity: 250, unit: 'ml' }, { ingredientId: ingredientMap.get('White Wine Vinegar')!.id, quantity: 250, unit: 'ml' }, { ingredientId: ingredientMap.get('Sugar')!.id, quantity: 75, unit: 'ml' }, { ingredientId: ingredientMap.get('Salt')!.id, quantity: 7.5, unit: 'ml' } ] } } }); // Recipe 4: Nduja Spread const ndujaSpread = await prisma.recipe.create({ data: { name: 'Nduja Spread', description: 'A spicy and flavorful spread made with nduja sausage', time: 'Medium', station: 'Garde Manger', instructions: '1. Soften butter to room temperature\n2. Combine all ingredients in a food processor\n3. Pulse until well combined but still chunky\n4. Season to taste\n5. Store in refrigerator for up to 1 week', ingredients: { create: [ { ingredientId: ingredientMap.get('Nduja')!.id, quantity: 450, unit: 'g' }, { ingredientId: ingredientMap.get('Red Wine Vinegar')!.id, quantity: 64.8, unit: 'ml' }, { ingredientId: ingredientMap.get('Shallot Brunoise')!.id, quantity: 108, unit: 'g' }, { ingredientId: ingredientMap.get('Sugar')!.id, quantity: 21.8, unit: 'g' }, { ingredientId: ingredientMap.get('Salt')!.id, quantity: 14.5, unit: 'g' }, { ingredientId: ingredientMap.get('Butter')!.id, quantity: 270, unit: 'g' }, { ingredientId: ingredientMap.get('Sundried Cherry Tomato')!.id, quantity: 162, unit: 'g' }, { ingredientId: ingredientMap.get('Chili Flakes')!.id, quantity: 10, unit: 'g' } ] } } }); console.log('โœ… Seeding complete!'); console.log('--- Summary ---'); console.log(`Ingredients created: ${ingredients.length}`); console.log(`Recipes created: 4`); console.log('Recipes:'); console.log('- Vincotto Dressing'); console.log('- Charred Orange Salad Dressing'); console.log('- Scallop Vinegar'); console.log('- Nduja Spread'); } main() .catch(e => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });