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 ( |
|
ErrInvalidItemID = errors.New("invalid item ID") |
|
) |
|
|
|
type ItemID struct { |
|
BaseUUID |
|
} |
|
|
|
func NewItemID(value string) (ItemID, error) { |
|
baseUUID, err := NewBaseUUID(value) |
|
if err != nil { |
|
return ItemID{}, ErrInvalidItemID |
|
} |
|
|
|
return ItemID{BaseUUID: baseUUID}, nil |
|
} |
|
|
|
func NewRandomItemID() (ItemID, error) { |
|
baseUUID, err := NewRandomBaseUUID() |
|
if err != nil { |
|
return ItemID{}, ErrInvalidItemID |
|
} |
|
|
|
return ItemID{BaseUUID: baseUUID}, nil |
|
} |
|
func NewItemIDFromString(value string) (ItemID, error) { |
|
return NewItemID(value) |
|
} |
|
|
|
func (i ItemID) Equals(other ItemID) bool { |
|
return i.BaseUUID.Equals(other.BaseUUID) |
|
}
|
|
|