class Relix::OrderedIndex::QueryClause
Public Class Methods
new(redis, index)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 35 def initialize(redis, index) @redis, @index = redis, index @lt, @gt, @limit, @offset, @order = '+inf', '-inf', nil, nil, :asc end
Public Instance Methods
eq(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 60 def eq(value) lte(value) gte(value) end
gt(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 50 def gt(value) @gt = "(#{@index.score_for_value(value)}" self end
gte(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 55 def gte(value) @gt = @index.score_for_value(value) self end
limit(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 74 def limit(value) @limit = value self end
lookup()
click to toggle source
# File lib/relix/indexes/ordered.rb, line 91 def lookup command, score_1, score_2 = case @order when :desc then [:zrevrangebyscore, @lt, @gt] when :asc then [:zrangebyscore, @gt, @lt] end @redis.send(command, @index.sorted_set_name, score_1, score_2, limit: zrangebyscore_limit) end
lt(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 40 def lt(value) @lt = "(#{@index.score_for_value(value)}" self end
lte(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 45 def lte(value) @lt = @index.score_for_value(value) self end
offset(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 79 def offset(value) @offset = value self end
order(value)
click to toggle source
# File lib/relix/indexes/ordered.rb, line 65 def order(value) unless [:asc, :desc].include?(value) raise InvalidQueryOption.new("order must be :asc or :desc but was #{value.inspect}") end @order = value self end
zrangebyscore_limit()
click to toggle source
# File lib/relix/indexes/ordered.rb, line 84 def zrangebyscore_limit # zrangebyscore uses offset/count rather than start/stop like zrange offset, stop = @index.range_from_options(@redis, offset: @offset, limit: @limit) count = stop == -1 ? -1 : (stop - offset + 1) [offset, count] end