func (u ULID) Value() (driver.Value, error) {
	return ULIDValueOverrideFunc(u)
}
Value converts a value to a database driver value
package strfmt
import (
	cryptorand "crypto/rand"
	"database/sql/driver"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"sync"
	"github.com/oklog/ulid"
	"go.mongodb.org/mongo-driver/bson"
)
type ULID struct {
	ulid.ULID
}
var (
	ulidEntropyPool = sync.Pool{
		New: func() interface{} {
			return cryptorand.Reader
		},
	}
	ULIDScanDefaultFunc = func(raw interface{}) (ULID, error) {
		var u ULID = NewULIDZero()
		switch x := raw.(type) {
		case nil:
			return u, nil
		case string:
			if x == "" {
				return u, nil
			}
			return u, u.UnmarshalText([]byte(x))
		case []byte:
			return u, u.UnmarshalText(x)
		}
		return u, fmt.Errorf("cannot sql.Scan() strfmt.ULID from: %#v: %w", raw, ulid.ErrScanValue)
	}
	ULIDScanOverrideFunc = ULIDScanDefaultFunc
	ULIDValueDefaultFunc = func(u ULID) (driver.Value, error) {
		return driver.Value(u.String()), nil
	}
	ULIDValueOverrideFunc = ULIDValueDefaultFunc
)
func init() {
	ulid := ULID{}
	Default.Add("ulid", &ulid, IsULID)
}
func IsULID(str string) bool {
	_, err := ulid.ParseStrict(str)
	return err == nil
}
func ParseULID(str string) (ULID, error) {
	var u ULID
	return u, u.UnmarshalText([]byte(str))
}
func NewULIDZero() ULID {
	return ULID{}
}
func NewULID() (u ULID, err error) {
	entropy := ulidEntropyPool.Get().(io.Reader)
	id, err := ulid.New(ulid.Now(), entropy)
	if err != nil {
		return u, err
	}
	ulidEntropyPool.Put(entropy)
	u.ULID = id
	return u, nil
}
func (u *ULID) GetULID() interface{} {
	return u.ULID
}
func (u ULID) MarshalText() ([]byte, error) {
	return u.ULID.MarshalText()
}
func (u *ULID) UnmarshalText(data []byte) error {  
	return u.ULID.UnmarshalText(data)
}
func (u *ULID) Scan(raw interface{}) error {
	ul, err := ULIDScanOverrideFunc(raw)
	if err == nil {
		*u = ul
	}
	return err
}