Multiple implementations of the same back-end application. The aim is to provide quick, side-by-side comparisons of different technologies (languages, frameworks, libraries) while preserving consistent business logic across all implementations.
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

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)
}