| Crates.io | qraft |
| lib.rs | qraft |
| version | 0.3.3 |
| created_at | 2024-12-30 21:22:15.132245+00 |
| updated_at | 2025-06-22 07:24:41.496863+00 |
| description | A Rust library for building SQL queries with a fluent API. |
| homepage | https://github.com/oviorbit/qraft |
| repository | https://github.com/oviorbit/qraft |
| max_upload_size | |
| id | 1499447 |
| size | 213,725 |
qraft is a lightweight SQL query builder for Rust. It provides a fluent API
for assembling select, insert, update and delete statements and
supports parameter binding out of the box. When the optional sqlx features
are enabled, queries can be executed directly against a database.
Compose complex queries using a builder style API
Support for PostgreSQL, MySQL and SQLite dialects
Integration with sqlx for executing queries
Helper functions to embed raw SQL fragments or sub‑queries
Optional features for time, chrono, uuid and serde_json bindings
Add qraft to your Cargo.toml and enable the dialect features you need:
[dependencies]
qraft = { version = "0.1.0", features = ["postgres", "chrono"] }
use qraft::{Builder, Postgres};
let mut query = Builder::table("users");
query.select(["id", "username"]).where_eq("id", 1);
let sql = query.to_sql::<Postgres>();
assert_eq!("select \"id\", \"username\" from \"users\" where \"id\" = $1", sql);
use qraft::{Builder, Postgres};
let mut query = Builder::table("users");
query
.join("contacts", "users.id", "=", "contacts.user_id")
.join("orders", "users.id", '=', "orders.user_id")
.select(["users.*", "contacts.phone", "orders.price"]);
let sql = query.to_sql::<Postgres>();
assert_eq!(
r#"select "users".*, "contacts"."phone", "orders"."price" from "users" inner join "contacts" on "users"."id" = "contacts"."user_id" inner join "orders" on "users"."id" = "orders"."user_id""#,
sql,
);
let mut query = Builder::table("users");
query.where_eq("id", 1).select_avg("price as avg_price");
let sql = query.to_sql::<Postgres>();
assert_eq!(r#"select avg("price") as "avg_price" from "users" where "id" = $1"#, sql);
let mut builder = Builder::table("users");
let insert_sql = builder
.inserting()
.values_with(|row| {
row.field("id", 1).field("username", "ovior");
})
.to_sql::<Postgres>();
assert_eq!(
r#"insert into "users" ("id", "username") values ($1, $2)"#,
insert_sql,
);
let mut query = Builder::new();
query.select_exists(|b| {
b.select_one().from("users").where_eq("id", 1);
});
let sql = query.to_sql::<Postgres>();
assert_eq!(
r#"select exists (select 1 from "users" where "id" = $1) as "exists""#,
sql,
);
This project is released under the MIT License.