Spaces:
Running
Running
File size: 1,626 Bytes
cf14b0a 21a9b1b cf14b0a 21a9b1b cf14b0a 21a9b1b cf14b0a 21a9b1b cf14b0a 21a9b1b cf14b0a |
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 61 62 63 |
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
);
|