modarb-be / src /seeder /seeders /006-workout.seeder.ts
Hozifa Elgharbawy
update
75f3dfb
import { Workout } from "@common/models/workout.model";
import { seederWrapper } from "seeder/helpers/seeder-wrapper";
import { Exercise } from "@common/models/exercise.model";
import { FitnessLevel } from "@common/enums/fitness-level.enum";
import { FitnessGoal } from "@common/enums/fitness-goal.enum";
import { Place } from "@common/enums/place.enum";
export default seederWrapper(Workout, async () => {
// 10 workouts
await Promise.all(Array.from({ length: 10 }, (_, i) => i).map(async function (i) {
const exercisesDuration = await Exercise.find(
{
duration: { $gt: 0 },
sets: { $exists: false },
reps: { $exists: false },
}
).limit(4).skip(i*4).lean();
const exercisesReps = await Exercise.find(
{
duration: 0,
sets: { $gt: 0 },
reps: { $gt: 0 }
}
).limit(4).skip(i*4).lean();
const o = {
name: `Workout - ${i}`,
description: `Workout - ${i} description`,
type: 'Equipment Diversity',
image: `https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRvEFvhT6PV5u-yCaY5lJRtySenHFAJquCb7BHcmuMwW5hSVVoWYH0DU2eCXoKn6yMYqH0&usqp=CAU`,
fitness_level: [FitnessLevel.BEGINNER, FitnessLevel.INTERMEDIATE, FitnessLevel.ADVANCED][i % 3],
fitness_goal: [FitnessGoal.LOSE_WEIGHT, FitnessGoal.GAIN_MUSCLE, FitnessGoal.GET_FITTER][i % 3],
place: [Place.GYM, Place.HOME][i % 2],
min_per_day: 30,
total_number_days: 4,
template_weeks: [
{
week_number: 1,
week_name: 'Week 1',
week_description: 'Week 1 description',
days: [
{
day_number: 1,
total_number_exercises: 2,
day_type: 'full_body',
exercises: [
exercisesDuration.slice(0, 1).map((e: any) => e._id),
exercisesReps.slice(0, 1).map((e: any) => e._id)
]
},
{
day_number: 2,
total_number_exercises: 2,
day_type: 'full_body',
exercises: [
exercisesDuration.slice(1, 2).map((e: any) => e._id),
exercisesReps.slice(1, 2).map((e: any) => e._id)
]
},
]
},
{
week_number: 2,
week_name: 'Week 2',
week_description: 'Week 2 description',
days: [
{
day_number: 1,
total_number_exercises: 2,
day_type: 'full_body',
exercises: [
exercisesDuration.slice(2, 3).map((e: any) => e._id),
exercisesReps.slice(2, 3).map((e: any) => e._id)
]
},
{
day_number: 2,
total_number_exercises: 2,
day_type: 'full_body',
exercises: [
exercisesDuration.slice(3, 4).map((e: any) => e._id),
exercisesReps.slice(3, 4).map((e: any) => e._id)
]
},
]
}
],
isDeleted: false,
};
await Workout.create(o);
}))
})