class Depository::Serialize::Unpacker

Public Class Methods

new(config, attrs) click to toggle source
# File lib/depository/serialize.rb, line 61
def initialize(config, attrs)
  self.config = config
  self.attrs = attrs
end

Public Instance Methods

call() click to toggle source
# File lib/depository/serialize.rb, line 66
def call
  columns.select { |column, opts|
    opts[:type] == :datetime && ![nil, 0].include?(attrs[column])
  }.each { |column, opts| attrs[column] = drop_usecs(attrs[column]) }

  columns.select { |column, opts|
    opts[:type] == :date && ![nil, 0].include?(attrs[column])
  }.each { |column, opts|
    attrs[column] = Date.parse(attrs[column]) if attrs[column].is_a?(String)
  }

  columns.select { |column, opts|
    !attrs[column].nil? && opts[:type] == :boolean
  }.each { |column, opts| attrs[column] = [1, true].include?(attrs[column]) }

  config.unpacker.call(attrs)
  attrs
end
columns() click to toggle source
# File lib/depository/serialize.rb, line 95
def columns
  @columns ||= Depository::Database.db.schema(config.db)
end
drop_usecs(time) click to toggle source
# File lib/depository/serialize.rb, line 85
def drop_usecs(time)
  if time.is_a?(String)
    Time.at(Time.parse(time).to_i)
  elsif time.is_a?(DateTime)
    Time.at(time.to_time.to_i)
  else
    Time.at(time.to_i)
  end
end