Crate leveldb_orm
source ·Expand description
An ORM wrapper for Rust leveldb
leveldb::database::kv::KV
APIs. Use bincode
to encoder / decoder key and object.
Example
This example shows the quickest way to get started with feature macros
[dependencies]
leveldb = "0.8"
leveldb-orm = { version = "0.1", features = ["macros"]}
serde = { version = "1.0", features = ["derive"] }
#[cfg(feature = "macros")]
mod example {
use leveldb::database::Database;
use leveldb::options::Options;
use leveldb_orm::{KVOrm, KeyOrm, LeveldbOrm};
use serde::{Deserialize, Serialize};
#[derive(LeveldbOrm, Serialize, Deserialize)]
#[leveldb_key(executable, args)]
pub struct Command {
pub executable: u8,
pub args: Vec<String>,
pub current_dir: Option<String>,
}
fn main() {
let cmd = Command {
executable: 1,
args: vec!["arg1".into(), "arg2".into(), "arg3".into()],
current_dir: Some("\\dir".into()),
};
let mut options = Options::new();
options.create_if_missing = true;
let database = Database::open(std::path::Path::new("./mypath"), options).unwrap();
cmd.put(&database).unwrap();
let key = Command::encode_key((&cmd.executable, &cmd.args)).unwrap();
// or `let key = cmd.key().unwrap();`
Command::get(&database, &key).unwrap();
Command::delete(&database, false, &key).unwrap();
}
}
Structs
- The key for leveldb, which impled
db_key::Key
. (db-key 0.0.5 only impl it for i32) You can serialize you key to Vec/ &[u8] and into EncodedKey.
Traits
- An orm version of
leveldb::database::kv::KV
- Interface of key encode / decode
- An orm version of
leveldb::database::batch::Writebatch::put