uniqueid

package module
v0.0.0-...-ac56f63 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2021 License: MIT Imports: 9 Imported by: 10

README

Uniqueid 用于生成不重复ID的库

提供统一接口,利用不同的算法生成字符串格式的唯一ID

可用驱动

  • simpleid 利用时间戳,自增ID和后缀生成唯一ID
  • UUID 利用uuid生成唯一ID
  • Snowflake 利用snowflake生成唯一ID

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultGenerator = &Generator{
	Driver: NewSimpleID(),
}

DefaultGenerator default generator

View Source
var ErrSuffTooLong = errors.New("suff too long")
View Source
var LoadConfig = func(c map[string]interface{}, key string, v interface{}) error {
	i, ok := c[key]
	if !ok {
		return nil
	}
	bs, err := json.Marshal(i)
	if err != nil {
		return err
	}
	return json.Unmarshal(bs, v)
}

Functions

func Factories

func Factories() []string

Factories returns a sorted list of the names of the registered factories.

func GenerateID

func GenerateID() (string, error)

GenerateID generate unique id. Return generated id and any error if rasied.

func MustGenerateID

func MustGenerateID() string

MustGenerateID generate unique id. Return generated id. Panic if any error raised

func Register

func Register(name string, f Factory)

Register makes a driver creator available by the provided name. If Register is called twice with the same name or if driver is nil, it panics.

func TryGenerateID

func TryGenerateID() string

TryGenerateID try generate unique id. Return generated id if success

func UnregisterAll

func UnregisterAll()

UnregisterAll unregister all driver

Types

type Driver

type Driver interface {
	//GenerateID generate unique id.
	//Return  generated id and any error if rasied.
	GenerateID() (string, error)
}

Driver unique id generator driver interface

func NewDriver

func NewDriver(name string, loader func(v interface{}) error) (Driver, error)

NewDriver create new driver with given name loader. Reutrn driver created and any error if raised.

func SimpleIDFactory

func SimpleIDFactory(loader func(v interface{}) error) (Driver, error)

SimpleIDFactory simple id driver factory

type Factory

type Factory func(loader func(v interface{}) error) (Driver, error)

Factory unique id generator driver create factory.

type Generator

type Generator struct {
	Driver Driver
}

Generator unique id generator

func NewGenerator

func NewGenerator() *Generator

NewGenerator create new Generator

func (*Generator) GenerateID

func (g *Generator) GenerateID() (string, error)

GenerateID generate unique id. Return generated id and any error if rasied.

func (*Generator) MustGenerateID

func (g *Generator) MustGenerateID() string

MustGenerateID generate unique id. Return generated id. Panic if any error raised

type Option

type Option interface {
	ApplyTo(*Generator) error
}

Option generator option interface.

type OptionConfig

type OptionConfig struct {
	Driver string
	Config func(v interface{}) error `config:", lazyload"`
}

OptionConfig option config in map format.

func NewOptionConfig

func NewOptionConfig() *OptionConfig

NewOptionConfig create new option config.

func (*OptionConfig) ApplyTo

func (o *OptionConfig) ApplyTo(g *Generator) error

ApplyTo apply option to file store.

type SimpleID

type SimpleID struct {
	Current *uint32
	Suff    string
}

SimpleID simple id driver

func NewSimpleID

func NewSimpleID() *SimpleID

NewSimpleID create new simpleid driver

func (*SimpleID) GenerateID

func (i *SimpleID) GenerateID() (string, error)

GenerateID generate unique id. Return generated id and any error if rasied.

type SimpleIDConfig

type SimpleIDConfig struct {
	Suff string
}

Jump to

Keyboard shortcuts

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