Sha256: 90c151e8f8134d2dea242fb18c3c98d8f6a5b1d680b85ad5671f6885d1ac7676

Contents?: true

Size: 817 Bytes

Versions: 1

Compression:

Stored size: 817 Bytes

Contents

require 'daybreak'

module Docket
  class Storage

    attr_accessor :db

    def initialize filename
      @db = Daybreak::DB.new filename
    end

    def save key, value, options={}
      touch do
        append_to_group(options[:group], key) if options[:group]

        db.set! key, value
        db.compact
        db.flush
      end
    end

    def append key, value
      touch do
        new_value = Array(read(key)) << value
        save(key, new_value)
      end
    end

    def read key
      touch { db.get key }
    end

    def load
      db.load
    end

    def close
      db.close
    end

    def append_to_group group, value
      append group, value
    end

    private 

    def clear! 
      db.clear
    end

    def touch &block
      db.load
      yield if block_given?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
docket-0.0.1 lib/docket/storage.rb