Generate ids for short-urls, really fast
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
.gitignore
LICENSE
README.md
encoding.go
worker.go

README.md

sanic

GoDoc

sanic is a clone of Twitter snowflake (the 2010 version), written in Golang. More specifically, the IdWorker section of snowflake.

Usage

To use sanic, either make a new worker, or select a premade one:

package main

import (
	"fmt"

	"github.com/ifo/sanic"
)

func main() {
	worker := sanic.NewWorker7()
	// equivalent to:
	// worker := sanic.NewWorker(0, 1451606400, 0, 10, 31, time.Second)

	id := worker.NextID()
	idString := worker.IDString(id)
	fmt.Println(id)       // e.g. 5292179457
	fmt.Println(idString) // e.g. "AUBwOwE"
}

Check out the examples for more.

Future Improvements

Many things are missing from sanic, so here's a TODO list of some of those things:

  • Tests: sanic has no tests. This is probably the next thing I should do.
  • More Random Looking IDs: Generated IDs don't change that much. Some creative bit manipulation could likely change this while still ensuring that IDs are unique (so long as you use the same bit manipulation each time).

License

sanic is ISC licensed. Check out the LICENSE file.