pub(crate) mod operation;
pub use operation::{Operation, PropertyTarget};
use crate::types::DbError;
pub struct Transaction {
pub(crate) ops: Vec<Operation>,
pub(crate) txn_id: u64,
pub(crate) finished: bool,
}
impl Transaction {
pub fn stage(&mut self, op: Operation) -> Result<(), DbError> {
if self.finished {
return Err(DbError::TransactionFinished);
}
self.ops.push(op);
Ok(())
}
pub fn rollback(&mut self) {
self.ops.clear();
self.finished = true;
}
pub fn txn_id(&self) -> u64 {
self.txn_id
}
}