Module: QNE::QueryBuilder
- Included in:
- Agents, CustomerCategories, Customers, DefaultTaxCode, SalesInvoices, SalesOrders, StockLocations, Stocks, TaxCodes, Terms, UOMs
- Defined in:
- lib/query_builder.rb
Constant Summary collapse
- OPERATORS =
{ eq: { string: "COLUMN OPERATOR 'VALUE'", default: 'COLUMN OPERATOR VALUE' }, in: { default: 'COLUMN OPERATOR (VALUE)' } }.freeze
Instance Method Summary collapse
- #eq_query(queries) ⇒ Object
- #multi_query(queries) ⇒ Object
- #uri_query(queries) ⇒ Object
- #where(params) ⇒ Object
Instance Method Details
#eq_query(queries) ⇒ Object
15 16 17 18 |
# File 'lib/query_builder.rb', line 15 def eq_query(queries) filters = queries.map { |column, value| "#{column} eq '#{value}'" } filters.join(' and ') end |
#multi_query(queries) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/query_builder.rb', line 20 def multi_query(queries) filters = queries.map do |column, operators| operators.map do |operator, value| parse_query_by_operator(column, operator, value) end end filters.join(' and ') end |
#uri_query(queries) ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/query_builder.rb', line 30 def uri_query(queries) return filterables if queries.empty? filters = queries.map do |filter, value| { "$#{filter}" => value } end filterables.merge(filters.reduce(&:merge)) end |
#where(params) ⇒ Object
40 41 42 43 44 |
# File 'lib/query_builder.rb', line 40 def where(params) filterables['$filter'] = multi_query(params) self end |