modarb-be / src /seeder /seeders /005-exercises.seeder.ts
Hozifa Elgharbawy
update
75f3dfb
raw
history blame
2.17 kB
import { ExerciseType } from "@common/enums/exercise-type.enum";
import { Equipment } from "@common/models/equipment.model";
import { Exercise, IExercise } from "@common/models/exercise.model";
import { Muscle } from "@common/models/muscle.model";
import { dbStore } from "seeder/helpers/db-store";
import { IExerciseCSV } from "seeder/helpers/load-exercises-dataset";
import { seederWrapper } from "seeder/helpers/seeder-wrapper";
export default seederWrapper(Exercise, async () => {
console.log('preparing exercises data... (this may take a while)');
let randomDuration = 30 + Math.floor(Math.random() * 60);
const data = await Promise.all(dbStore.excerisesDataset.map(async function (e: IExerciseCSV) {
return {
name: e.name,
category: e.bodyPart,
exerciseType: e.type,
...(
e.type === ExerciseType.WEIGHT &&
{
reps: 10 + Math.floor(Math.random() * 10),
sets: e.sets,
duration: 0,
}
||
{
duration: randomDuration,
}
),
expectedDurationRange: (e.type === ExerciseType.WEIGHT && {
min: 10 + Math.floor(Math.random() * 10),
max: 30 + Math.floor(Math.random() * 30),
} ||
{
min: randomDuration,
max: randomDuration,
}),
...(
e.instructions === "" &&
{
instructions: "Do this exercise",
}
||
{
instructions: e.instructions,
}
),
...(
e.benefits === "" &&
{
benefits: "You will get stronger",
}
||
{
benefits: e.benefits,
}
),
targetMuscles: {
primary: (await Muscle.findOne({ name: e.target }).exec())._id,
secondary: (await Muscle.findOne({ name: e.target }).exec())._id,
},
equipments: [(await Equipment.findOne({ name: e.equipment }).exec())._id],
coverImage: e.gif_url,
media: {
type: 'image',
url: e.gif_url,
},
isDeleted: false,
} satisfies IExercise;
}))
console.log('inserting exercises...');
await Exercise.insertMany(data);
})