Select Git revision
log_test.go
bson.go 744 B
package id
import (
"git.perx.ru/perxis/perxis-go/pkg/errors"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/bsonrw"
"go.mongodb.org/mongo-driver/bson/bsontype"
)
func (id *ID) MarshalBSONValue() (bsontype.Type, []byte, error) {
data := id.String()
return bson.MarshalValue(data)
}
func (id *ID) UnmarshalBSONValue(btype bsontype.Type, data []byte) error {
if btype != bson.TypeString {
return errors.New("cannot unmarshal non-string bson value to ID")
}
dec, err := bson.NewDecoder(bsonrw.NewBSONValueReader(btype, data))
if err != nil {
return err
}
var str string
if err = dec.Decode(&str); err != nil {
return err
}
t, err := Parse(str)
if err != nil {
return err
}
*id = *t
return nil
}