Documentation
¶
Overview ¶
Package identifier provides a unified interface for generating and validating unique identifiers.
Package identifier provides a unified interface for generating and validating unique identifiers.
Package identifier implements the functions, types, and interfaces for the module.
Index ¶
- Variables
- func Generate[T int64 | string](name string) T
- func GenerateNumber(name string) int64
- func GenerateString(name string) string
- func RegisterMultiTypeIdentifier(gen MultiTypeIdentifier)
- func RegisterNumberIdentifier(gen NumberIdentifier)
- func RegisterStringIdentifier(gen StringIdentifier)
- func SetDefaultIdentifier(gen Identifier)
- func SetDefaultNumber(identifier NumberIdentifier)
- func SetDefaultString(identifier StringIdentifier)
- func Validate[T int64 | string](name string, id T) bool
- type Identifier
- type MultiTypeIdentifier
- type NumberGenerate
- type NumberGenerator
- type NumberIdentifier
- type NumberValidator
- type Registry
- func (r *Registry) DefaultNumber() NumberIdentifier
- func (r *Registry) DefaultString() StringIdentifier
- func (r *Registry) GetNumber(name string) NumberIdentifier
- func (r *Registry) GetString(name string) StringIdentifier
- func (r *Registry) RegisterNumber(gen NumberIdentifier)
- func (r *Registry) RegisterString(gen StringIdentifier)
- func (r *Registry) SetDefaultNumber(gen NumberIdentifier)
- func (r *Registry) SetDefaultString(gen StringIdentifier)
- type StringGenerate
- type StringGenerator
- type StringIdentifier
- type StringValidator
- type TypedIdentifier
Constants ¶
This section is empty.
Variables ¶
var StartNumber = int64(rand.Int32()) << 32
StartNumber is the start number of the randNumber.
Functions ¶
func Generate ¶
Generate generates an identifier of type T (int64 or string) using the specified generator name.
func GenerateNumber ¶
GenerateNumber generates a number identifier using the specified generator name.
func GenerateString ¶
GenerateString generates a string identifier using the specified generator name.
func RegisterMultiTypeIdentifier ¶
func RegisterMultiTypeIdentifier(gen MultiTypeIdentifier)
RegisterMultiTypeIdentifier registers a multi-type identifier generator.
func RegisterNumberIdentifier ¶
func RegisterNumberIdentifier(gen NumberIdentifier)
RegisterNumberIdentifier registers a number identifier generator.
func RegisterStringIdentifier ¶
func RegisterStringIdentifier(gen StringIdentifier)
RegisterStringIdentifier registers a string identifier generator.
func SetDefaultIdentifier ¶
func SetDefaultIdentifier(gen Identifier)
SetDefaultIdentifier sets the default identifier generator.
func SetDefaultNumber ¶
func SetDefaultNumber(identifier NumberIdentifier)
func SetDefaultString ¶
func SetDefaultString(identifier StringIdentifier)
Types ¶
type Identifier ¶
type Identifier interface {
Name() string // Name returns the name of the identifier.
Size() int // Size returns the size of the identifier in bits.
}
Identifier defines the basic interface for all identifier types.
type MultiTypeIdentifier ¶
type MultiTypeIdentifier interface {
StringIdentifier
NumberIdentifier
}
MultiTypeIdentifier combines the StringIdentifier and NumberIdentifier interfaces.
type NumberGenerate ¶
type NumberGenerate struct {
// contains filtered or unexported fields
}
NumberGenerate is a simple number identifier generator.
func NewNumberGenerate ¶
func NewNumberGenerate(seed int64) *NumberGenerate
NewNumberGenerate creates a new NumberGenerate instance with the specified seed.
func (*NumberGenerate) GenerateNumber ¶
func (n *NumberGenerate) GenerateNumber() int64
GenerateNumber generates a new number identifier.
func (*NumberGenerate) Name ¶
func (n *NumberGenerate) Name() string
Name returns the name of the number generator.
func (*NumberGenerate) Size ¶
func (n *NumberGenerate) Size() int
Size returns the size of the generated number identifier.
func (*NumberGenerate) ValidateNumber ¶
func (n *NumberGenerate) ValidateNumber(id int64) bool
ValidateNumber validates a number identifier.
type NumberGenerator ¶
type NumberGenerator interface {
GenerateNumber() int64 // GenerateNumber generates a new number identifier.
}
NumberGenerator defines the interface for generating number identifiers.
type NumberIdentifier ¶
type NumberIdentifier interface {
Identifier
NumberValidator
NumberGenerator
}
NumberIdentifier combines the Identifier, NumberValidator, and NumberGenerator interfaces.
func DefaultNumber ¶
func DefaultNumber() NumberIdentifier
type NumberValidator ¶
type NumberValidator interface {
ValidateNumber(int64) bool // ValidateNumber checks if the provided number is a valid identifier.
}
NumberValidator defines the interface for validating number identifiers.
type Registry ¶
Registry manages the registration and retrieval of string and number identifier generators.
func NewRegistry ¶
func NewRegistry() *Registry
NewRegistry creates and returns a new Registry instance.
func (*Registry) DefaultNumber ¶
func (r *Registry) DefaultNumber() NumberIdentifier
DefaultNumber returns the default number identifier generator.
func (*Registry) DefaultString ¶
func (r *Registry) DefaultString() StringIdentifier
DefaultString returns the default string identifier generator.
func (*Registry) GetNumber ¶
func (r *Registry) GetNumber(name string) NumberIdentifier
GetNumber retrieves a number identifier generator by name.
func (*Registry) GetString ¶
func (r *Registry) GetString(name string) StringIdentifier
GetString retrieves a string identifier generator by name.
func (*Registry) RegisterNumber ¶
func (r *Registry) RegisterNumber(gen NumberIdentifier)
RegisterNumber registers a number identifier generator.
func (*Registry) RegisterString ¶
func (r *Registry) RegisterString(gen StringIdentifier)
RegisterString registers a string identifier generator.
func (*Registry) SetDefaultNumber ¶
func (r *Registry) SetDefaultNumber(gen NumberIdentifier)
SetDefaultNumber sets the default number identifier generator.
func (*Registry) SetDefaultString ¶
func (r *Registry) SetDefaultString(gen StringIdentifier)
SetDefaultString sets the default string identifier generator.
type StringGenerate ¶
type StringGenerate struct {
// contains filtered or unexported fields
}
StringGenerate is a simple string identifier generator.
func NewStringGenerate ¶
func NewStringGenerate(size int) *StringGenerate
NewStringGenerate creates a new StringGenerate instance with the specified size.
func (*StringGenerate) GenerateString ¶
func (s *StringGenerate) GenerateString() string
GenerateString generates a new string identifier.
func (*StringGenerate) Name ¶
func (s *StringGenerate) Name() string
Name returns the name of the string generator.
func (*StringGenerate) Size ¶
func (s *StringGenerate) Size() int
Size returns the size of the generated string identifier.
func (*StringGenerate) ValidateString ¶
func (s *StringGenerate) ValidateString(id string) bool
ValidateString validates a string identifier.
type StringGenerator ¶
type StringGenerator interface {
GenerateString() string // GenerateString generates a new string identifier.
}
StringGenerator defines the interface for generating string identifiers.
type StringIdentifier ¶
type StringIdentifier interface {
Identifier
StringValidator
StringGenerator
}
StringIdentifier combines the Identifier, StringValidator, and StringGenerator interfaces.
func DefaultString ¶
func DefaultString() StringIdentifier
type StringValidator ¶
type StringValidator interface {
ValidateString(string) bool // ValidateString checks if the provided string is a valid identifier.
}
StringValidator defines the interface for validating string identifiers.
type TypedIdentifier ¶
type TypedIdentifier[T ~int64 | ~string] interface { Identifier Generate() T Validate(T) bool }
Directories
¶
| Path | Synopsis |
|---|---|
|
Package snowflake provides a unique ID generation based on Twitter Snowflake algorithm.
|
Package snowflake provides a unique ID generation based on Twitter Snowflake algorithm. |
|
Package ulid provides a ULID (Universally Unique Lexicographically Sortable Identifier) implementation.
|
Package ulid provides a ULID (Universally Unique Lexicographically Sortable Identifier) implementation. |
|
Package uuid provides a UUID (Universally Unique Identifier) implementation.
|
Package uuid provides a UUID (Universally Unique Identifier) implementation. |
|
Package xid provides a unique identifier generator based on xid.
|
Package xid provides a unique identifier generator based on xid. |