Module: Upvote

Extended by:
Upvote, Configuration
Included in:
Upvote
Defined in:
lib/upvote.rb,
lib/upvote/version.rb,
lib/upvote/configuration.rb

Defined Under Namespace

Modules: Configuration

Constant Summary collapse

VERSION =
'0.0.1'

Instance Method Summary collapse

Methods included from Configuration

default_id_method, default_id_method=, id_method, id_methods, redis, redis=

Instance Method Details

#count(entity) ⇒ Object



25
26
27
# File 'lib/upvote.rb', line 25

def count(entity)
  redis.zcard set_key(entity)
end

#create(subject, target, execute: true) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/upvote.rb', line 12

def create(subject, target, execute: true)
  creation = ->() {
    redis.zadd set_key(subject), Time.now.to_f, key(target)
    redis.zadd set_key(target),  Time.now.to_f, key(subject)
  }

  execute ? redis.multi { creation.call } : creation
end

#exist?(subject, target) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/upvote.rb', line 21

def exist?(subject, target)
  redis.zscore(set_key(target), key(subject)).present?
end

#multi_count(entities) ⇒ Object



43
44
45
# File 'lib/upvote.rb', line 43

def multi_count(entities)
  redis.multi { entities.each &method(:count) }
end

#multi_create(upvotes) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/upvote.rb', line 33

def multi_create(upvotes)
  redis.multi do
    upvotes.each do |subject, *targets|
      targets.each do |target|
        create(subject, target, execute: false).call
      end
    end
  end
end

#multi_voters(entities, start: 0, offset: -1)) ⇒ Object



47
48
49
50
51
# File 'lib/upvote.rb', line 47

def multi_voters(entities, start: 0, offset: -1)
  redis.multi {
    entities.each { |e| voters entities, start: start, offset: offset }
  }
end

#voters(entity, start: 0, offset: -1)) ⇒ Object



29
30
31
# File 'lib/upvote.rb', line 29

def voters(entity, start: 0, offset: -1)
  redis.zrevrange set_key(entity), start, offset
end