#[macro_export]
macro_rules! generate_dao_get {
($rocksdb_store:expr, $key:expr) => {{
$rocksdb_store.get(&$key)
}};
}
#[macro_export]
macro_rules! generate_dao_put {
($rocksdb_store:expr, $key:expr, $record:expr) => {{
$rocksdb_store.put(&$key, $record)
}};
}
#[macro_export]
macro_rules! generate_dao_put_in_txn {
($transaction:expr, $key:expr, $record:expr) => {{
$crate::tx::put_in_txn($transaction, &$key, $record)
}};
}
#[macro_export]
macro_rules! generate_dao_multiget {
($rocksdb_store:expr, $record_type:ident, $ids:expr, $id_mapper:expr) => {{
let keys: Vec<_> = $ids.iter().map($id_mapper).collect();
let results: Vec<Option<$record_type>> = $rocksdb_store.multiget(&keys)?;
let kv_pairs: Vec<_> = keys
.into_iter()
.zip(results.into_iter())
.filter_map(|(k, opt_v)| opt_v.map(|v| (k, v)))
.collect();
Ok(kv_pairs)
}};
}
#[macro_export]
macro_rules! generate_dao_multiget_preserve_order {
($rocksdb_store:expr, $record_type:ident, $ids:expr, $id_mapper:expr) => {{
let keys: Vec<_> = $ids.iter().map($id_mapper).collect();
let results: Vec<Option<$record_type>> = $rocksdb_store.multiget(&keys)?;
let kv_pairs_with_options: Vec<Option<(_, _)>> = keys
.into_iter()
.zip(results.into_iter())
.map(|(k, opt_v)| opt_v.map(|v| (k, v)))
.collect();
Ok(kv_pairs_with_options)
}};
}
#[macro_export]
macro_rules! generate_dao_get_with_expiry {
($rocksdb_store:expr, $key:expr) => {{
$rocksdb_store.get_with_expiry(&$key)
}};
}
#[macro_export]
macro_rules! generate_dao_put_with_expiry {
($rocksdb_store:expr, $key:expr, $record:expr, $expire_time:expr) => {{
$rocksdb_store.put_with_expiry(&$key, $record, $expire_time)
}};
}
#[macro_export]
macro_rules! generate_dao_put_with_expiry_in_txn {
($transaction:expr, $key:expr, $record:expr, $expire_time:expr) => {{
$crate::tx::put_with_expiry_in_txn($transaction, &$key, $record, $expire_time)
}};
}
#[macro_export]
macro_rules! generate_dao_multiget_with_expiry {
($rocksdb_store:expr, $record_type:ident, $ids:expr, $id_mapper:expr) => {{
let keys: Vec<_> = $ids.iter().map($id_mapper).collect();
let results: Vec<Option<$crate::types::ValueWithExpiry<$record_type>>> =
$rocksdb_store.multiget_with_expiry(&keys)?;
let kv_pairs: Vec<_> = keys
.into_iter()
.zip(results.into_iter())
.filter_map(|(k, opt_v)| opt_v.map(|v| (k, v)))
.collect();
Ok(kv_pairs)
}};
}
#[macro_export]
macro_rules! generate_dao_merge {
($rocksdb_store:expr, $key:expr, $merge_value:expr) => {{
$rocksdb_store.merge(&$key, &$merge_value)
}};
}
#[macro_export]
macro_rules! generate_dao_merge_in_txn {
($transaction:expr, $key:expr, $merge_value:expr) => {{
$crate::tx::merge_in_txn($transaction, &$key, &$merge_value)
}};
}
#[macro_export]
macro_rules! generate_dao_remove {
($rocksdb_store:expr, $key:expr) => {{
$rocksdb_store.remove(&$key)
}};
}
#[macro_export]
macro_rules! generate_dao_remove_in_txn {
($transaction:expr, $key:expr) => {{
$crate::tx::remove_in_txn($transaction, &$key)
}};
}
#[macro_export]
macro_rules! generate_dao_get_cf {
($cf_store:expr, $cf_name:expr, $key:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.get($cf_name, &$key)
}};
}
#[macro_export]
macro_rules! generate_dao_put_cf {
($cf_store:expr, $cf_name:expr, $key:expr, $record:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.put($cf_name, &$key, $record)
}};
}
#[macro_export]
macro_rules! generate_dao_multiget_cf {
($cf_store:expr, $cf_name:expr, $record_type:ident, $ids:expr, $id_mapper:expr) => {{
use $crate::cf_store::CFOperations;
let keys: Vec<_> = $ids.iter().map($id_mapper).collect();
let results: Vec<Option<$record_type>> = $cf_store.multiget($cf_name, &keys)?;
let kv_pairs: Vec<_> = keys
.into_iter()
.zip(results.into_iter())
.filter_map(|(k, opt_v)| opt_v.map(|v| (k, v)))
.collect();
Ok(kv_pairs)
}};
}
#[macro_export]
macro_rules! generate_dao_multiget_preserve_order_cf {
($cf_store:expr, $cf_name:expr, $record_type:ident, $ids:expr, $id_mapper:expr) => {{
use $crate::cf_store::CFOperations;
let keys: Vec<_> = $ids.iter().map($id_mapper).collect();
let results: Vec<Option<$record_type>> = $cf_store.multiget($cf_name, &keys)?;
let kv_pairs_with_options: Vec<Option<(_, _)>> = keys
.into_iter()
.zip(results.into_iter())
.map(|(k, opt_v)| opt_v.map(|v| (k, v)))
.collect();
Ok(kv_pairs_with_options)
}};
}
#[macro_export]
macro_rules! generate_dao_get_with_expiry_cf {
($cf_store:expr, $cf_name:expr, $key:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.get_with_expiry($cf_name, &$key)
}};
}
#[macro_export]
macro_rules! generate_dao_put_with_expiry_cf {
($cf_store:expr, $cf_name:expr, $key:expr, $record:expr, $expire_time:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.put_with_expiry($cf_name, &$key, $record, $expire_time)
}};
}
#[macro_export]
macro_rules! generate_dao_multiget_with_expiry_cf {
($cf_store:expr, $cf_name:expr, $record_type:ident, $ids:expr, $id_mapper:expr) => {{
use $crate::cf_store::CFOperations;
let keys: Vec<_> = $ids.iter().map($id_mapper).collect();
let results: Vec<Option<$crate::types::ValueWithExpiry<$record_type>>> =
$cf_store.multiget_with_expiry($cf_name, &keys)?;
let kv_pairs: Vec<_> = keys
.into_iter()
.zip(results.into_iter())
.filter_map(|(k, opt_v)| opt_v.map(|v| (k, v)))
.collect();
Ok(kv_pairs)
}};
}
#[macro_export]
macro_rules! generate_dao_merge_cf {
($cf_store:expr, $cf_name:expr, $key:expr, $merge_value:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.merge($cf_name, &$key, &$merge_value)
}};
}
#[macro_export]
macro_rules! generate_dao_remove_cf {
($cf_store:expr, $cf_name:expr, $key:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.delete($cf_name, &$key)
}};
}
#[macro_export]
macro_rules! generate_dao_exists_cf {
($cf_store:expr, $cf_name:expr, $key:expr) => {{
use $crate::cf_store::CFOperations;
$cf_store.exists($cf_name, &$key)
}};
}