33 lines
623 B
Go
33 lines
623 B
Go
package statevariables
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// toUUID converts a value to uuid.UUID if possible.
|
|
func toUUID(v interface{}) (uuid.UUID, error) {
|
|
switch val := v.(type) {
|
|
case uuid.UUID:
|
|
return val, nil
|
|
|
|
case string:
|
|
u, err := uuid.Parse(val)
|
|
if err != nil {
|
|
return uuid.UUID{}, fmt.Errorf("invalid UUID string %q: %v", val, err)
|
|
}
|
|
return u, nil
|
|
|
|
case []byte:
|
|
u, err := uuid.FromBytes(val)
|
|
if err != nil {
|
|
return uuid.UUID{}, fmt.Errorf("invalid UUID bytes: %v", err)
|
|
}
|
|
return u, nil
|
|
|
|
default:
|
|
return uuid.UUID{}, fmt.Errorf("cannot convert type %T to UUID", v)
|
|
}
|
|
}
|