@@ -309,7 +309,7 @@ func (r *MonitorRepositoryImpl) FindAll(
309309 return monitors , nil
310310}
311311
312- func buildSetMapFromModel (m * Model , includeProxyId bool , proxyObjectID primitive.ObjectID ) bson.M {
312+ func buildSetMapFromModelForUpdate (m * Model , preserveCreatedAt time. Time , includeProxyId bool , proxyObjectID primitive.ObjectID ) bson.M {
313313 set := bson.M {
314314 "type" : m .Type ,
315315 "name" : m .Name ,
@@ -319,8 +319,8 @@ func buildSetMapFromModel(m *Model, includeProxyId bool, proxyObjectID primitive
319319 "retry_interval" : m .RetryInterval ,
320320 "resend_interval" : m .ResendInterval ,
321321 "active" : m .Active ,
322- "status" : 0 , // or m.Status if available
323- "created_at" : time . Now (). UTC (),
322+ "status" : 0 , // or m.Status if available
323+ "created_at" : preserveCreatedAt , // Preserve original created_at
324324 "updated_at" : time .Now ().UTC (),
325325 "config" : m .Config ,
326326 }
@@ -380,19 +380,25 @@ func (r *MonitorRepositoryImpl) UpdateFull(ctx context.Context, id string, monit
380380 return err
381381 }
382382
383+ // Fetch existing monitor to preserve created_at
384+ existingMonitor , err := r .FindByID (ctx , id )
385+ if err != nil {
386+ return err
387+ }
388+
383389 filter := bson.M {"_id" : objectID }
384390 update := bson.M {}
385391
386392 if monitor .ProxyId == "" {
387- set := buildSetMapFromModel (monitor , false , primitive .NilObjectID )
393+ set := buildSetMapFromModelForUpdate (monitor , existingMonitor . CreatedAt , false , primitive .NilObjectID )
388394 update ["$set" ] = set
389395 update ["$unset" ] = bson.M {"proxy_id" : "" }
390396 } else {
391397 proxyObjectID , err := primitive .ObjectIDFromHex (monitor .ProxyId )
392398 if err != nil {
393399 return err
394400 }
395- set := buildSetMapFromModel (monitor , true , proxyObjectID )
401+ set := buildSetMapFromModelForUpdate (monitor , existingMonitor . CreatedAt , true , proxyObjectID )
396402 update ["$set" ] = set
397403 }
398404
0 commit comments