sid.go 596 B

1234567891011121314151617181920212223242526272829
  1. package sid
  2. import (
  3. "github.com/go-nunu/nunu-layout-advanced/pkg/helper/convert"
  4. "github.com/pkg/errors"
  5. "github.com/sony/sonyflake"
  6. )
  7. type Sid struct {
  8. sf *sonyflake.Sonyflake
  9. }
  10. func NewSid() *Sid {
  11. sf := sonyflake.NewSonyflake(sonyflake.Settings{})
  12. if sf == nil {
  13. panic("sonyflake not created")
  14. }
  15. return &Sid{sf}
  16. }
  17. func (s Sid) GenString() (string, error) {
  18. id, err := s.sf.NextID()
  19. if err != nil {
  20. return "", errors.Wrap(err, "failed to generate sonyflake ID")
  21. }
  22. return convert.IntToBase62(int(id)), nil
  23. }
  24. func (s Sid) GenUint64() (uint64, error) {
  25. return s.sf.NextID()
  26. }