Spaces:
Running
Running
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 | |
); | |