Spaces:
Sleeping
Sleeping
File size: 1,855 Bytes
92fdb89 bb3dc70 92fdb89 75f3dfb 92fdb89 bb3dc70 92fdb89 3daae40 92fdb89 bb3dc70 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
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);
}));
});
|