diff --git a/server/src/models/Metric.ts b/server/src/models/Metric.ts index 48c70c5..74b9959 100644 --- a/server/src/models/Metric.ts +++ b/server/src/models/Metric.ts @@ -169,21 +169,28 @@ const SleepSchema: Schema = new Schema({ SleepSchema.index({ date: 1, source: 1 }, { unique: true }); export const createMetricModel = (name: MetricName) => { - return mongoose.model(String(name), BaseMetricSchema, String(name)); + const modelName = String(name); + return mongoose.models[modelName] || mongoose.model(modelName, BaseMetricSchema, modelName); }; -export const BloodPressureModel = mongoose.model( - 'BloodPressure', - BloodPressureSchema, - 'blood_pressure', -); -export const HeartRateModel = mongoose.model( - 'HeartRate', - HeartRateSchema, - 'heart_rate', -); -export const SleepModel = mongoose.model( - 'SleepAnalysis', - SleepSchema, - 'sleep_analysis', -); +// Safely create or retrieve models to avoid "Cannot overwrite model" error +export const BloodPressureModel = mongoose.models.BloodPressure || + mongoose.model( + 'BloodPressure', + BloodPressureSchema, + 'blood_pressure', + ); + +export const HeartRateModel = mongoose.models.HeartRate || + mongoose.model( + 'HeartRate', + HeartRateSchema, + 'heart_rate', + ); + +export const SleepModel = mongoose.models.SleepAnalysis || + mongoose.model( + 'SleepAnalysis', + SleepSchema, + 'sleep_analysis', + ); diff --git a/server/src/models/Workout.ts b/server/src/models/Workout.ts index 6407340..6b0e3c8 100644 --- a/server/src/models/Workout.ts +++ b/server/src/models/Workout.ts @@ -214,5 +214,9 @@ export function mapRoute(data: WorkoutData) { }; } -export const WorkoutModel = mongoose.model('Workout', WorkoutSchema, 'workouts'); -export const RouteModel = mongoose.model('Route', routeSchema, 'workout_routes'); +// Safely create or retrieve models to avoid "Cannot overwrite model" error +export const WorkoutModel = mongoose.models.Workout || + mongoose.model('Workout', WorkoutSchema, 'workouts'); + +export const RouteModel = mongoose.models.Route || + mongoose.model('Route', routeSchema, 'workout_routes');