Class: Hadouken::Decorator
- Inherits:
-
Object
- Object
- Hadouken::Decorator
- Defined in:
- lib/hadouken/decorator.rb
Instance Attribute Summary collapse
-
#relation ⇒ Object
Returns the value of attribute relation.
Class Method Summary collapse
Instance Method Summary collapse
- #columns_sql ⇒ Object
- #data ⇒ Object
- #data_table_sql ⇒ Object
-
#initialize(relation) ⇒ Decorator
constructor
A new instance of Decorator.
- #join_sql ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(relation) ⇒ Decorator
Returns a new instance of Decorator.
15 16 17 |
# File 'lib/hadouken/decorator.rb', line 15 def initialize(relation) @relation = relation end |
Instance Attribute Details
#relation ⇒ Object
Returns the value of attribute relation.
4 5 6 |
# File 'lib/hadouken/decorator.rb', line 4 def relation @relation end |
Class Method Details
.columns(column_names, *args) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/hadouken/decorator.rb', line 6 def columns(column_names, *args) @@column_names = column_names.is_a?(Array) ? column_names.map(&:to_s) : [] @@mapping = args[0].is_a?(Hash) ? args[0] : {} fail "Please specify column names for #{self.class}" if @@column_names.empty? fail "Please specify mapping of a columns for #{self.class}" if @@mapping.empty? end |
Instance Method Details
#columns_sql ⇒ Object
27 28 29 30 31 32 |
# File 'lib/hadouken/decorator.rb', line 27 def columns_sql columns_to_exclude = (@@mapping.keys+@@mapping.values).map(&:to_s) (@@column_names - columns_to_exclude).map do |column| "\"#{table_name}\".\"#{column.downcase}\" AS #{column}" end end |
#data ⇒ Object
34 35 36 |
# File 'lib/hadouken/decorator.rb', line 34 def data fail "#{self.class} does not implement #data" end |
#data_table_sql ⇒ Object
38 39 40 |
# File 'lib/hadouken/decorator.rb', line 38 def data_table_sql "WITH #{table_name}(#{@@column_names.join(', ')}) AS ( VALUES #{values_sql} ) " end |
#join_sql ⇒ Object
23 24 25 |
# File 'lib/hadouken/decorator.rb', line 23 def join_sql "LEFT OUTER JOIN \"#{table_name}\" ON #{join_condition}" end |
#valid? ⇒ Boolean
19 20 21 |
# File 'lib/hadouken/decorator.rb', line 19 def valid? @@column_names.present? end |