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; | |
//related_item | |
//meta_data | |
//activity type | |
//related id | |
//user id | |
//created_//at | |
// | |
export type RelatedItem = MealDocument | MealPlanDocument | WorkoutDocument | ExerciseDocument; | |
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: true, | |
}, | |
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 | |
); | |