#[derive(Debug, Default)]
pub struct TxnBatch {
pub(crate) pending: Vec<BatchOp>,
}
#[derive(Debug)]
pub(crate) enum BatchOp {
Put {
key: Vec<u8>,
value: Vec<u8>,
},
Delete {
key: Vec<u8>,
},
Rename {
src: Vec<u8>,
dst: Vec<u8>,
force: bool,
},
}
impl TxnBatch {
pub fn put(&mut self, key: &[u8], value: &[u8]) {
self.pending.push(BatchOp::Put {
key: key.to_vec(),
value: value.to_vec(),
});
}
pub fn delete(&mut self, key: &[u8]) {
self.pending.push(BatchOp::Delete { key: key.to_vec() });
}
pub fn rename(&mut self, src: &[u8], dst: &[u8], force: bool) {
self.pending.push(BatchOp::Rename {
src: src.to_vec(),
dst: dst.to_vec(),
force,
});
}
pub fn len(&self) -> usize {
self.pending.len()
}
pub fn is_empty(&self) -> bool {
self.pending.is_empty()
}
}