use std::future::{self, Future};
use sqlx_core::error::Error;
use sqlx_core::sql_str::SqlStr;
use sqlx_core::transaction::TransactionManager;
use crate::error::unsupported;
use crate::{Do, DoConnection};
const NO_TRANSACTIONS: &str = "Durable Object storage has no interactive transactions; \
send the statements together with `DoConnection::execute_batch`, \
which runs them atomically";
#[derive(Debug)]
pub struct DoTransactionManager;
impl TransactionManager for DoTransactionManager {
type Database = Do;
fn begin(
_conn: &mut DoConnection,
_statement: Option<SqlStr>,
) -> impl Future<Output = Result<(), Error>> + Send + '_ {
future::ready(Err(unsupported(NO_TRANSACTIONS)))
}
fn commit(_conn: &mut DoConnection) -> impl Future<Output = Result<(), Error>> + Send + '_ {
future::ready(Err(unsupported(NO_TRANSACTIONS)))
}
fn rollback(_conn: &mut DoConnection) -> impl Future<Output = Result<(), Error>> + Send + '_ {
future::ready(Err(unsupported(NO_TRANSACTIONS)))
}
fn start_rollback(_conn: &mut DoConnection) {}
fn get_transaction_depth(_conn: &DoConnection) -> usize {
0
}
}