Crate sql_middleware

Source
Expand description

SQL Middleware - A unified interface for SQL databases

This crate provides a middleware layer for SQL database access, currently supporting SQLite and PostgreSQL backends. The main goal is to provide a unified, async-compatible API that works across different database systems.

§Features

  • Asynchronous database access with deadpool connection pooling
  • Support for SQLite and PostgreSQL backends
  • Unified parameter conversion system
  • Consistent result handling across database engines
  • Transaction support

§Example

use sql_middleware::prelude::*;
 
async fn example() -> Result<(), SqlMiddlewareDbError> {
    // Create a SQLite connection pool
    let config = ConfigAndPool::new_sqlite("my_database.db".to_string()).await?;
     
    // Get a connection from the pool
    let pool = config.pool.get().await?;
    let mut conn = MiddlewarePool::get_connection(&pool).await?;
     
    // Execute a query with parameters
    let result = conn.execute_select(
        "SELECT * FROM users WHERE id = ?",
        &[RowValues::Int(1)]
    ).await?;
     
    // Process the results
    for row in result.results {
        println!("User: {}", row.get("name").unwrap().as_text().unwrap());
    }
     
    Ok(())
}

Re-exports§

pub use middleware::ConfigAndPool;
pub use middleware::MiddlewarePool;
pub use middleware::MiddlewarePoolConnection;
pub use middleware::AsyncDatabaseExecutor;
pub use middleware::ResultSet;
pub use middleware::CustomDbRow;
pub use middleware::RowValues;
pub use middleware::SqlMiddlewareDbError;
pub use middleware::DatabaseType;
pub use middleware::ConversionMode;
pub use middleware::QueryAndParams;
pub use middleware::AnyConnWrapper;
pub use middleware::ParamConverter;

Modules§

middleware
prelude
Convenient imports for common functionality.
test_helpers

Structs§

PostgresParams
Container for Postgres parameters with lifetime tracking
SqliteParamsExecute
Wrapper for SQLite parameters for execution.
SqliteParamsQuery
Wrapper for SQLite parameters for queries.

Functions§

convert_sql_params
Convert a slice of generic RowValues into database-specific parameters.
postgres_build_result_set
Build a result set from a Postgres query execution
sqlite_build_result_set
Build a result set from a SQLite query Only SELECT queries return rows affected. If a DML is sent, it does run it. If there’s more than one query in the statement, idk which statement will be run.