diff --git a/core/util/util.go b/core/util/util.go index 7ea982e..44cacb8 100644 --- a/core/util/util.go +++ b/core/util/util.go @@ -3,6 +3,7 @@ package util import ( "crypto/rand" "encoding/hex" + "regexp" "time" ) @@ -44,3 +45,23 @@ func NewInviteId() (string, error) { return hex.EncodeToString(byteArray), nil } + +func NewUUID() string { + guid, err := NewGuid() + if err != nil { + // Fallback to timestamp-based UUID if random generation fails + return hex.EncodeToString([]byte(time.Now().Format("20060102150405"))) + } + return guid +} + +func IsValidUUID(uuid string) bool { + // Check if the string is a valid 32-character hex string (16 bytes * 2 hex chars) + if len(uuid) != 32 { + return false + } + + // Check if all characters are valid hex characters + matched, _ := regexp.MatchString("^[0-9a-f]{32}$", uuid) + return matched +}