|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|