32 lines
639 B
Go
32 lines
639 B
Go
package snowf
|
|
|
|
import (
|
|
dciConfig "chain-dci/config"
|
|
"chain-dci/pkg/app"
|
|
"github.com/bwmarrin/snowflake"
|
|
"github.com/google/wire"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
var Provider = wire.NewSet(NewSf)
|
|
|
|
func NewSf() *snowflake.Node {
|
|
var err error
|
|
var st time.Time
|
|
nodeNum, _ := strconv.Atoi(dciConfig.Data.SnowFlake.NodeNum)
|
|
st, err = time.Parse("2006-01-02", dciConfig.Data.SnowFlake.StartTime)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
snowflake.Epoch = st.UnixNano() / 1000000
|
|
node, errS := snowflake.NewNode(int64(nodeNum))
|
|
if errS != nil {
|
|
panic(errS)
|
|
}
|
|
return node
|
|
}
|
|
func GenID() int64 {
|
|
return app.ModuleClients.SfNode.Generate().Int64()
|
|
}
|