parent
557788255e
commit
bc595dd024
@ -0,0 +1,45 @@ |
||||
package base |
||||
|
||||
import ( |
||||
"github.com/mainnika/mongox-go-driver/mongox" |
||||
"github.com/mainnika/mongox-go-driver/mongox/errors" |
||||
"github.com/mongodb/mongo-go-driver/bson/primitive" |
||||
) |
||||
|
||||
// GetID returns source document id
|
||||
func GetID(source interface{}) (id interface{}) { |
||||
|
||||
switch doc := source.(type) { |
||||
case mongox.BaseObjectID: |
||||
return getObjectIdOrGenerate(doc) |
||||
case mongox.BaseString: |
||||
return getStringIdOrPanic(doc) |
||||
default: |
||||
panic(errors.Malformedf("source contains malformed document, %v", source)) |
||||
} |
||||
|
||||
return |
||||
} |
||||
|
||||
func getObjectIdOrGenerate(source mongox.BaseObjectID) (id primitive.ObjectID) { |
||||
|
||||
id = source.GetID() |
||||
if id != primitive.NilObjectID { |
||||
return id |
||||
} |
||||
|
||||
id = primitive.NewObjectID() |
||||
source.SetID(id) |
||||
|
||||
return |
||||
} |
||||
|
||||
func getStringIdOrPanic(source mongox.BaseString) (id string) { |
||||
|
||||
id = source.GetID() |
||||
if id != "" { |
||||
return id |
||||
} |
||||
|
||||
panic(errors.Malformedf("victim contains malformed document, %v", source)) |
||||
} |
Loading…
Reference in new issue