Spaces:
Running
Running
File size: 1,504 Bytes
f1528d2 d491754 9d56cbc f1528d2 9d56cbc d491754 9d56cbc f1528d2 9d56cbc d491754 9d56cbc |
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 60 |
import mongoose, { ObjectId } from "mongoose";
const { Schema } = mongoose;
export interface IExercise {
name: string;
category: string;
duration?: number | null;
expectedDurationRange: {
min: number;
max: number;
};
reps: number;
sets: number;
instructions: string;
benefits: string;
targetMuscles: {
primary: ObjectId;
secondary: ObjectId;
}
equipments: ObjectId[];
media: {
type: "image" | "video";
url: string;
};
}
const exerciseSchema = new Schema({
name: { type: String, required: true, unique: true, dropDups: true },
category: { type: String, required: true },
duration: { type: Number, required: false },
expectedDurationRange: {
min: { type: Number, required: true },
max: { type: Number, required: true },
},
reps: { type: Number, required: true },
sets: { type: Number, required: true },
instructions: { type: String, required: true },
benefits: { type: String, required: true },
targetMuscles: {
primary: { type: Schema.Types.ObjectId, ref: "muscles" },
secondary: { type: Schema.Types.ObjectId, ref: "muscles" },
},
equipments: [{ type: Schema.Types.ObjectId, ref: "equipments" }],
media: {
type: {
type: String,
enum: ["image", "video"],
required: true,
},
url: { type: String, required: true },
},
});
export type ExerciseDocument = IExercise & mongoose.Document;
export const Exercise = mongoose.model<ExerciseDocument>(
"exercises",
exerciseSchema
);
|