Add filters support for a saving

This commit is contained in:
Nikita Tokarchuk
2020-07-23 01:43:46 +02:00
parent 848703d56d
commit 28be1f46b9
2 changed files with 5 additions and 3 deletions
+4 -2
View File
@@ -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)
+1 -1
View File
@@ -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)
}