Module: Protoable::Convert::ClassMethods

Defined in:
lib/protobuf/activerecord/protoable/convert.rb

Instance Method Summary collapse

Instance Method Details

#_protobuf_convert_attributes_to_fields(key, value) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 20

def _protobuf_convert_attributes_to_fields(key, value)
  return value if value.nil?

  value = case
          when _protobuf_attribute_converters.has_key?(key.to_sym) then
            _protobuf_attribute_converters[key.to_sym].call(value)
          when _protobuf_date_column?(key) then
            value.to_time.to_i
          when _protobuf_datetime_column?(key) then
            value.to_i
          when _protobuf_time_column?(key) then
            value.to_i
          when _protobuf_timestamp_column?(key) then
            value.to_i
          else
            value
          end

  return value
end

#_protobuf_convert_fields_to_columns(key, value) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 41

def _protobuf_convert_fields_to_columns(key, value)
  return value if value.nil?

  value = case
          when _protobuf_field_converters.has_key?(key.to_sym) then
            _protobuf_field_converters[key.to_sym].call(value)
          when _protobuf_date_column?(key) then
            convert_int64_to_date(value)
          when _protobuf_datetime_column?(key) then
            convert_int64_to_datetime(value)
          when _protobuf_time_column?(key) then
            convert_int64_to_time(value)
          when _protobuf_timestamp_column?(key) then
            convert_int64_to_time(value)
          else
            value
          end

  return value
end

#_protobuf_date_column?(key) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 62

def _protobuf_date_column?(key)
  _protobuf_column_types.fetch(:date, false) && _protobuf_column_types[:date].include?(key)
end

#_protobuf_datetime_column?(key) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 66

def _protobuf_datetime_column?(key)
  _protobuf_column_types.fetch(:datetime, false) && _protobuf_column_types[:datetime].include?(key)
end

#_protobuf_time_column?(key) ⇒ Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 70

def _protobuf_time_column?(key)
  _protobuf_column_types.fetch(:time, false) && _protobuf_column_types[:time].include?(key)
end

#_protobuf_timestamp_column?(key) ⇒ Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 74

def _protobuf_timestamp_column?(key)
  _protobuf_column_types.fetch(:timestamp, false) && _protobuf_column_types[:timestamp].include?(key)
end

#convert_int64_to_date(int64) ⇒ Object



12
13
14
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 12

def convert_int64_to_date(int64)
  convert_int64_to_time(int64).utc.to_date
end

#convert_int64_to_datetime(int64) ⇒ Object



16
17
18
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 16

def convert_int64_to_datetime(int64)
  convert_int64_to_time(int64).to_datetime
end

#convert_int64_to_time(int64) ⇒ Object



8
9
10
# File 'lib/protobuf/activerecord/protoable/convert.rb', line 8

def convert_int64_to_time(int64)
  Time.at(int64.to_i)
end