Skip to main content

Crate sql_composer_duckdb

Crate sql_composer_duckdb 

Source
Expand description

DuckDB driver for sql-composer.

Provides DuckDbConnection, a thin wrapper around duckdb::Connection that implements ComposerConnection for composing SQL templates with bind values against DuckDB databases.

§Example

use sql_composer::composer::Composer;
use sql_composer::driver::ComposerConnection;
use sql_composer::parser::parse_template;
use sql_composer::types::{Dialect, TemplateSource};
use sql_composer::bind_values;
use sql_composer_duckdb::DuckDbConnection;

let conn = DuckDbConnection::open_in_memory().unwrap();
conn.execute("CREATE TABLE users (id INTEGER, name TEXT)", []).unwrap();

let input = "SELECT * FROM users WHERE id = :bind(user_id)";
let template = parse_template(input, TemplateSource::Literal("example".into())).unwrap();
let composer = Composer::new(Dialect::Postgres);

let values = bind_values!("user_id" => [Box::new(1i32) as Box<dyn duckdb::ToSql>]);
let (sql, params) = conn.compose(&composer, &template, values).unwrap();

let refs: Vec<&dyn duckdb::ToSql> = params.iter().map(|v| v.as_ref()).collect();
let mut stmt = conn.prepare(&sql).unwrap();
let _rows = stmt.query(refs.as_slice()).unwrap();

Re-exports§

pub use duckdb;

Structs§

DuckDbConnection
A wrapper around duckdb::Connection that implements ComposerConnection.

Enums§

Error
Error type for sql-composer-duckdb operations.