class RediSet::Constraint
Constants
- UNION_EXPIRATION_PERIOD
Attributes
qualities[R]
Public Class Methods
new(qualities:)
click to toggle source
# 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
Public Instance Methods
attribute()
click to toggle source
# File lib/redi_set/constraint.rb, line 19 def attribute qualities.first.attribute end
intersection_key()
click to toggle source
# File lib/redi_set/constraint.rb, line 27 def intersection_key if requires_union? union_key else qualities.first.key end end
requires_union?()
click to toggle source
# File lib/redi_set/constraint.rb, line 23 def requires_union? qualities.length > 1 end
store_union(redis)
click to toggle source
# 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
Private Instance Methods
union_key()
click to toggle source
# File lib/redi_set/constraint.rb, line 42 def union_key @_key ||= "#{RediSet.prefix}.union:#{SecureRandom.uuid}" end