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