Module: QNE::QueryBuilder

Constant Summary collapse

OPERATORS =
{
  eq: {
    string: "COLUMN OPERATOR 'VALUE'",
    default: 'COLUMN OPERATOR VALUE'
  },
  in: {
    default: 'COLUMN OPERATOR (VALUE)'
  }
}.freeze

Instance Method Summary collapse

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