package id import ( "encoding/binary" "github.com/google/uuid" ) // New creates a new binary ID (16 bytes) using UUID v4 func New() []byte { u := uuid.New() return u[:] } // ToUUID converts a binary ID back to UUID func ToUUID(b []byte) (uuid.UUID, error) { return uuid.FromBytes(b) } // String returns the string representation of a binary ID func String(b []byte) string { u, err := uuid.FromBytes(b) if err != nil { return "" } return u.String() } // FromString parses a string UUID into binary format func FromString(s string) ([]byte, error) { u, err := uuid.Parse(s) if err != nil { return nil, err } return u[:], nil } // Uint64ToBytes converts a uint64 to 8-byte slice func Uint64ToBytes(v uint64) []byte { b := make([]byte, 8) binary.BigEndian.PutUint64(b, v) return b } // BytesToUint64 converts 8-byte slice to uint64 func BytesToUint64(b []byte) uint64 { return binary.BigEndian.Uint64(b) }