You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
785 B
27 lines
785 B
package base
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/mainnika/mongox-go-driver/v2/mongox/base/docbased"
|
|
"github.com/mainnika/mongox-go-driver/v2/mongox/base/ifacebased"
|
|
"github.com/mainnika/mongox-go-driver/v2/mongox/base/oidbased"
|
|
"github.com/mainnika/mongox-go-driver/v2/mongox/base/stringbased"
|
|
|
|
"github.com/mainnika/mongox-go-driver/v2/mongox"
|
|
)
|
|
|
|
// GetID returns source document id
|
|
func GetID(source interface{}) (id interface{}, err error) {
|
|
switch doc := source.(type) {
|
|
case mongox.OIDBased:
|
|
return oidbased.GetID(doc)
|
|
case mongox.StringBased:
|
|
return stringbased.GetID(doc)
|
|
case mongox.DocBased:
|
|
return docbased.GetID(doc)
|
|
case mongox.InterfaceBased:
|
|
return ifacebased.GetID(doc)
|
|
default:
|
|
return nil, fmt.Errorf("%w: unknown base type", mongox.ErrMalformedBase)
|
|
}
|
|
}
|
|
|