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) ⇒ Hash
Processes a query string and returns a hash of its fields/values.
-
#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) ⇒ Hash
Processes a query string and returns a hash of its fields/values
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/muster/strategies/active_record.rb', line 34 def parse( query_string ) pagination = self.parse_pagination( query_string ) parameters = ActiveSupport::HashWithIndifferentAccess.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) ) parameters.regular_writer('pagination', pagination[:pagination].symbolize_keys) return parameters end |
#parse_order(query_string) ⇒ Array (protected)
Returns order by clauses for AR queries
77 78 79 80 81 82 |
# File 'lib/muster/strategies/active_record.rb', line 77 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
93 94 95 96 97 98 |
# File 'lib/muster/strategies/active_record.rb', line 93 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
61 62 63 64 65 66 |
# File 'lib/muster/strategies/active_record.rb', line 61 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
109 110 111 112 113 114 |
# File 'lib/muster/strategies/active_record.rb', line 109 def parse_where( query_string ) strategy = Muster::Strategies::FilterExpression.new(:field => :where) results = strategy.parse(query_string) return results[:where] || {} end |