|
@@ -86,6 +86,8 @@ func Unmarshal(info *TypeInfo, data []byte, value interface{}) error {
|
|
|
return unmarshalMap(info, data, value)
|
|
return unmarshalMap(info, data, value)
|
|
|
case TypeTimeUUID:
|
|
case TypeTimeUUID:
|
|
|
return unmarshalTimeUUID(info, data, value)
|
|
return unmarshalTimeUUID(info, data, value)
|
|
|
|
|
+ case TypeUUID:
|
|
|
|
|
+ return unmarshalUUID(info, data, value)
|
|
|
case TypeInet:
|
|
case TypeInet:
|
|
|
return unmarshalInet(info, data, value)
|
|
return unmarshalInet(info, data, value)
|
|
|
}
|
|
}
|
|
@@ -912,13 +914,19 @@ func marshalUUID(info *TypeInfo, value interface{}) ([]byte, error) {
|
|
|
return nil, marshalErrorf("can not marshal %T into %s", value, info)
|
|
return nil, marshalErrorf("can not marshal %T into %s", value, info)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func unmarshalTimeUUID(info *TypeInfo, data []byte, value interface{}) error {
|
|
|
|
|
|
|
+func unmarshalUUID(info *TypeInfo, data []byte, value interface{}) error {
|
|
|
switch v := value.(type) {
|
|
switch v := value.(type) {
|
|
|
case Unmarshaler:
|
|
case Unmarshaler:
|
|
|
return v.UnmarshalCQL(info, data)
|
|
return v.UnmarshalCQL(info, data)
|
|
|
case *uuid.UUID:
|
|
case *uuid.UUID:
|
|
|
*v = uuid.FromBytes(data)
|
|
*v = uuid.FromBytes(data)
|
|
|
return nil
|
|
return nil
|
|
|
|
|
+ }
|
|
|
|
|
+ return unmarshalErrorf("can not unmarshal %s into %T", info, value)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func unmarshalTimeUUID(info *TypeInfo, data []byte, value interface{}) error {
|
|
|
|
|
+ switch v := value.(type) {
|
|
|
case *time.Time:
|
|
case *time.Time:
|
|
|
id := uuid.FromBytes(data)
|
|
id := uuid.FromBytes(data)
|
|
|
if id.Version() != 1 {
|
|
if id.Version() != 1 {
|
|
@@ -926,8 +934,9 @@ func unmarshalTimeUUID(info *TypeInfo, data []byte, value interface{}) error {
|
|
|
}
|
|
}
|
|
|
*v = id.Time()
|
|
*v = id.Time()
|
|
|
return nil
|
|
return nil
|
|
|
|
|
+ default:
|
|
|
|
|
+ return unmarshalUUID(info, data, value)
|
|
|
}
|
|
}
|
|
|
- return unmarshalErrorf("can not unmarshal %s into %T", info, value)
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func unmarshalInet(info *TypeInfo, data []byte, value interface{}) error {
|
|
func unmarshalInet(info *TypeInfo, data []byte, value interface{}) error {
|