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.
 
 
mongox-go-driver/mongox/base/getid.go

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