2022-08-18 16:19:50 +08:00
|
|
|
use crate::core::{DocumentOperation, DocumentTree};
|
2022-08-17 16:48:45 +08:00
|
|
|
|
|
|
|
pub struct Transaction {
|
|
|
|
pub operations: Vec<DocumentOperation>,
|
|
|
|
}
|
|
|
|
|
2022-08-18 16:19:50 +08:00
|
|
|
impl Transaction {
|
|
|
|
|
|
|
|
fn new(operations: Vec<DocumentOperation>) -> Transaction {
|
|
|
|
Transaction {
|
|
|
|
operations,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pub struct TransactionBuilder<'a> {
|
|
|
|
document: &'a DocumentTree,
|
2022-08-17 16:48:45 +08:00
|
|
|
operations: Vec<DocumentOperation>,
|
|
|
|
}
|
|
|
|
|
2022-08-18 16:19:50 +08:00
|
|
|
impl<'a> TransactionBuilder<'a> {
|
|
|
|
pub fn new(document: &'a DocumentTree) -> TransactionBuilder {
|
|
|
|
TransactionBuilder {
|
|
|
|
document,
|
|
|
|
operations: Vec::new()
|
|
|
|
}
|
2022-08-17 16:48:45 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn push(&mut self, op: DocumentOperation) {
|
|
|
|
self.operations.push(op);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn finalize(self) -> Transaction {
|
|
|
|
Transaction {
|
|
|
|
operations: self.operations,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|