Class: Muster::Strategies::ActiveRecord
- Defined in:
- lib/muster/strategies/active_record.rb
Overview
Query string parsing strategy that outputs ActiveRecord Query compatible options
Instance Attribute Summary
Attributes inherited from Rack
Instance Method Summary collapse
-
#parse(query_string) ⇒ Muster::Results
Processes a query string and returns a hash of its fields/values.
-
#parse_includes(query_string) ⇒ Hash
protected
Returns includes clauses for AR queries.
-
#parse_joins(query_string) ⇒ Hash
protected
Returns joins clauses for AR queries.
-
#parse_order(query_string) ⇒ Array
protected
Returns order by clauses for AR queries.
-
#parse_pagination(query_string) ⇒ Hash
protected
Returns pagination information for AR queries.
-
#parse_select(query_string) ⇒ Array
protected
Returns select clauses for AR queries.
-
#parse_where(query_string) ⇒ Hash
protected
Returns where clauses for AR queries.
Methods inherited from Rack
#fields_to_parse, #initialize, #parse_query_string
Constructor Details
This class inherits a constructor from Muster::Strategies::Rack
Instance Method Details
#parse(query_string) ⇒ Muster::Results
Processes a query string and returns a hash of its fields/values
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/muster/strategies/active_record.rb', line 36 def parse( query_string ) pagination = self.parse_pagination( query_string ) parameters = Muster::Results.new( :select => self.parse_select(query_string), :order => self.parse_order(query_string), :limit => pagination[:limit], :offset => pagination[:offset], :where => self.parse_where(query_string), :joins => self.parse_joins(query_string), :includes => self.parse_includes(query_string) ) parameters.regular_writer('pagination', pagination[:pagination].symbolize_keys) return parameters end |
#parse_includes(query_string) ⇒ Hash (protected)
Returns includes clauses for AR queries
145 146 147 148 149 150 |
# File 'lib/muster/strategies/active_record.rb', line 145 def parse_includes( query_string ) strategy = Muster::Strategies::JoinsExpression.new(:field => :includes) results = strategy.parse(query_string) return results[:includes] || {} end |
#parse_joins(query_string) ⇒ Hash (protected)
Returns joins clauses for AR queries
129 130 131 132 133 134 |
# File 'lib/muster/strategies/active_record.rb', line 129 def parse_joins( query_string ) strategy = Muster::Strategies::JoinsExpression.new(:field => :joins) results = strategy.parse(query_string) return results[:joins] || {} end |
#parse_order(query_string) ⇒ Array (protected)
Returns order by clauses for AR queries
81 82 83 84 85 86 |
# File 'lib/muster/strategies/active_record.rb', line 81 def parse_order( query_string ) strategy = Muster::Strategies::SortExpression.new(:field => :order) results = strategy.parse(query_string) return Array.wrap( results[:order] ) end |
#parse_pagination(query_string) ⇒ Hash (protected)
Returns pagination information for AR queries
97 98 99 100 101 102 |
# File 'lib/muster/strategies/active_record.rb', line 97 def parse_pagination( query_string ) strategy = Muster::Strategies::Pagination.new(:fields => [:pagination, :limit, :offset]) results = strategy.parse(query_string) return results end |
#parse_select(query_string) ⇒ Array (protected)
Returns select clauses for AR queries
65 66 67 68 69 70 |
# File 'lib/muster/strategies/active_record.rb', line 65 def parse_select( query_string ) strategy = Muster::Strategies::Hash.new(:field => :select) results = strategy.parse(query_string) return Array.wrap( results[:select] ) end |
#parse_where(query_string) ⇒ Hash (protected)
Returns where clauses for AR queries
113 114 115 116 117 118 |
# File 'lib/muster/strategies/active_record.rb', line 113 def parse_where( query_string ) strategy = Muster::Strategies::FilterExpression.new(:field => :where) results = strategy.parse(query_string) return results[:where] || {} end |