mirror of
https://github.com/Gouryella/drip.git
synced 2026-02-23 21:00:44 +00:00
32 lines
676 B
Go
32 lines
676 B
Go
package utils
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"time"
|
|
)
|
|
|
|
// GenerateID generates a random unique ID
|
|
func GenerateID() string {
|
|
b := make([]byte, 16)
|
|
if _, err := rand.Read(b); err != nil {
|
|
// Fallback to timestamp-based ID if crypto/rand fails
|
|
return generateFallbackID()
|
|
}
|
|
return hex.EncodeToString(b)
|
|
}
|
|
|
|
// GenerateShortID generates a shorter random ID (8 chars)
|
|
func GenerateShortID() string {
|
|
b := make([]byte, 4)
|
|
if _, err := rand.Read(b); err != nil {
|
|
return generateFallbackID()[:8]
|
|
}
|
|
return hex.EncodeToString(b)
|
|
}
|
|
|
|
func generateFallbackID() string {
|
|
// Simple fallback using timestamp
|
|
return hex.EncodeToString([]byte(time.Now().String()))
|
|
}
|