Sha256: 83787ce7e930867d82b2f6f0fab4f9cbddb3bde204d8afad3f572bc237446862
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
require 'leveldb' require 'json' module Yoda module Store module Adapters class LeveldbAdapter < Base class << self def for(path) @pool ||= {} @pool[path] || (@pool[path] = new(path)) end def type :leveldb end end # @param path [String] represents the path to store db. def initialize(path) @path = path @db = LevelDB::DB.new(path, compression: true) at_exit { @db.closed? || @db.close } end # @param address [String] # @return [any] def get(address) JSON.load(@db.get(address.to_s), symbolize_names: true) end # @param address [String] # @param object [Object] # @return [void] def put(address, object) @db.put(address.to_s, object.to_json) end # @param data [Enumerator<(String, Object)>] # @param bar [ProgressBar, nil] def batch_write(data, bar) data.each do |(k, v)| @db.put(k, v) bar&.increment end end # @param address [String] # @return [void] def delete(address) @db.delete(address.to_s) end # @param address [String] # @return [true, false] def exist?(address) @db.exists?(address.to_s) end # @return [Array<String>] def keys @db.keys end def stats @db.stats end def clear @db.destroy! end def sync # nop end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yoda-language-server-0.5.0 | lib/yoda/store/adapters/leveldb_adapter.rb |
yoda-language-server-0.4.0 | lib/yoda/store/adapters/leveldb_adapter.rb |