package value_objects import ( "errors" "github.com/google/uuid" ) var ( ErrInvalidUUID = errors.New("invalid UUID format") ) type BaseUUID struct { value string } func NewBaseUUID(value string) (BaseUUID, error) { if value == "" { return BaseUUID{}, ErrInvalidUUID } _, err := uuid.Parse(value) if err != nil { return BaseUUID{}, ErrInvalidUUID } return BaseUUID{value: value}, nil } func NewRandomBaseUUID() (BaseUUID, error) { id, err := uuid.NewRandom() if err != nil { return BaseUUID{}, err } return BaseUUID{value: id.String()}, nil } func (b BaseUUID) String() string { return b.value } func (b BaseUUID) Equals(other BaseUUID) bool { return b.value == other.value }