class Rasti::DB::TypeConverters::Postgres

Constants

CONVERTERS

Public Class Methods

from_db(value) click to toggle source
# File lib/rasti/db/type_converters/postgres.rb, line 20
def from_db(value)
  converter = find_from_db_converter value.class
  converter ? converter.from_db(value) : value
end
to_db(db, collection_name, attribute_name, value) click to toggle source
# File lib/rasti/db/type_converters/postgres.rb, line 15
def to_db(db, collection_name, attribute_name, value)
  converter, type = find_to_db_converter_and_type db, collection_name, attribute_name
  converter ? converter.to_db(value, type) : value
end

Private Class Methods

find_from_db_converter(klass) click to toggle source
# File lib/rasti/db/type_converters/postgres.rb, line 49
def find_from_db_converter(klass)
  if !from_db_converters.key?(klass)
    from_db_converters[klass] = CONVERTERS.detect { |c| c.from_db? klass }
  end

  from_db_converters[klass]
end
find_to_db_converter_and_type(db, collection_name, attribute_name) click to toggle source
# File lib/rasti/db/type_converters/postgres.rb, line 35
def find_to_db_converter_and_type(db, collection_name, attribute_name)
  key = [db.opts[:database], collection_name]

  to_db_converters[key] ||= begin
    columns = Hash[db.schema(collection_name)]
    to_db_converters[key] = columns.each_with_object({}) do |(name, schema), hash|
      converter = CONVERTERS.detect { |c| c.to_db? schema[:db_type] }
      hash[name] = [converter, schema[:db_type]] if converter
    end
  end

  to_db_converters[key].fetch(attribute_name, [])
end
from_db_converters() click to toggle source
# File lib/rasti/db/type_converters/postgres.rb, line 27
def from_db_converters
  @from_db_converters ||= {}
end
to_db_converters() click to toggle source
# File lib/rasti/db/type_converters/postgres.rb, line 31
def to_db_converters
  @to_db_converters ||= {}
end