Class: RediSet::Constraint

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

Constant Summary collapse

UNION_EXPIRATION_PERIOD =

seconds

60

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(qualities:) ⇒ Constraint

Returns a new instance of Constraint.



7
8
9
10
11
12
13
14
15
# File 'lib/redi_set/constraint.rb', line 7

def initialize(qualities:)
  @qualities = qualities

  if qualities.length < 1
    raise ArgumentError, "A constraint must have at least one quality"
  elsif qualities.map(&:attribute).uniq.length != 1
    raise ArgumentError, "All qualities in a constraint must have matching attributes"
  end
end

Instance Attribute Details

#qualitiesObject (readonly)

Returns the value of attribute qualities.



17
18
19
# File 'lib/redi_set/constraint.rb', line 17

def qualities
  @qualities
end

Instance Method Details

#attributeObject



19
20
21
# File 'lib/redi_set/constraint.rb', line 19

def attribute
  qualities.first.attribute
end

#intersection_keyObject



27
28
29
30
31
32
33
# File 'lib/redi_set/constraint.rb', line 27

def intersection_key
  if requires_union?
    union_key
  else
    qualities.first.key
  end
end

#requires_union?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/redi_set/constraint.rb', line 23

def requires_union?
  qualities.length > 1
end

#store_union(redis) ⇒ Object



35
36
37
38
# File 'lib/redi_set/constraint.rb', line 35

def store_union(redis)
  redis.sunionstore union_key, qualities.map(&:key)
  redis.expire(union_key, UNION_EXPIRATION_PERIOD)
end