Class: Hadouken::Decorator

Inherits:
Object
  • Object
show all
Defined in:
lib/hadouken/decorator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#relationObject

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_sqlObject



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

#dataObject



34
35
36
# File 'lib/hadouken/decorator.rb', line 34

def data
  fail "#{self.class} does not implement #data"
end

#data_table_sqlObject



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_sqlObject



23
24
25
# File 'lib/hadouken/decorator.rb', line 23

def join_sql
  "LEFT OUTER JOIN \"#{table_name}\" ON #{join_condition}"
end

#valid?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/hadouken/decorator.rb', line 19

def valid?
  @@column_names.present?
end