Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

go + gorm seqno generator (Serial number generator)

License

Notifications You must be signed in to change notification settings

xiafei114/seqno

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

English | 简体中文

SeqNo Generator

a sequence number generator based on Gorm.

Why?

Need a human call number on some cases(Restaurant etc...).

Examples

Base examples

	db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?parseTime=true")
	if err != nil {
		fmt.Println(fmt.Sprintln(err))
	}
	defer db.Close()
	InitTable(db)
	num, err := NewSeqNoGenerator(db, "Order").SeqFormat("Order%05d").Step(5).Next()
	if err != nil {
		fmt.Println(fmt.Sprintln(err))
	}
	fmt.Printf("%s\n", num)

Locking is required for goroutine

	db, err := gorm.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test?parseTime=true")
	if err != nil {
		fmt.Println(fmt.Sprintln(err))
	}
	defer db.Close()
	InitTable(db)
	arrs := [5]string{"test-1", "test-2", "test-3", "test-4", "test-5"}
	var mutex sync.Mutex
	for _, v := range arrs {
		fmt.Printf("start %s\n", v)
		go func(v string) {
			for n := 0; n < 100; n++ {
				mutex.Lock()
				num, err := NewSeqNoGenerator(db, v).Next()
				if err != nil {
					fmt.Println(fmt.Sprintln(err))
				}
				fmt.Printf("%s --- %s\n", v, num)
				mutex.Unlock()
			}
			time.Sleep(2 * time.Second)
			fmt.Printf("end %s\n", v)
		}(v)
	}
	time.Sleep(2 * time.Second)
	fmt.Println("end")

Options

Logic ID

Logic ID represents a concrete business logic(like order,user).

Step

Incremental step. default is 1

StartWith

Starting number. default is 0

SeqFormat

go fmt format. default is %05d

About

go + gorm seqno generator (Serial number generator)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /