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::{D1Connection, D1};
const NO_TRANSACTIONS: &str = "D1 has no interactive transactions; \
send the statements together with `D1Connection::execute_batch`, \
which D1 runs atomically";
#[derive(Debug)]
pub struct D1TransactionManager;
impl TransactionManager for D1TransactionManager {
type Database = D1;
fn begin(
_conn: &mut D1Connection,
_statement: Option<SqlStr>,
) -> impl Future<Output = Result<(), Error>> + Send + '_ {
future::ready(Err(unsupported(NO_TRANSACTIONS)))
}
fn commit(_conn: &mut D1Connection) -> impl Future<Output = Result<(), Error>> + Send + '_ {
future::ready(Err(unsupported(NO_TRANSACTIONS)))
}
fn rollback(_conn: &mut D1Connection) -> impl Future<Output = Result<(), Error>> + Send + '_ {
future::ready(Err(unsupported(NO_TRANSACTIONS)))
}
fn start_rollback(_conn: &mut D1Connection) {}
fn get_transaction_depth(_conn: &D1Connection) -> usize {
0
}
}