mirror of
https://github.com/0glabs/0g-storage-node.git
synced 2024-12-27 00:35:18 +00:00
ef82f64393
* Implement Pruner. * Put pruner in a crate. * Fix clippy. * Add rpc zgs_getShardConfig. * Fix. * Increase wait time. * Add pruner_test and use max_num_chunks instead of size_limit. * Add back shard config and fix test. * fix: serde format * Remove unneeded PORA_CHUNK_SIZE. * Fix tests. --------- Co-authored-by: MiniFrenchBread <103425574+MiniFrenchBread@users.noreply.github.com>
55 lines
1.4 KiB
Rust
55 lines
1.4 KiB
Rust
use kvdb::KeyValueDB;
|
|
|
|
pub mod config;
|
|
pub mod error;
|
|
pub mod log_store;
|
|
|
|
pub use config::Config as StorageConfig;
|
|
pub use log_store::log_manager::LogManager;
|
|
|
|
pub use ethereum_types::H256;
|
|
use kvdb_memorydb::InMemory;
|
|
use kvdb_rocksdb::Database;
|
|
|
|
pub trait ZgsKeyValueDB: KeyValueDB {
|
|
fn put(&self, col: u32, key: &[u8], value: &[u8]) -> std::io::Result<()> {
|
|
let mut tx = self.transaction();
|
|
tx.put(col, key, value);
|
|
self.write(tx)
|
|
}
|
|
|
|
fn puts(&self, items: Vec<(u32, Vec<u8>, Vec<u8>)>) -> std::io::Result<()> {
|
|
let mut tx = self.transaction();
|
|
items
|
|
.into_iter()
|
|
.for_each(|(col, key, val)| tx.put(col, &key, &val));
|
|
self.write(tx)
|
|
}
|
|
|
|
fn delete(&self, col: u32, key: &[u8]) -> std::io::Result<()> {
|
|
let mut tx = self.transaction();
|
|
tx.delete(col, key);
|
|
self.write(tx)
|
|
}
|
|
|
|
fn delete_with_prefix(&self, col: u32, key_prefix: &[u8]) -> std::io::Result<()> {
|
|
let mut tx = self.transaction();
|
|
tx.delete_prefix(col, key_prefix);
|
|
self.write(tx)
|
|
}
|
|
|
|
fn num_keys(&self, col: u32) -> std::io::Result<u64>;
|
|
}
|
|
|
|
impl ZgsKeyValueDB for Database {
|
|
fn num_keys(&self, col: u32) -> std::io::Result<u64> {
|
|
self.num_keys(col)
|
|
}
|
|
}
|
|
|
|
impl ZgsKeyValueDB for InMemory {
|
|
fn num_keys(&self, _col: u32) -> std::io::Result<u64> {
|
|
todo!("not used")
|
|
}
|
|
}
|