Sha256: 516b7a0f8ff4586e3ffd270aab94193b2eca49b7cdb2c444fb98ce9a298b11e6

Contents?: true

Size: 1.02 KB

Versions: 9

Compression:

Stored size: 1.02 KB

Contents

module Picky

  module Backends

    class Redis

      module DirectlyManipulable

        attr_accessor :backend, :key

        def self.make backend, list, key
          list.extend DirectlyManipulable
          list.backend = backend
          list.key     = key
        end

        # TODO Current implementation is very brittle.
        #
        @@append_index = 0
        def << value
          super value
          backend.client.zadd "#{backend.namespace}:#{key}", (@@append_index+=1), value
          backend[key]
        end

        # TODO Current implementation is very brittle.
        #
        @@unshift_index = 0
        def unshift value
          super value
          backend.client.zadd "#{backend.namespace}:#{key}", (@@unshift_index-=1), value
          backend[key]
        end

        def delete value
          result = super value
          if result
            backend.client.zrem "#{backend.namespace}:#{key}", value # TODO if super(value) ?
          end
          result
        end
      end

    end

  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
picky-3.6.16 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.15 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.14 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.13 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.12 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.11 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.10 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.9 lib/picky/backends/redis/directly_manipulable.rb
picky-3.6.8 lib/picky/backends/redis/directly_manipulable.rb