Sha256: 13830900934487256f01555aa7a64b2335bf1165d127c5971807154055d91f11

Contents?: true

Size: 728 Bytes

Versions: 2

Compression:

Stored size: 728 Bytes

Contents

require 'couchbase_doc_store'

module CouchbaseStructures
  class Stack
    include CouchbaseDocStore

    def initialize(key)
      @key = key
      @top_index_key = "#{key}::stack::top"
      initialize_document(@top_index_key, 0)
      self
    end

    def push(value)
      new_top_index = increase_atomic_count(@top_index_key)
      create_document("#{key}::stack::#{new_top_index}", value)
      self
    end

    def pop()
      old_top_index = get_document(@top_index_key)
      decrease_atomic_count(@top_index_key)

      doc = get_document("#{key}::stack::#{old_top_index}")
      delete_document("#{key}::stack::#{old_top_index}")
      doc
    end

    def size
      get_document(@top_index_key)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
couchbase-structures-0.0.4 lib/couchbase_structures/stack.rb
couchbase-structures-0.0.2 lib/couchbase_structures/stack.rb