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

28 lines
785 B

package base
import (
"fmt"
11 months ago
"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"
4 years ago
4 years ago
"github.com/mainnika/mongox-go-driver/v2/mongox"
)
// GetID returns source document id
11 months ago
func GetID(source interface{}) (id interface{}, err error) {
switch doc := source.(type) {
case mongox.OIDBased:
11 months ago
return oidbased.GetID(doc)
case mongox.StringBased:
11 months ago
return stringbased.GetID(doc)
case mongox.DocBased:
return docbased.GetID(doc)
case mongox.InterfaceBased:
11 months ago
return ifacebased.GetID(doc)
default:
11 months ago
return nil, fmt.Errorf("%w: unknown base type", mongox.ErrMalformedBase)
5 years ago
}
}