Beginner Guide | API documentation
Toql is an ORM for async databases that features - Translation between Rust structs and database tables. - Can load and modify nested structs. - A unique dead simple query language, suitable for web clients. - Different table aliases from long and readable to tiny and fast. - Prepared statements against SQL injection. - Support for raw SQL for full database power. - Support for role based access. - Highly customizable through user defined parameters, query functions, field handlers, etc. - Compile time safety for queries, fields and path names. - No unsafe Rust code. - Tested on real world scenario.
It currently only supports MySQL. More are coming, promised :)
Add this to your Cargo.toml
:
toml
[dependencies]
toql = {version = "0.4", features = ["serde"]}
toql_mysql_async = "0.4"
Derive your structs: ```rust
struct Todo { #[toql(key)] id: u64, what: String,
#[toql(join)]
user: User
} ```
And do stuff with them: ```rust let toql = ... let todo = Todo{ ... };
// Insert todo and update its generated id toql.insert_one(&mut todo, paths!(top)).await?;
// Compile time checked queries! let q = query!(Todo, "*, user_id eq ?", &todo.user.id);
// Typesafe loading let todos = toql.load_many(q).await?; ```
Check out the CRUD example.
Comments, bug fixes and quality improvements are welcome.
Toql is distributed under the terms of both the MIT license and the Apache License (Version 2.0).