Class: MR::ReadModel::JoinSubquery

Inherits:
Object
  • Object
show all
Includes:
AliasSubquery
Defined in:
lib/mr/read_model/subquery.rb

Constant Summary collapse

DEFAULT_JOIN_SQL =
'JOIN'.freeze
JOIN_SQL =
Hash.new(DEFAULT_JOIN_SQL).tap do |h|
  h[:inner] = 'INNER JOIN'.freeze
  h[:left]  = 'LEFT OUTER JOIN'.freeze
  h[:right] = 'RIGHT OUTER JOIN'.freeze
  h[:full]  = 'FULL OUTER JOIN'.freeze
end.freeze

Instance Attribute Summary collapse

Attributes included from Subquery

#read_model_class

Instance Method Summary collapse

Methods included from AliasSubquery

#alias_sql, #as

Methods included from Subquery

#read_model

Constructor Details

#initialize(type, &block) ⇒ JoinSubquery

Returns a new instance of JoinSubquery.



77
78
79
80
# File 'lib/mr/read_model/subquery.rb', line 77

def initialize(type, &block)
  @join_sql = JOIN_SQL[type]
  super(&block)
end

Instance Attribute Details

#join_sqlObject (readonly)

Returns the value of attribute join_sql.



75
76
77
# File 'lib/mr/read_model/subquery.rb', line 75

def join_sql
  @join_sql
end

Instance Method Details

#build_sql(params = nil) ⇒ Object



90
91
92
# File 'lib/mr/read_model/subquery.rb', line 90

def build_sql(params = nil)
  "#{self.join_sql} #{super} #{self.conditions_sql}".strip
end

#conditions_sqlObject



82
83
84
# File 'lib/mr/read_model/subquery.rb', line 82

def conditions_sql
  @conditions_sql ||= ""
end

#on(conditions) ⇒ Object



86
87
88
# File 'lib/mr/read_model/subquery.rb', line 86

def on(conditions)
  @conditions_sql = "ON #{conditions}"
end