Class: Hold::Sequel::PropertyMapper::TransformedColumn

Inherits:
Column show all
Defined in:
lib/hold/sequel/property_mapper/transformed_column.rb

Overview

A column mapper which allows you to supply a customized pair of transformations between the sequel values persisted in the db, and the values used for the outward-facing model property

Instance Attribute Summary

Attributes inherited from Column

#column_alias, #column_name, #column_qualified, #columns_aliases_and_tables_for_select, #table

Attributes inherited from Hold::Sequel::PropertyMapper

#property, #property_name, #repository

Instance Method Summary collapse

Methods inherited from Hold::Sequel::PropertyMapper

#columns_aliases_and_tables_for_select, #load_values, #post_delete, #post_insert, #post_update, #pre_delete, #pre_insert, #pre_update, setter_dependencies_for

Constructor Details

#initialize(repo, property_name, options) ⇒ TransformedColumn

Returns a new instance of TransformedColumn.



6
7
8
9
10
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 6

def initialize(repo, property_name, options)
  super(repo, property_name, options)
  @to_sequel = options[:to_sequel]
  @from_sequel = options[:from_sequel]
end

Instance Method Details

#build_insert_row(entity, table, row, id = nil) ⇒ Object Also known as: build_update_row



24
25
26
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 24

def build_insert_row(entity, table, row, id=nil)
  row[@column_name] = to_sequel(entity[@property_name]) if @table == table && entity.has_key?(@property_name)
end

#from_sequel(value) ⇒ Object



16
17
18
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 16

def from_sequel(value)
  @from_sequel.call(value)
end

#load_value(row, id = nil, properties = nil) ⇒ Object



20
21
22
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 20

def load_value(row, id=nil, properties=nil)
  from_sequel(row[@column_alias])
end

#make_filter(value, columns_mapped_to = nil) ⇒ Object



30
31
32
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 30

def make_filter(value, columns_mapped_to=nil)
  {@column_qualified => to_sequel(value)}
end

#make_multi_filter(values, columns_mapped_to = nil) ⇒ Object



34
35
36
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 34

def make_multi_filter(values, columns_mapped_to=nil)
  {@column_qualified => values.map {|v| to_sequel(v)}}
end

#to_sequel(value) ⇒ Object



12
13
14
# File 'lib/hold/sequel/property_mapper/transformed_column.rb', line 12

def to_sequel(value)
  @to_sequel.call(value)
end