prologic-msgbus/utils.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
}