Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/btnguyen2k/olaf
Twitter Snowflake implemented in Go
https://github.com/btnguyen2k/olaf
Last synced: about 1 month ago
JSON representation
Twitter Snowflake implemented in Go
- Host: GitHub
- URL: https://github.com/btnguyen2k/olaf
- Owner: btnguyen2k
- License: mit
- Created: 2019-01-03T13:31:10.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-10T08:59:20.000Z (over 5 years ago)
- Last Synced: 2024-08-03T19:10:00.574Z (5 months ago)
- Language: Go
- Size: 29.3 KB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go-extra - olaf - 01-03T13:31:10Z|2019-04-10T08:59:20Z| (Utilities / Fail injection)
README
**Since 10-Apr-2019: Olaf has been merged as a sub-module of [btnguyen2k/consu](https://github.com/btnguyen2k/consu)**
# Olaf
[![Go Report Card](https://goreportcard.com/badge/github.com/btnguyen2k/olaf)](https://goreportcard.com/report/github.com/btnguyen2k/olaf)
[![cover.run](https://cover.run/go/github.com/btnguyen2k/olaf.svg?style=flat&tag=golang-1.10)](https://cover.run/go?tag=golang-1.10&repo=github.com%2Fbtnguyen2k%2Folaf)
[![GoDoc](https://godoc.org/github.com/btnguyen2k/olaf?status.svg)](https://godoc.org/github.com/btnguyen2k/olaf)
[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go)Golang implementation of Twitter Snowflake.
## Getting Started
### Install Package
```
go get github.com/btnguyen2k/olaf
```### Usage
```go
package mainimport (
"fmt"
"github.com/btnguyen2k/olaf"
)func main() {
// use default epoch
o := olaf.NewOlaf(1981)//use custom epoch (note: epoch is in milliseconds)
//o := olaf.NewOlafWithEpoch(103, 1546543604123)id64 := o.Id64()
id64Hex := o.Id64Hex()
id64Ascii := o.Id64Ascii()
fmt.Println("ID 64-bit (int) : ", id64, " / Timestamp: ", o.ExtractTime64(id64))
fmt.Println("ID 64-bit (hex) : ", id64Hex, " / Timestamp: ", o.ExtractTime64Hex(id64Hex))
fmt.Println("ID 64-bit (ascii) : ", id64Ascii, " / Timestamp: ", o.ExtractTime64Ascii(id64Ascii))id128 := o.Id128()
id128Hex := o.Id128Hex()
id128Ascii := o.Id128Ascii()
fmt.Println("ID 128-bit (int) : ", id128.String(), " / Timestamp: ", o.ExtractTime128(id128))
fmt.Println("ID 128-bit (hex) : ", id128Hex, " / Timestamp: ", o.ExtractTime128Hex(id128Hex))
fmt.Println("ID 128-bit (ascii): ", id128Ascii, " / Timestamp: ", o.ExtractTime128Ascii(id128Ascii))
}
```## Document - GoDoc
See [GoDoc](https://godoc.org/github.com/btnguyen2k/olaf).
## History
Current version: `0.1.0`.
### 2019-01-03 - v0.1.0
First release:
- Generate 64-bit and 128-bit IDs:
- Support formats: `integer`, `hex-string` (base 16) and `ascii-string` (base 36).
- Custom epoch (64-bit ID only).
- Extract the time metadata from generated ID.