diff options
author | Eric Multanen <eric.w.multanen@intel.com> | 2020-04-14 17:48:55 -0700 |
---|---|---|
committer | Eric Multanen <eric.w.multanen@intel.com> | 2020-04-14 17:48:55 -0700 |
commit | 9a0939c26080c08fa87193be9e55634615de0daa (patch) | |
tree | ec1a08638401636dfdd66ee3bc6ab9922ba65502 /src/orchestrator/pkg | |
parent | f853b30cdc2655f6889f24214ba21791351c0787 (diff) |
Mongo api changes
Add RemoveTag call to allow removal of attribute from
a mongo document.
Allow find to return and empty list.
Issue-ID: MULTICLOUD-1029
Signed-off-by: Eric Multanen <eric.w.multanen@intel.com>
Change-Id: I315efb8a4da485b697727254ccc9a5828f11a0d0
Diffstat (limited to 'src/orchestrator/pkg')
-rw-r--r-- | src/orchestrator/pkg/infra/db/mongo.go | 31 | ||||
-rw-r--r-- | src/orchestrator/pkg/infra/db/store.go | 3 |
2 files changed, 31 insertions, 3 deletions
diff --git a/src/orchestrator/pkg/infra/db/mongo.go b/src/orchestrator/pkg/infra/db/mongo.go index b33d6c65..a3fdc570 100644 --- a/src/orchestrator/pkg/infra/db/mongo.go +++ b/src/orchestrator/pkg/infra/db/mongo.go @@ -539,9 +539,6 @@ func (m *MongoStore) Find(coll string, key Key, tag string) ([][]byte, error) { } result = append(result, data) } - if len(result) == 0 { - return result, pkgerrors.Errorf("Did not find any objects with tag: %s", tag) - } return result, nil } @@ -587,3 +584,31 @@ func (m *MongoStore) Remove(coll string, key Key) error { } return nil } + +// RemoveTag is used to remove an element from a document +func (m *MongoStore) RemoveTag(coll string, key Key, tag string) error { + c := getCollection(coll, m) + ctx := context.Background() + + filter, err := m.findFilter(key) + if err != nil { + return err + } + + _, err = decodeBytes( + c.FindOneAndUpdate( + ctx, + filter, + bson.D{ + {"$unset", bson.D{ + {tag, ""}, + }}, + }, + options.FindOneAndUpdate().SetUpsert(true).SetReturnDocument(options.After))) + + if err != nil { + return pkgerrors.Errorf("Error removing tag: %s", err.Error()) + } + + return nil +} diff --git a/src/orchestrator/pkg/infra/db/store.go b/src/orchestrator/pkg/infra/db/store.go index 9c6532f1..a332fcda 100644 --- a/src/orchestrator/pkg/infra/db/store.go +++ b/src/orchestrator/pkg/infra/db/store.go @@ -64,6 +64,9 @@ type Store interface { // Remove all the document(s) matching the key RemoveAll(coll string, key Key) error + + // Remove the specifiec tag from the document matching the key + RemoveTag(coll string, key Key, tag string) error } // CreateDBClient creates the DB client |