Class: WhereRow::QueryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/where_row/query_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(relation, keys, operator, values) ⇒ QueryBuilder

Returns a new instance of QueryBuilder.



3
4
5
6
7
8
# File 'lib/where_row/query_builder.rb', line 3

def initialize(relation, keys, operator, values)
  @relation = relation
  @keys = keys.map(&:to_s)
  @operator = operator
  @values = values
end

Instance Method Details

#buildObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/where_row/query_builder.rb', line 21

def build
  return relation if keys.blank?

  case operator
  when :eq
    validate_single(values)
    relation.where(keys.zip(values).to_h)
  when :not_eq
    validate_single(values)
    build_not_eq_clause(relation, keys.zip(values))
  when :in
    validate_multiple(values)
    build_in_clause
  when :not_in
    validate_multiple(values)
    build_not_in_clause
  when *COMPARISON_OPERATORS
    validate_single(values)
    build_comparison_clause
  else
    raise ArgumentError, 'Invalid operator'
  end
end