From 36f40728d85574ccde28ffcc61e9dd34113cf0f9 Mon Sep 17 00:00:00 2001 From: pablomendezroyo Date: Mon, 20 May 2024 16:55:08 +0200 Subject: [PATCH] conditionally update statuf of validator --- listener/internal/api/handlers/postSignatures.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/listener/internal/api/handlers/postSignatures.go b/listener/internal/api/handlers/postSignatures.go index 9ddd67c..004505b 100644 --- a/listener/internal/api/handlers/postSignatures.go +++ b/listener/internal/api/handlers/postSignatures.go @@ -110,8 +110,9 @@ func insertSignaturesIntoDB(signatures []types.SignatureRequestDecodedWithStatus "tag": req.Tag, "network": network, } + + // Create a base update document with $push operation update := bson.M{ - "$setOnInsert": bson.M{"status": req.Status}, // do not update status if already exists "$push": bson.M{ "entries": bson.M{ "payload": req.Payload, @@ -124,10 +125,19 @@ func insertSignaturesIntoDB(signatures []types.SignatureRequestDecodedWithStatus }, }, } + + // Only update status unknown -> active + if req.Status == "active" { + update["$set"] = bson.M{"status": req.Status} + } else { + update["$setOnInsert"] = bson.M{"status": req.Status} + } + options := options.Update().SetUpsert(true) if _, err := dbCollection.UpdateOne(context.Background(), filter, update, options); err != nil { return err } + logger.Debug("New Signature " + req.Signature + " inserted into MongoDB") } return nil