identifier

package module
v0.3.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2025 License: MIT Imports: 3 Imported by: 0

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

Constants

This section is empty.

Variables

View Source
var StartNumber = int64(rand.Int32()) << 32

StartNumber is the start number of the randNumber.

Functions

func Generate

func Generate[T int64 | string](name string) T

Generate generates an identifier of type T (int64 or string) using the specified generator name.

func GenerateNumber

func GenerateNumber(name string) int64

GenerateNumber generates a number identifier using the specified generator name.

func GenerateString

func GenerateString(name string) string

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)

func Validate

func Validate[T int64 | string](name string, id T) bool

Validate validates an identifier of type T (int64 or string) using the specified generator name.

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

type Registry struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL