Add audit to replace, update set

This commit is contained in:
George Suntres
2026-04-24 16:40:42 -04:00
parent 66ba2b8874
commit 25c4866515
5 changed files with 240 additions and 7 deletions

View File

@@ -2,14 +2,19 @@ package mongo
import (
"context"
"slices"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
"git.gsuntres.com/general/commons"
)
func (c *MongoClient) Replace(ctx context.Context, database, name string, id string, data bson.M) (bson.M, error) {
func (c *MongoClient) Replace(ctx context.Context, database, name string, id string, original bson.M) (bson.M, error) {
collection := c.GetCollection(database, name)
data := commons.BsonClone(original)
filter := map[string]any { "_id": id }
var found bson.M
@@ -31,6 +36,22 @@ func (c *MongoClient) Replace(ctx context.Context, database, name string, id str
PostReplace(updateResult, data, id)
ignoreAudit := slices.Contains(c.IgnoreAudit, name)
if c.WithAudit && !ignoreAudit {
contx := commons.ContextSerialize(ctx, c.ContextFields)
audit := &AuditResult {
Entity: name,
Op: OpUpdate,
Data: original,
Before: found,
After: data,
Context: contx,
}
(*c.OnAudit)(audit)
}
return data, nil
}