| Crates.io | surrealex |
| lib.rs | surrealex |
| version | 1.0.3 |
| created_at | 2025-07-06 08:50:11.722346+00 |
| updated_at | 2026-01-04 15:16:26.143494+00 |
| description | Dead simple SurrealDB query generator |
| homepage | |
| repository | https://github.com/MordechaiHadad/surrealex |
| max_upload_size | |
| id | 1740003 |
| size | 51,934 |
Dead simple SurrealDB query generator.
A Rust library for building SurrealQL queries with a fluent, type-safe API.
fields! macroSELECT, FROM, WHERE, FETCH, ORDER BY, LIMIT, and START ATAdd to your Cargo.toml:
[dependencies]
surrealex = { version = "0.1.0", features = ["macros"] }
Or from Git:
[dependencies]
surrealex = { git = "https://github.com/MordechaiHadad/surrealex", features = ["macros"] }
use surrealex::QueryBuilder;
let query = QueryBuilder::select(surrealex::fields!("id", "name"))
.from("users")
.r#where("age > 18")
.order_by("created_at", Sort::Desc, false, false)
.limit(10)
.build();
assert_eq!(query, "SELECT id, name FROM users WHERE age > 18 ORDER BY created_at DESC LIMIT 10");
use surrealex::enums::Condition;
let query = QueryBuilder::select(surrealex::fields!("id"))
.from("users")
.r#where(Condition::And(vec![
Condition::Simple("age > 18".into()),
Condition::Or(vec![
Condition::Simple("status = 'active'".into()),
Condition::Simple("status = 'pending'".into()),
]),
]))
.build();
assert_eq!(
query,
"SELECT id FROM users WHERE (age > 18 AND (status = 'active' OR status = 'pending'))"
);
use surrealex::{enums::Direction, structs::GraphExpandParams};
let query = QueryBuilder::select(surrealex::fields!(*))
.graph_traverse(GraphExpandParams {
from: (Direction::Out, "friends".into()),
to: (Direction::In, "posts".into()),
alias: Some("friend_posts".into()),
fields: surrealex::fields!(*),
})
.from("user")
.build();
assert_eq!(
query,
"SELECT *, ->friends<-posts.* AS friend_posts FROM user"
);
This project is open source. See the repository for license details.