sqlx_core/any/
transaction.rs

1use futures_util::future::BoxFuture;
2use std::borrow::Cow;
3
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>(
15        conn: &'conn mut AnyConnection,
16        statement: Option<Cow<'static, str>>,
17    ) -> BoxFuture<'conn, Result<(), Error>> {
18        conn.backend.begin(statement)
19    }
20
21    fn commit(conn: &mut AnyConnection) -> BoxFuture<'_, Result<(), Error>> {
22        conn.backend.commit()
23    }
24
25    fn rollback(conn: &mut AnyConnection) -> BoxFuture<'_, Result<(), Error>> {
26        conn.backend.rollback()
27    }
28
29    fn start_rollback(conn: &mut AnyConnection) {
30        conn.backend.start_rollback()
31    }
32
33    fn get_transaction_depth(conn: &<Self::Database as Database>::Connection) -> usize {
34        conn.backend.get_transaction_depth()
35    }
36}