sql-middleware 0.7.0

Lightweight async wrappers for tokio-postgres, rusqlite, turso, and tiberius.
Documentation
#[cfg(feature = "turso")]
use crate::error::SqlMiddlewareDbError;
#[cfg(feature = "turso")]
use crate::turso::TursoNonTxPreparedStatement;
#[cfg(feature = "turso")]
use turso::Connection as TursoConnection;
#[cfg(feature = "turso")]
use turso::Database;

#[cfg(feature = "turso")]
use super::MiddlewarePoolConnection;

#[cfg(feature = "turso")]
pub(super) fn get_connection(
    db: &Database,
    translate_placeholders: bool,
) -> Result<MiddlewarePoolConnection, SqlMiddlewareDbError> {
    let conn: TursoConnection = db.connect().map_err(SqlMiddlewareDbError::from)?;
    Ok(MiddlewarePoolConnection::Turso {
        conn,
        translate_placeholders,
    })
}

#[cfg(feature = "turso")]
impl MiddlewarePoolConnection {
    /// Prepare a Turso statement on this connection.
    ///
    /// # Errors
    /// Returns `SqlMiddlewareDbError` if the statement preparation fails or the connection is not Turso-backed.
    pub async fn prepare_turso_statement(
        &mut self,
        query: &str,
    ) -> Result<TursoNonTxPreparedStatement, SqlMiddlewareDbError> {
        match self {
            MiddlewarePoolConnection::Turso {
                conn: turso_conn, ..
            } => TursoNonTxPreparedStatement::prepare(turso_conn.clone(), query).await,
            _ => Err(SqlMiddlewareDbError::Unimplemented(
                "prepare_turso_statement is only available for Turso connections".to_string(),
            )),
        }
    }
}