Skip to content

Commit a77456f

Browse files
authored
refactor(monitor): update buildSetMapFromModel function to preserve created_at timestamp during updates (#192)
1 parent d0cc2ca commit a77456f

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

apps/server/src/modules/monitor/monitor.mongo.repository.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)