sqlx_core_oldapi/any/
transaction.rs

1use futures_util::future::BoxFuture;
2
3use crate::any::connection::AnyConnectionKind;
4use crate::any::{Any, AnyConnection};
5use crate::database::Database;
6use crate::error::Error;
7use crate::transaction::TransactionManager;
8
9pub struct AnyTransactionManager;
10
11impl TransactionManager for AnyTransactionManager {
12    type Database = Any;
13
14    fn begin(conn: &mut AnyConnection) -> BoxFuture<'_, Result<(), Error>> {
15        match &mut conn.0 {
16            #[cfg(feature = "postgres")]
17            AnyConnectionKind::Postgres(conn) => {
18                <crate::postgres::Postgres as Database>::TransactionManager::begin(conn)
19            }
20
21            #[cfg(feature = "mysql")]
22            AnyConnectionKind::MySql(conn) => {
23                <crate::mysql::MySql as Database>::TransactionManager::begin(conn)
24            }
25
26            #[cfg(feature = "sqlite")]
27            AnyConnectionKind::Sqlite(conn) => {
28                <crate::sqlite::Sqlite as Database>::TransactionManager::begin(conn)
29            }
30
31            #[cfg(feature = "mssql")]
32            AnyConnectionKind::Mssql(conn) => {
33                <crate::mssql::Mssql as Database>::TransactionManager::begin(conn)
34            }
35        }
36    }
37
38    fn commit(conn: &mut AnyConnection) -> BoxFuture<'_, Result<(), Error>> {
39        match &mut conn.0 {
40            #[cfg(feature = "postgres")]
41            AnyConnectionKind::Postgres(conn) => {
42                <crate::postgres::Postgres as Database>::TransactionManager::commit(conn)
43            }
44
45            #[cfg(feature = "mysql")]
46            AnyConnectionKind::MySql(conn) => {
47                <crate::mysql::MySql as Database>::TransactionManager::commit(conn)
48            }
49
50            #[cfg(feature = "sqlite")]
51            AnyConnectionKind::Sqlite(conn) => {
52                <crate::sqlite::Sqlite as Database>::TransactionManager::commit(conn)
53            }
54
55            #[cfg(feature = "mssql")]
56            AnyConnectionKind::Mssql(conn) => {
57                <crate::mssql::Mssql as Database>::TransactionManager::commit(conn)
58            }
59        }
60    }
61
62    fn rollback(conn: &mut AnyConnection) -> BoxFuture<'_, Result<(), Error>> {
63        match &mut conn.0 {
64            #[cfg(feature = "postgres")]
65            AnyConnectionKind::Postgres(conn) => {
66                <crate::postgres::Postgres as Database>::TransactionManager::rollback(conn)
67            }
68
69            #[cfg(feature = "mysql")]
70            AnyConnectionKind::MySql(conn) => {
71                <crate::mysql::MySql as Database>::TransactionManager::rollback(conn)
72            }
73
74            #[cfg(feature = "sqlite")]
75            AnyConnectionKind::Sqlite(conn) => {
76                <crate::sqlite::Sqlite as Database>::TransactionManager::rollback(conn)
77            }
78
79            #[cfg(feature = "mssql")]
80            AnyConnectionKind::Mssql(conn) => {
81                <crate::mssql::Mssql as Database>::TransactionManager::rollback(conn)
82            }
83        }
84    }
85
86    fn start_rollback(conn: &mut AnyConnection) {
87        match &mut conn.0 {
88            #[cfg(feature = "postgres")]
89            AnyConnectionKind::Postgres(conn) => {
90                <crate::postgres::Postgres as Database>::TransactionManager::start_rollback(conn)
91            }
92
93            #[cfg(feature = "mysql")]
94            AnyConnectionKind::MySql(conn) => {
95                <crate::mysql::MySql as Database>::TransactionManager::start_rollback(conn)
96            }
97
98            #[cfg(feature = "sqlite")]
99            AnyConnectionKind::Sqlite(conn) => {
100                <crate::sqlite::Sqlite as Database>::TransactionManager::start_rollback(conn)
101            }
102
103            #[cfg(feature = "mssql")]
104            AnyConnectionKind::Mssql(conn) => {
105                <crate::mssql::Mssql as Database>::TransactionManager::start_rollback(conn)
106            }
107        }
108    }
109}