use crate::prelude::BaseError;
pub trait TUnitOfWork: Send + Sync {
fn begin(&mut self) -> impl std::future::Future<Output = Result<(), BaseError>> + Send;
fn commit(&mut self) -> impl std::future::Future<Output = Result<(), BaseError>> + Send {
async {
self.process_internal_events().await?;
self.process_external_events().await?;
self._commit().await?;
Ok(())
}
}
fn _commit(&mut self) -> impl std::future::Future<Output = Result<(), BaseError>> + Send;
fn rollback(&mut self) -> impl std::future::Future<Output = Result<(), BaseError>> + Send;
fn close(&mut self) -> impl std::future::Future<Output = ()> + Send;
fn process_internal_events(&mut self) -> impl std::future::Future<Output = Result<(), BaseError>> + Send {
async { Ok(()) }
}
fn process_external_events(&mut self) -> impl std::future::Future<Output = Result<(), BaseError>> + Send {
async { Ok(()) }
}
}