predawn_sea_orm/
transaction.rs1use 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}