Class: RediSet::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/redi_set/query.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(constraints) ⇒ Query

Returns a new instance of Query.



14
15
16
# File 'lib/redi_set/query.rb', line 14

def initialize(constraints)
  @constraints = constraints
end

Instance Attribute Details

#constraintsObject (readonly)

Returns the value of attribute constraints.



3
4
5
# File 'lib/redi_set/query.rb', line 3

def constraints
  @constraints
end

Class Method Details

.from_hash(constraint_hash) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/redi_set/query.rb', line 5

def self.from_hash(constraint_hash)
  constraints = constraint_hash.map do |key, val|
    attribute = Attribute.new(name: key)
    qualities = Array(val).map { |v| Quality.new(attribute: attribute, name: v) }
    Constraint.new(qualities: qualities)
  end
  RediSet::Query.new(constraints)
end

Instance Method Details

#execute(redis) ⇒ Object



18
19
20
21
22
23
# File 'lib/redi_set/query.rb', line 18

def execute(redis)
  redis.multi do
    constraints.select(&:requires_union?).each { |c| c.store_union(redis) }
    redis.sinter(constraints.map(&:intersection_key))
  end.last
end