modarb-be / src /seeder /seeders /010-mealPlan.seeder.ts
Hozifa Elgharbawy
update
75f3dfb
raw
history blame
1.86 kB
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);
}));
});