modarb-be / src /common /models /workout.model.ts
Hozifa Elgharbawy
feat: Add isDeleted field to exercise, meal, meal plan, muscle, ingredient, and equipment models
3daae40
raw
history blame
2.56 kB
import mongoose from "mongoose";
import { FitnessGoal } from "@common/enums/fitness-goal.enum";
import { FitnessLevel } from "@common/enums/fitness-level.enum";
import { Place } from "@common/enums/place.enum";
const { Schema } = mongoose;
export interface IWorkout {
name: string;
description: string;
type: string;
created_by: mongoose.Types.ObjectId;
image: string;
fitness_level: FitnessLevel;
fitness_goal: FitnessGoal;
place: [Place];
min_per_day: number;
total_number_days: number;
template_weeks: [
{
week_number: number;
week_name: string,
week_description: string,
days: [
{
day_number: number,
total_number_exercises: number,
day_type: string,
exercises: [mongoose.Types.ObjectId],
},
],
},
],
aiGenerated: boolean;
isDeleted: boolean;
}
const workoutSchema = new Schema({
name: { type: String, required: true, unique: true, dropDups: true },
description: { type: String, required: true },
type: { type: String, required: true },
created_by: { type: mongoose.Types.ObjectId, ref: "admins" },
image: { type: String },
fitness_level: { type: String, enum: FitnessLevel, required: true, },
fitness_goal: { type: String, enum: FitnessGoal, required: true, },
place: [{ type: String, enum: Place, required: true, }],
min_per_day: { type: Number, required: true, },
total_number_days: { type: Number, required: true, },
template_weeks: [
{
week_number: { type: Number, required: true, },
week_name: { type: String, required: true, },
week_description: { type: String, required: true, },
days: [
{
day_number: { type: Number, required: true, enum: [1, 2, 3, 4, 5, 6, 7] },
total_number_exercises: { type: Number, required: true, },
day_type: { type: String, required: true, },
exercises: [
{ type: mongoose.Types.ObjectId, ref: "exercises" },
],
},
],
},
],
aiGenerated: { type: Boolean, required: true, default: false },
isDeleted: { type: Boolean, default: false },
});
export type WorkoutDocument = IWorkout & mongoose.Document;
export const Workout = mongoose.model<WorkoutDocument>("workouts", workoutSchema);