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.
38 lines
673 B
38 lines
673 B
package value_objects |
|
|
|
import ( |
|
"errors" |
|
) |
|
|
|
var ( |
|
ErrInvalidUserID = errors.New("invalid user ID") |
|
) |
|
|
|
type UserID struct { |
|
BaseUUID |
|
} |
|
|
|
func NewUserID(value string) (UserID, error) { |
|
baseUUID, err := NewBaseUUID(value) |
|
if err != nil { |
|
return UserID{}, ErrInvalidUserID |
|
} |
|
|
|
return UserID{BaseUUID: baseUUID}, nil |
|
} |
|
|
|
func NewRandomUserID() (UserID, error) { |
|
baseUUID, err := NewRandomBaseUUID() |
|
if err != nil { |
|
return UserID{}, ErrInvalidUserID |
|
} |
|
|
|
return UserID{BaseUUID: baseUUID}, nil |
|
} |
|
func NewUserIDFromString(value string) (UserID, error) { |
|
return NewUserID(value) |
|
} |
|
|
|
func (u UserID) Equals(other UserID) bool { |
|
return u.BaseUUID.Equals(other.BaseUUID) |
|
}
|
|
|