taitan_orm/database/sqlite/
transaction.rs

1// use crate::args_extractor::ArgsExtractor;
2use taitan_orm_trait::result::CountResult;
3use crate::brave_new_transaction_impl;
4// use crate::sql_executor_mut::SqlExecutorMut;
5use crate::executors::SqlGenericExecutor;
6use sqlx::Sqlite;
7use crate::executors::SqlExecutorMut;
8
9#[derive(Debug)]
10pub struct SqliteTransaction<'a> {
11    transaction: sqlx::Transaction<'a, Sqlite>,
12}
13
14impl<'a> SqliteTransaction<'a> {
15    pub fn new(trx: sqlx::Transaction<'a, Sqlite>) -> Self {
16        Self { transaction: trx }
17    }
18    #[inline]
19    pub async fn commit(self) -> crate::result::Result<()> {
20        Ok(self.transaction.commit().await?)
21    }
22
23    #[inline]
24    pub async fn rollback(self) -> crate::result::Result<()> {
25        Ok(self.transaction.rollback().await?)
26    }
27}
28
29impl<'t> SqlGenericExecutor for SqliteTransaction<'t> {
30    type DB = Sqlite;
31    type CountType = CountResult;
32
33    fn get_affected_rows(query_result: &<Self::DB as sqlx::Database>::QueryResult) -> u64 {
34        query_result.rows_affected()
35    }
36}
37
38impl<'t> SqlExecutorMut<sqlx::Sqlite> for SqliteTransaction<'t> {
39    brave_new_transaction_impl!(sqlx::Sqlite);
40}