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.
 
 
 
 
 
 

45 lines
707 B

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
}