Class: Lotus::Model::Adapters::Auth0::LuceneQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/lotus/model/adapters/auth0/lucene_query.rb

Defined Under Namespace

Classes: Or, Where

Instance Method Summary collapse

Constructor Details

#initialize(_conditions) ⇒ LuceneQuery

Returns a new instance of LuceneQuery.



45
46
47
# File 'lib/lotus/model/adapters/auth0/lucene_query.rb', line 45

def initialize(_conditions)
  @conditions = _conditions
end

Instance Method Details

#conditionsObject



74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/lotus/model/adapters/auth0/lucene_query.rb', line 74

def conditions
  (@conditions || []).collect do |condition_type, condition|
    raise ArgumentError, 'condition is invalid' if condition.keys.count > 1 || condition.values.count > 1

    case condition_type
    when :where, :and
      Where.new(condition)
    when :or
      Or.new(condition)
    end
  end
end

#to_sObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/lotus/model/adapters/auth0/lucene_query.rb', line 49

def to_s
  previous_condition = nil
  result             = ''

  conditions.each do |condition|
    case previous_condition
    when Where
      if condition.is_a?(Or)
        result = "(#{result}) OR #{condition}"
      else
        result = "#{result} AND #{condition}"
      end
    when Or
      lhs, rhs = result.split('OR')
      result = [lhs, "(#{[condition, rhs].join(' AND ')})"].join(' OR ')
    else
      result = condition.to_s
    end

    previous_condition = condition
  end

  result
end