Sha256: c567c85b7a15bc942ac5bb9bab461f068e197b47558f9215af805230fe965db6

Contents?: true

Size: 1.08 KB

Versions: 48

Compression:

Stored size: 1.08 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

        # THINK Current implementation is very brittle.
        #
        @@append_index = 0
        def << value
          super
          zadd value, @@append_index += 1
        end

        # THINK Current implementation is very brittle.
        #
        @@unshift_index = 0
        def unshift value
          super
          zadd value, @@unshift_index -= 1
        end
        
        # Deletes the value.
        #
        def delete value
          result = super value
          backend.client.zrem "#{backend.namespace}:#{key}", value if result
          result
        end
        
        # Z-Adds a value with the given index.
        #
        def zadd value, index
          backend.client.zadd "#{backend.namespace}:#{key}", index, value
          backend[key]
        end
        
      end

    end

  end

end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
picky-4.31.3 lib/picky/backends/redis/directly_manipulable.rb
picky-4.31.2 lib/picky/backends/redis/directly_manipulable.rb
picky-4.31.1 lib/picky/backends/redis/directly_manipulable.rb
picky-4.31.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.30.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.29.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.28.1 lib/picky/backends/redis/directly_manipulable.rb
picky-4.27.1 lib/picky/backends/redis/directly_manipulable.rb
picky-4.27.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.26.2 lib/picky/backends/redis/directly_manipulable.rb
picky-4.26.1 lib/picky/backends/redis/directly_manipulable.rb
picky-4.26.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.25.3 lib/picky/backends/redis/directly_manipulable.rb
picky-4.25.2 lib/picky/backends/redis/directly_manipulable.rb
picky-4.25.1 lib/picky/backends/redis/directly_manipulable.rb
picky-4.25.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.24.0 lib/picky/backends/redis/directly_manipulable.rb
picky-4.23.2 lib/picky/backends/redis/directly_manipulable.rb
picky-4.23.1 lib/picky/backends/redis/directly_manipulable.rb
picky-4.23.0 lib/picky/backends/redis/directly_manipulable.rb