sqlx_cloudflare_do/
transaction.rs1use std::future::{self, Future};
2
3use sqlx_core::error::Error;
4use sqlx_core::sql_str::SqlStr;
5use sqlx_core::transaction::TransactionManager;
6
7use crate::error::unsupported;
8use crate::{Do, DoConnection};
9
10const NO_TRANSACTIONS: &str = "Durable Object storage has no interactive transactions; \
11 send the statements together with `DoConnection::execute_batch`, \
12 which runs them atomically";
13
14#[derive(Debug)]
24pub struct DoTransactionManager;
25
26impl TransactionManager for DoTransactionManager {
27 type Database = Do;
28
29 fn begin(
30 _conn: &mut DoConnection,
31 _statement: Option<SqlStr>,
32 ) -> impl Future<Output = Result<(), Error>> + Send + '_ {
33 future::ready(Err(unsupported(NO_TRANSACTIONS)))
34 }
35
36 fn commit(_conn: &mut DoConnection) -> impl Future<Output = Result<(), Error>> + Send + '_ {
39 future::ready(Err(unsupported(NO_TRANSACTIONS)))
40 }
41
42 fn rollback(_conn: &mut DoConnection) -> impl Future<Output = Result<(), Error>> + Send + '_ {
43 future::ready(Err(unsupported(NO_TRANSACTIONS)))
44 }
45
46 fn start_rollback(_conn: &mut DoConnection) {}
50
51 fn get_transaction_depth(_conn: &DoConnection) -> usize {
52 0
53 }
54}