package utils

import (
	"fmt"
	"hash/fnv"

	"github.com/google/uuid"
	short "github.com/lithammer/shortuuid"
)

func GenerateID() string {
	// introduce uuid v7 as it's time-ordered, and we're using uuid as primary key in mysql
	return uuid.Must(uuid.NewV7()).String()
}

func ShortID() string {
	return short.New()
}

func FnvHash(raw string) string {
	hash := fnv.New32()
	// fnv.New32().Write() never return error
	_, _ = hash.Write([]byte(raw))
	return fmt.Sprintf("%x", hash.Sum32())
}
