predawn_sea_orm/
transaction.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4use sea_orm::{
5    ConnectionTrait, DatabaseTransaction, DbBackend, DbErr, ExecResult, QueryResult, Statement,
6    TransactionTrait,
7};
8
9#[derive(Debug, Clone)]
10pub struct Transaction {
11    pub(crate) name: Arc<str>,
12    pub(crate) inner: Arc<DatabaseTransaction>,
13    pub(crate) index: usize,
14}
15
16impl Transaction {
17    #[inline]
18    pub(crate) async fn begin(&self) -> Result<DatabaseTransaction, DbErr> {
19        self.inner.begin().await
20    }
21}
22
23#[async_trait]
24impl ConnectionTrait for Transaction {
25    fn get_database_backend(&self) -> DbBackend {
26        self.inner.get_database_backend()
27    }
28
29    async fn execute(&self, stmt: Statement) -> Result<ExecResult, DbErr> {
30        self.inner.execute(stmt).await
31    }
32
33    async fn execute_unprepared(&self, sql: &str) -> Result<ExecResult, DbErr> {
34        self.inner.execute_unprepared(sql).await
35    }
36
37    async fn query_one(&self, stmt: Statement) -> Result<Option<QueryResult>, DbErr> {
38        self.inner.query_one(stmt).await
39    }
40
41    async fn query_all(&self, stmt: Statement) -> Result<Vec<QueryResult>, DbErr> {
42        self.inner.query_all(stmt).await
43    }
44
45    fn support_returning(&self) -> bool {
46        self.inner.support_returning()
47    }
48
49    fn is_mock_connection(&self) -> bool {
50        self.inner.is_mock_connection()
51    }
52}