41 lines
764 B
Go
41 lines
764 B
Go
package msgbus
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/oklog/ulid"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// SafeParseInt64 ...
|
|
func SafeParseInt64(s string, d int64) int64 {
|
|
n, e := strconv.ParseInt(s, 10, 64)
|
|
if e != nil {
|
|
return d
|
|
}
|
|
return n
|
|
}
|
|
|
|
// GenerateULID generates a new unique identifer
|
|
func GenerateULID() (string, error) {
|
|
entropy := rand.Reader
|
|
id, err := ulid.New(ulid.Timestamp(time.Now()), entropy)
|
|
if err != nil {
|
|
return "", fmt.Errorf("error generating ulid: %w", err)
|
|
}
|
|
|
|
return id.String(), nil
|
|
}
|
|
|
|
// MustGenerateULID generates a new unique identifer or fails
|
|
func MustGenerateULID() string {
|
|
ulid, err := GenerateULID()
|
|
if err != nil {
|
|
log.WithError(err).Fatal("error generating ulid")
|
|
}
|
|
return ulid
|
|
}
|