package domain import ( "github.com/xlgmokha/x/pkg/x" "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/pls" ) type Identifiable interface { GetID() ID SetID(id ID) error ToGID() GlobalID } func WithID[T Identifiable](id ID) x.Option[T] { return x.With(func(item T) { item.SetID(id) }) } func WithULID[T Identifiable]() x.Option[T] { return WithID[T](ID(pls.GenerateULID())) }