use super::ConnectionAsync;
use super::error::Error;
use super::params::Params;
use super::statement_async::StatementAsync;
pub struct TransactionAsync<'conn> {
conn: &'conn mut ConnectionAsync,
trans_handle: i32,
}
impl TransactionAsync<'_> {
pub async fn new(conn: &mut ConnectionAsync) -> Result<TransactionAsync<'_>, Error> {
let trans_handle = conn._begin_trans().await?;
Ok(TransactionAsync { conn, trans_handle })
}
pub async fn execute_batch(&mut self, query: &str) -> Result<(), Error> {
self.conn._execute_batch(query, self.trans_handle).await
}
pub async fn execute<P: Params>(&mut self, query: &str, params: P) -> Result<(), Error> {
self.conn._execute(query, params, self.trans_handle).await
}
pub async fn commit(&mut self) -> Result<(), Error> {
self.conn._commit(self.trans_handle).await
}
pub async fn rollback(&mut self) -> Result<(), Error> {
self.conn._rollback(self.trans_handle).await
}
pub async fn prepare(&mut self, query: &str) -> Result<StatementAsync<'_>, Error> {
self.conn._prepare(query, self.trans_handle).await
}
}