From 5a3ee358b502a049d2dbb606857bcb06c4600376 Mon Sep 17 00:00:00 2001 From: Nikita Tokarchuk Date: Wed, 23 Jan 2019 23:41:09 +0100 Subject: [PATCH] Object base --- mongox/base/getid.go | 12 ++++++++++++ mongox/base/object.go | 23 +++++++++++++++++++++++ mongox/common.go | 5 +++++ 3 files changed, 40 insertions(+) create mode 100644 mongox/base/object.go diff --git a/mongox/base/getid.go b/mongox/base/getid.go index 2a9dff1..6770403 100644 --- a/mongox/base/getid.go +++ b/mongox/base/getid.go @@ -14,6 +14,8 @@ func GetID(source interface{}) (id interface{}) { return getObjectIdOrGenerate(doc) case mongox.BaseString: return getStringIdOrPanic(doc) + case mongox.BaseObject: + return getObjectOrPanic(doc) default: panic(errors.Malformedf("source contains malformed document, %v", source)) } @@ -43,3 +45,13 @@ func getStringIdOrPanic(source mongox.BaseString) (id string) { panic(errors.Malformedf("victim contains malformed document, %v", source)) } + +func getObjectOrPanic(source mongox.BaseObject) (id primitive.D) { + + id = source.GetID() + if id != nil { + return id + } + + panic(errors.Malformedf("victim contains malformed document, %v", source)) +} diff --git a/mongox/base/object.go b/mongox/base/object.go new file mode 100644 index 0000000..131d334 --- /dev/null +++ b/mongox/base/object.go @@ -0,0 +1,23 @@ +package base + +import ( + "github.com/mainnika/mongox-go-driver/mongox" + "github.com/mongodb/mongo-go-driver/bson/primitive" +) + +var _ mongox.BaseObject = &Object{} + +// Object is a structure with object as an _id field +type Object struct { + ID primitive.D `bson:"_id,omitempty" json:"_id,omitempty"` +} + +// GetID returns an _id +func (db *Object) GetID() primitive.D { + return db.ID +} + +// SetID sets an _id +func (db *Object) SetID(id primitive.D) { + db.ID = id +} diff --git a/mongox/common.go b/mongox/common.go index 24b6342..7cb442f 100644 --- a/mongox/common.go +++ b/mongox/common.go @@ -25,3 +25,8 @@ type BaseString interface { GetID() string SetID(id string) } + +type BaseObject interface { + GetID() primitive.D + SetID(id primitive.D) +}