sqlx_scylladb_core/
transaction.rs1use std::borrow::Cow;
2
3use futures_core::future::BoxFuture;
4use sqlx::TransactionManager;
5
6use crate::{ScyllaDB, ScyllaDBConnection};
7
8pub struct ScyllaDBTransactionManager {}
10
11impl TransactionManager for ScyllaDBTransactionManager {
12 type Database = ScyllaDB;
13
14 fn begin<'conn>(
15 conn: &'conn mut ScyllaDBConnection,
16 statement: Option<Cow<'static, str>>,
17 ) -> BoxFuture<'conn, Result<(), sqlx::Error>> {
18 Box::pin(async {
19 conn.begin_transaction(statement).await?;
20
21 Ok(())
22 })
23 }
24
25 fn commit(conn: &mut ScyllaDBConnection) -> BoxFuture<'_, Result<(), sqlx::Error>> {
26 Box::pin(async {
27 conn.commit_transaction().await?;
28
29 Ok(())
30 })
31 }
32
33 fn rollback(conn: &mut ScyllaDBConnection) -> BoxFuture<'_, Result<(), sqlx::Error>> {
34 Box::pin(async {
35 let _ = conn.rollback_transaction();
36
37 Ok(())
38 })
39 }
40
41 fn start_rollback(conn: &mut ScyllaDBConnection) {
42 let _ = conn.rollback_transaction();
43 }
44
45 fn get_transaction_depth(conn: &ScyllaDBConnection) -> usize {
46 conn.get_transaction_depth()
47 }
48}