package ulid

import (
	"math/rand"
	"time"

	"github.com/oklog/ulid"
)

type UlidGenerator struct {
	time    time.Time
	entropy *rand.Rand
}

func NewGenerator() (*UlidGenerator, error) {
	t := time.Time{}
	ug := &UlidGenerator{
		time:    t,
		entropy: rand.New(rand.NewSource(t.UnixNano())),
	}
	return ug, nil
}

func (ug *UlidGenerator) New() string {
	id := ulid.MustNew(ulid.Timestamp(time.Now()), ug.entropy)
	return id.String()
}
