Expand description
PostgreSQL driver for sql-composer (sync and async).
Provides both sync and async wrappers for composing SQL templates with bind values against PostgreSQL databases.
- Async:
PgClientwrapstokio_postgres::Client(featureasync, enabled by default) - Sync:
PgConnectionwrapspostgres::Client(featuresync, enabled by default)
§Async Example
ⓘ
use sql_composer::composer::Composer;
use sql_composer::driver::ComposerConnectionAsync;
use sql_composer::types::{Dialect, TemplateSource};
use sql_composer::bind_values;
use sql_composer_postgres::{PgClient, boxed_params};
let (client, connection) = tokio_postgres::connect("host=localhost", tokio_postgres::NoTls).await?;
tokio::spawn(connection);
let client = PgClient::from_client(client);
let template = sql_composer::parser::parse_template(
"SELECT * FROM users WHERE id = :bind(user_id)",
TemplateSource::Literal("example".into()),
)?;
let composer = Composer::new(Dialect::Postgres);
let values = bind_values!("user_id" => [Box::new(1i32) as Box<dyn tokio_postgres::types::ToSql + Sync + Send>]);
let (sql, params) = client.compose(&composer, &template, values).await?;
let refs = boxed_params(¶ms);
let rows = client.query(&sql as &str, &refs).await?;§Sync Example
ⓘ
use sql_composer::composer::Composer;
use sql_composer::driver::ComposerConnection;
use sql_composer::types::{Dialect, TemplateSource};
use sql_composer::bind_values;
use sql_composer_postgres::{PgConnection, boxed_params_sync};
let mut client = postgres::Client::connect("host=localhost", postgres::NoTls)?;
let conn = PgConnection::from_client(client);
let template = sql_composer::parser::parse_template(
"SELECT * FROM users WHERE id = :bind(user_id)",
TemplateSource::Literal("example".into()),
)?;
let composer = Composer::new(Dialect::Postgres);
let values = bind_values!("user_id" => [Box::new(1i32) as Box<dyn postgres::types::ToSql + Sync>]);
let (sql, params) = conn.compose(&composer, &template, values)?;
let refs = boxed_params_sync(¶ms);
let rows = conn.query(&sql as &str, &refs)?;Re-exports§
pub use tokio_postgres;pub use postgres;
Structs§
- PgClient
- A wrapper around
tokio_postgres::Clientthat implementssql_composer::driver::ComposerConnectionAsync. - PgConnection
- A wrapper around
postgres::Clientthat implementssql_composer::driver::ComposerConnection.
Enums§
- Error
- Error type for sql-composer-postgres operations.
Functions§
- boxed_
params - Helper to convert boxed async params into the reference slice that tokio-postgres query methods expect.
- boxed_
params_ sync - Helper to convert boxed sync params into the reference slice that postgres query methods expect.