Class: MR::ReadModel::Relation
- Inherits:
-
Object
- Object
- MR::ReadModel::Relation
- Defined in:
- lib/mr/read_model/querying.rb
Direct Known Subclasses
Constant Summary collapse
- FIND_EXCLUDED_TYPES =
[:where, :limit, :offset].freeze
Instance Attribute Summary collapse
- #find_attr ⇒ Object
-
#from_expression ⇒ Object
readonly
Returns the value of attribute from_expression.
-
#query_expressions ⇒ Object
readonly
Returns the value of attribute query_expressions.
-
#set_expressions ⇒ Object
readonly
Returns the value of attribute set_expressions.
Instance Method Summary collapse
- #build_for_all(params = nil) ⇒ Object
- #build_for_find(id, params = nil) ⇒ Object
- #build_sql(params = nil) ⇒ Object
- #from(record_class) ⇒ Object
- #from_record_class ⇒ Object
- #from_subquery(&block) ⇒ Object
-
#initialize ⇒ Relation
constructor
A new instance of Relation.
Constructor Details
#initialize ⇒ Relation
Returns a new instance of Relation.
167 168 169 170 171 |
# File 'lib/mr/read_model/querying.rb', line 167 def initialize @from_expression = NullFromExpression.new @query_expressions = [] @set_expressions = [] end |
Instance Attribute Details
#find_attr ⇒ Object
185 186 187 |
# File 'lib/mr/read_model/querying.rb', line 185 def find_attr @find_attr ||= self.from_expression.default_find_attr end |
#from_expression ⇒ Object (readonly)
Returns the value of attribute from_expression.
164 165 166 |
# File 'lib/mr/read_model/querying.rb', line 164 def from_expression @from_expression end |
#query_expressions ⇒ Object (readonly)
Returns the value of attribute query_expressions.
164 165 166 |
# File 'lib/mr/read_model/querying.rb', line 164 def query_expressions @query_expressions end |
#set_expressions ⇒ Object (readonly)
Returns the value of attribute set_expressions.
164 165 166 |
# File 'lib/mr/read_model/querying.rb', line 164 def set_expressions @set_expressions end |
Instance Method Details
#build_for_all(params = nil) ⇒ Object
198 199 200 |
# File 'lib/mr/read_model/querying.rb', line 198 def build_for_all(params = nil) build_ar_relation_for_all(self.query_expressions, params) end |
#build_for_find(id, params = nil) ⇒ Object
190 191 192 193 194 195 196 |
# File 'lib/mr/read_model/querying.rb', line 190 def build_for_find(id, params = nil) query_expressions = self.query_expressions.reject do |e| FIND_EXCLUDED_TYPES.include?(e.type) end ar_relation = build_ar_relation_for_all(query_expressions, params) ar_relation.where(self.find_attr => id).limit(1) end |
#build_sql(params = nil) ⇒ Object
202 203 204 |
# File 'lib/mr/read_model/querying.rb', line 202 def build_sql(params = nil) self.build_for_all(params).to_sql.strip end |
#from(record_class) ⇒ Object
173 174 175 |
# File 'lib/mr/read_model/querying.rb', line 173 def from(record_class) @from_expression = FromExpression.new(record_class) end |
#from_record_class ⇒ Object
181 182 183 |
# File 'lib/mr/read_model/querying.rb', line 181 def from_record_class self.from_expression.record_class end |
#from_subquery(&block) ⇒ Object
177 178 179 |
# File 'lib/mr/read_model/querying.rb', line 177 def from_subquery(&block) @from_expression = FromSubqueryExpression.new(&block) end |