|
@@ -922,39 +922,32 @@ func marshalUUID(info *TypeInfo, value interface{}) ([]byte, error) {
|
|
|
|
|
|
|
|
func unmarshalUUID(info *TypeInfo, data []byte, value interface{}) error {
|
|
func unmarshalUUID(info *TypeInfo, data []byte, value interface{}) error {
|
|
|
if data == nil {
|
|
if data == nil {
|
|
|
- return nil
|
|
|
|
|
|
|
+ switch v := value.(type) {
|
|
|
|
|
+ case *string:
|
|
|
|
|
+ *v = ""
|
|
|
|
|
+ case *[]byte:
|
|
|
|
|
+ *v = nil
|
|
|
|
|
+ case *UUID:
|
|
|
|
|
+ *v = UUID{}
|
|
|
|
|
+ default:
|
|
|
|
|
+ return unmarshalErrorf("can not unmarshal X %s into %T", info, value)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ u, err := UUIDFromBytes(data)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return unmarshalErrorf("Unable to parse UUID: %s", err)
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
switch v := value.(type) {
|
|
switch v := value.(type) {
|
|
|
case *string:
|
|
case *string:
|
|
|
- u, err := UUIDFromBytes(data)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return unmarshalErrorf("Unable to parse UUID: %s", err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
*v = u.String()
|
|
*v = u.String()
|
|
|
return nil
|
|
return nil
|
|
|
case *[]byte:
|
|
case *[]byte:
|
|
|
- u, err := UUIDFromBytes(data)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return unmarshalErrorf("Unable to parse UUID: %s", err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- b := [16]byte(u)
|
|
|
|
|
-
|
|
|
|
|
- *v = b[:]
|
|
|
|
|
|
|
+ *v = u[:]
|
|
|
return nil
|
|
return nil
|
|
|
case *UUID:
|
|
case *UUID:
|
|
|
- u, err := UUIDFromBytes(data)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return unmarshalErrorf("Unable to parse UUID: %s", err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
*v = u
|
|
*v = u
|
|
|
-
|
|
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
return unmarshalErrorf("can not unmarshal X %s into %T", info, value)
|
|
return unmarshalErrorf("can not unmarshal X %s into %T", info, value)
|
|
|
}
|
|
}
|
|
|
|
|
|