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
#property, #property_name, #repository
Instance Method Summary
collapse
#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
|