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§
- Postgres
Params - Container for Postgres parameters with lifetime tracking
- Sqlite
Params Execute - Wrapper for SQLite parameters for execution.
- Sqlite
Params Query - 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.