typed-qb 0.2.0

A query builder that builds and typechecks queries at compile time
typed-qb-0.2.0 doesn't have any documentation.

typed-qb is a compile-time, typed, query builder. The query is transformed into an SQL query string at compile time. If code compiles and the schema in the code matches the database, it should be (almost) impossible to write queries that produce errors.

Make sure to enable the generic_associated_types feature and include the prelude:

#![feature(generic_associated_types)]
use typed_qb::prelude::*;

Use the tables macro to generate table definitions:

# #![feature(generic_associated_types)]
typed_qb::tables! {
CREATE TABLE Users (
Id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
Name VARCHAR(64) NOT NULL,
PRIMARY KEY(Id)
);
}

This will generate a table definition Users implementing Table. To construct queries, call the methods on this trait:

# #![feature(generic_associated_types)]
# use typed_qb::__doctest::*;
let query = Users::query(|user| data! {
id: user.id,
name: user.name,
});
# ground(query);

Pass the query to Database::typed_query to execute the query:

# #![feature(generic_associated_types)] use typed_qb::__doctest::*;
# let query = Users::query(|user| expr!(COUNT(*)));
let opts = mysql::OptsBuilder::new()
.user(Some("..."))
.pass(Some("..."))
.db_name(Some("..."));
let pool = mysql::Pool::new(opts)?;

let mut conn = pool.get_conn()?;
let results = conn.typed_query(query)?;
# Ok::<(), mysql::Error>(())