From 28be1f46b91ca77667543517f59dc0f6a25af38d Mon Sep 17 00:00:00 2001 From: Nikita Tokarchuk Date: Thu, 23 Jul 2020 01:43:46 +0200 Subject: [PATCH] Add filters support for a saving --- mongox/database/saveone.go | 6 ++++-- mongox/mongox.go | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mongox/database/saveone.go b/mongox/database/saveone.go index 5a09777..bbd02df 100644 --- a/mongox/database/saveone.go +++ b/mongox/database/saveone.go @@ -12,13 +12,15 @@ import ( ) // SaveOne saves a single source document to the database -func (d *Database) SaveOne(source interface{}) (err error) { +func (d *Database) SaveOne(source interface{}, filters ...interface{}) (err error) { collection := d.GetCollectionOf(source) opts := options.FindOneAndReplace() id := base.GetID(source) protected := base.GetProtection(source) - composed := query.Compose(bson.M{"_id": id}) + composed := query.Compose(filters...) + + composed.And(bson.M{"_id": id}) opts.SetUpsert(true) opts.SetReturnDocument(options.After) diff --git a/mongox/mongox.go b/mongox/mongox.go index c8a3834..b3e2f0d 100644 --- a/mongox/mongox.go +++ b/mongox/mongox.go @@ -27,7 +27,7 @@ type Database interface { LoadArray(target interface{}, filters ...interface{}) (err error) LoadOne(target interface{}, filters ...interface{}) (err error) LoadStream(target interface{}, filters ...interface{}) (loader StreamLoader, err error) - SaveOne(source interface{}) (err error) + SaveOne(source interface{}, filters ...interface{}) (err error) IndexEnsure(cfg interface{}, document interface{}) (err error) }