modarb-be / src /common /models /activity.model.ts
moahmedwafy's picture
feat: eat custom meal
21a9b1b
import mongoose, { Types } from "mongoose";
import { MealDocument } from "./meal.model";
import { MealPlanDocument } from "./meal-plan.model";
import { WorkoutDocument } from "./workout.model";
import { ExerciseDocument } from "./exercise.model";
import { ActivityType } from "@common/enums/activity-type.enum";
const { Schema } = mongoose;
export type RelatedItem = | MealDocument
| MealPlanDocument
| WorkoutDocument
| ExerciseDocument
| {
ingredients: {
id: string,
noServings: number
}[];
}
export type AMetaData = {};
export interface IActivity {
related_item?: RelatedItem;
meta_data?: AMetaData;
activity_type: ActivityType;
related_id?: string | Types.ObjectId;
user_id: string | Types.ObjectId;
created_at?: Date;
}
const activitySchema = new Schema({
related_item: {
type: Schema.Types.Mixed,
required: false,
},
meta_data: {
type: Schema.Types.Mixed,
default: {},
},
activity_type: {
type: String,
enum: Object.values(ActivityType),
},
related_id: {
type: Schema.Types.ObjectId,
required: false,
},
user_id: {
type: Schema.Types.ObjectId,
required: true,
},
created_at: {
type: Date,
default: Date.now,
},
});
export type ActivityDocument = IActivity & mongoose.Document;
export const Activity = mongoose.model<ActivityDocument>(
"activities",
activitySchema
);