Skip to main content

Crate sql_composer

Crate sql_composer 

Source
Expand description

sql-composer: A SQL template engine that composes reusable SQL fragments with parameterized bindings.

Templates use a simple macro syntax embedded in SQL:

  • :bind(name) — parameter placeholder
  • :compose(path) — include another template
  • :count(sources...) — count aggregate
  • :union(sources...) — union combinator

SQL text is treated as opaque literals and passed through unchanged. Only the macro syntax is parsed.

§Example

use sql_composer::parser::parse_template;
use sql_composer::composer::Composer;
use sql_composer::types::{Dialect, TemplateSource};

let input = "SELECT * FROM users WHERE id = :bind(user_id) AND active = :bind(active);";
let template = parse_template(input, TemplateSource::Literal("example".into())).unwrap();

let composer = Composer::new(Dialect::Postgres);
let result = composer.compose(&template).unwrap();

// Alphabetical ordering: active=$1, user_id=$2
assert_eq!(result.sql, "SELECT * FROM users WHERE id = $2 AND active = $1;");
assert_eq!(result.bind_params, vec!["active", "user_id"]);

Re-exports§

pub use composer::ComposedSql;
pub use composer::Composer;
pub use error::Error;
pub use mock::MockTable;
pub use types::Binding;
pub use types::Command;
pub use types::CommandKind;
pub use types::ComposeRef;
pub use types::ComposeTarget;
pub use types::Dialect;
pub use types::Element;
pub use types::SlotAssignment;
pub use types::Template;
pub use types::TemplateSource;

Modules§

composer
The composer transforms parsed templates into final SQL with dialect-specific placeholders and resolved compose references.
driver
Trait interface for database drivers and helpers for bind value resolution.
error
Error types for sql-composer.
mock
Mock table system for generating test data as SELECT ... UNION ALL SELECT ....
parser
winnow 0.7 parsers for sql-composer template macros.
types
Core types for the sql-composer template AST.

Macros§

bind_values
Build a BTreeMap<String, Vec<V>> of named bind values.
mock_rows
Convenience macro for building mock table rows.