Class: Yoda::Store::Adapters::LeveldbAdapter

Inherits:
Base
  • Object
show all
Defined in:
lib/yoda/store/adapters/leveldb_adapter.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ LeveldbAdapter

Returns a new instance of LeveldbAdapter.

Parameters:

  • path (String)

    represents the path to store db.



20
21
22
23
24
25
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 20

def initialize(path)
  @path = path
  @db = LevelDB::DB.new(path, compression: true)

  at_exit { @db.closed? || @db.close }
end

Class Method Details

.for(path) ⇒ Object



9
10
11
12
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 9

def for(path)
  @pool ||= {}
  @pool[path] || (@pool[path] = new(path))
end

.typeObject



14
15
16
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 14

def type
  :leveldb
end

Instance Method Details

#batch_write(data, bar) ⇒ Object

Parameters:

  • data (Enumerator<(String, Object)>)
  • bar (#increment, nil)


42
43
44
45
46
47
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 42

def batch_write(data, bar)
  data.each do |(k, v)|
    @db.put(k, v)
    bar&.increment
  end
end

#clearObject



70
71
72
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 70

def clear
  @db.destroy!
end

#delete(address) ⇒ void

This method returns an undefined value.

Parameters:

  • address (String)


51
52
53
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 51

def delete(address)
  @db.delete(address.to_s)
end

#exist?(address) ⇒ true, false

Parameters:

  • address (String)

Returns:

  • (true, false)


57
58
59
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 57

def exist?(address)
  @db.exists?(address.to_s)
end

#get(address) ⇒ any

Parameters:

  • address (String)

Returns:

  • (any)


29
30
31
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 29

def get(address)
  JSON.load(@db.get(address.to_s), symbolize_names: true)
end

#keysArray<String>

Returns:

  • (Array<String>)


62
63
64
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 62

def keys
  @db.keys
end

#put(address, object) ⇒ void

This method returns an undefined value.

Parameters:

  • address (String)
  • object (Object)


36
37
38
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 36

def put(address, object)
  @db.put(address.to_s, object.to_json)
end

#statsObject



66
67
68
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 66

def stats
  @db.stats
end

#syncObject



74
75
76
# File 'lib/yoda/store/adapters/leveldb_adapter.rb', line 74

def sync
  # nop
end