Class: PolyId::BinaryUuidType

Inherits:
ActiveModel::Type::Binary
  • Object
show all
Defined in:
lib/polyid/binary_uuid_type.rb

Instance Method Summary collapse

Instance Method Details

#cast(value) ⇒ Object



3
4
5
6
7
8
9
10
11
# File 'lib/polyid/binary_uuid_type.rb', line 3

def cast(value)
  return if value.nil?

  if binary_uuid_bytes?(value)
    deserialize(value)
  else
    normalize_uuid(value)
  end
end

#deserialize(value) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/polyid/binary_uuid_type.rb', line 24

def deserialize(value)
  return if value.nil?

  bytes = value.is_a?(Data) ? value.to_s : value
  return bytes unless binary_uuid_bytes?(bytes)

  bytes.unpack("H8H4H4H4H12").join("-")
end

#serialize(value) ⇒ Object



13
14
15
16
17
18
# File 'lib/polyid/binary_uuid_type.rb', line 13

def serialize(value)
  return if value.nil?

  bytes = binary_uuid_bytes?(value) ? value : pack_uuid(normalize_uuid(value))
  super(bytes)
end

#serialize_cast_value(value) ⇒ Object



20
21
22
# File 'lib/polyid/binary_uuid_type.rb', line 20

def serialize_cast_value(value)
  serialize(value)
end