class Qbot::Storage::LevelDB

Constants

QBOT_LEVELDB_DEFAULT_BACKUP_INTERVAL
QBOT_LEVELDB_DEFAULT_DATABASE

Public Class Methods

new() click to toggle source
# File lib/qbot/storage/leveldb.rb, line 12
def initialize
  interval = ENV['QBOT_LEVELDB_BACKUP_INTERVAL'] || QBOT_LEVELDB_DEFAULT_BACKUP_INTERVAL
  database = ENV['QBOT_LEVELDB_DATABASE']        || QBOT_LEVELDB_DEFAULT_DATABASE

  @db = ::LevelDB::DB.new(File.join(Dir.pwd, database))
  @cache = {}

  restore
  Qbot.app.timers.every(interval) { backup }
end

Public Instance Methods

namespace(ns) click to toggle source
# File lib/qbot/storage/leveldb.rb, line 23
def namespace(ns)
  @cache[ns] ||= {}
end

Private Instance Methods

backup() click to toggle source
# File lib/qbot/storage/leveldb.rb, line 28
def backup
  return if @cache.keys.empty?
  @db.batch do |batch|
    @cache.each { |ns, v| batch[ns] = Marshal.dump(v) }
  end
end
restore() click to toggle source
# File lib/qbot/storage/leveldb.rb, line 35
def restore
  return if @db.keys.empty?
  @db.each { |ns, v| @cache[ns] = Marshal.load(v) }
end