Spaces:
Running
Running
import { MealPlan } from "@common/models/meal-plan.model"; | |
import { Meal } from "@common/models/meal.model"; | |
import { seederWrapper } from "seeder/helpers/seeder-wrapper"; | |
import { FitnessLevel } from "@common/enums/fitness-level.enum"; | |
export default seederWrapper(MealPlan, async () => { | |
// 10 mealPlans | |
await Promise.all(Array.from({ length: 10 }, (_, i) => i).map(async function (i) { | |
// Fetch all meals | |
const meals = await Meal.find().lean(); | |
// Categorize meals by type | |
const categorizedMeals = { | |
'breakfast': [], | |
'dinner': [], | |
'snacks': [], | |
'lunch': [], | |
}; | |
meals.forEach(meal => { | |
if (meal.type in categorizedMeals) { | |
categorizedMeals[meal.type].push(meal); | |
} | |
}); | |
// Check if we have enough meals of each type | |
for (const type in categorizedMeals) { | |
if (categorizedMeals[type].length < 7) { | |
throw new Error(`Not enough meals of type ${type}`); | |
} | |
} | |
let o = { | |
image: `https://t4.ftcdn.net/jpg/01/81/12/37/360_F_181123726_invADRiRZle7YWLYfkEHz0mUfWH60kVZ.jpg`, | |
description: 'This is a description of the meal plan.', | |
duration: 7, | |
level: [FitnessLevel.BEGINNER, FitnessLevel.INTERMEDIATE, FitnessLevel.ADVANCED][i % 3], | |
your_journey: 'This is your journey description.', | |
key_features: [ | |
{ title: 'Feature 1', description: 'Description for feature 1' }, | |
{ title: 'Feature 2', description: 'Description for feature 2' }, | |
], | |
days: Array.from({ length: 7 }, (_, i) => ({ | |
day_number: i + 1, | |
meals: [ | |
categorizedMeals['breakfast'][i], | |
categorizedMeals['lunch'][i], | |
categorizedMeals['dinner'][i], | |
categorizedMeals['snacks'][i], | |
], | |
})), | |
isDeleted: false, | |
} | |
await MealPlan.create(o); | |
})); | |
}); | |