diff --git a/mongox/base/protection/key.go b/mongox/base/protection/key.go index d195b0d..e385d5a 100644 --- a/mongox/base/protection/key.go +++ b/mongox/base/protection/key.go @@ -1,6 +1,8 @@ package protection import ( + "time" + "go.mongodb.org/mongo-driver/bson/primitive" ) @@ -9,3 +11,9 @@ type Key struct { X primitive.ObjectID `bson:"_x" json:"_x" index:",hashed"` V int64 `bson:"_v" json:"_v"` } + +// Restate creates a new protection key +func (k *Key) Restate() { + k.X = primitive.NewObjectID() + k.V = time.Now().Unix() +} diff --git a/mongox/database/deleteone.go b/mongox/database/deleteone.go index 189495d..658cc90 100644 --- a/mongox/database/deleteone.go +++ b/mongox/database/deleteone.go @@ -2,7 +2,6 @@ package database import ( "fmt" - "time" "github.com/modern-go/reflect2" "go.mongodb.org/mongo-driver/bson/primitive" @@ -33,8 +32,7 @@ func (d *Database) DeleteOne(target interface{}, filters ...interface{}) (err er if protected != nil { query.Push(composed, protected) - protected.X = primitive.NewObjectID() - protected.V = time.Now().Unix() + protected.Restate() } defer func() { diff --git a/mongox/database/saveone.go b/mongox/database/saveone.go index 7de62d1..3fb6642 100644 --- a/mongox/database/saveone.go +++ b/mongox/database/saveone.go @@ -1,8 +1,6 @@ package database import ( - "time" - "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo/options" @@ -31,8 +29,7 @@ func (d *Database) SaveOne(source interface{}, filters ...interface{}) (err erro if protected != nil { query.Push(composed, protected) - protected.X = primitive.NewObjectID() - protected.V = time.Now().Unix() + protected.Restate() } defer func() { diff --git a/mongox/database/updateone.go b/mongox/database/updateone.go index 0ed8aef..b57d275 100644 --- a/mongox/database/updateone.go +++ b/mongox/database/updateone.go @@ -38,6 +38,7 @@ func (d *Database) UpdateOne(target interface{}, filters ...interface{}) (err er // "_v": time.Now().Unix(), // }, //}) + protected.Restate() } defer func() {