modarb-be / src /common /models /activity.model.ts
moahmedwafy's picture
feat: create activites model
cf14b0a
raw
history blame
1.39 kB
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
);