Docs.rs
  • toql-0.4.2
    • toql 0.4.2
    • Permalink
    • Docs.rs crate page
    • MIT/Apache-2.0
    • Links
    • Repository
    • crates.io
    • Source
    • Owners
    • roy-ganz
    • Dependencies
      • log ^0.4 normal
      • toql_core ^0.4 normal
      • toql_derive ^0.4 normal
      • toql_enum_derive ^0.4 normal
      • toql_field_list_parser ^0.4 normal
      • toql_fields_macro ^0.4 normal
      • toql_paths_macro ^0.4 normal
      • toql_query_macro ^0.4 normal
      • toql_query_parser ^0.4 normal
      • toql_role_expr_macro ^0.4 normal
      • toql_role_expr_parser ^0.4 normal
      • toql_sql_expr_macro ^0.4 normal
      • toql_sql_expr_parser ^0.4 normal
      • async-trait ^0.1 dev
      • pretty_assertions ^1 dev
      • tokio ^1 dev
      • tracing ^0.1 dev
      • tracing-test ^0.1 dev
    • Versions
    • 50% of the crate is documented
  • Platform
    • i686-pc-windows-msvc
    • i686-unknown-linux-gnu
    • x86_64-apple-darwin
    • x86_64-pc-windows-msvc
    • x86_64-unknown-linux-gnu
  • Feature flags
  • docs.rs
    • About docs.rs
    • Privacy policy
  • Rust
    • Rust website
    • The Book
    • Standard Library API Reference
    • Rust by Example
    • The Cargo Guide
    • Clippy Documentation

Crate toql

toql0.4.2

  • All Items

Sections

  • Toql - A friendly and productive ORM
    • Installation
    • Look And Feel
    • Quick start
    • Contribution
    • License

Crate Items

  • Re-exports
  • Modules
  • Macros

Crates

  • toql

Crate toql

Source
Expand description

§Toql - A friendly and productive ORM

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 :)

§Installation

Add this to your Cargo.toml:

[dependencies]
toql = {version = "0.3", features = ["serde"]}
toql_mysql_async = "0.3"

§Look And Feel

Derive your structs:

ⓘ
#[derive(Toql)]
#[toql(auto_key = true)]
struct Todo {
    #[toql(key)]
    id: u64,
    what: String,

    #[toql(join())]
    user: User
}

And do stuff with them:

ⓘ
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 user = toql.load_many(q).await?;

§Quick start

Toql has a supporting crate to play well with Rocket. Check out the CRUD example.

§Contribution

Comments, bug fixes and quality improvements are welcome.

§License

Toql is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

Re-exports§

pub use toql_derive as derive;
pub use toql_fields_macro as fields_macro;
pub use toql_paths_macro as paths_macro;
pub use toql_query_macro as query_macro;
pub use toql_role_expr_macro as role_expr_macro;
pub use toql_sql_expr_macro as sql_expr_macro;
pub use toql_core::tracing;

Modules§

alias_format
Alias format for different table aliases.
alias_translator
Translate a canonical table alias into another AliasFormat format.
backend
Toql Api implementations that are database independend
cache
Cache to lookup static table information and SQL statements.
deserialize
Deserialize Error
error
Error handling.
field_handler
A FieldHandler may modify a mapped column or expression.
fields
A list of field names.
from_row
Trait to convert result row into structs.
identity
Identity trait.
join
Join enum to simplify update handling of joins.
join_handler
A JoinHandler may modify an ON condition in a join clause.
key
Table mapping information for keys.
key_fields
Toql query field information for keys.
keyed
Traits to access and change the key of a Toql derived struct.
map_key
An iterator that maps entities into keys.
mock_db
The Toql Mock Db provides a dummy database that can be used for testing or documentation examples.
page
Page is used as an argument in load functions.
page_counts
Return type of load_page method.
parameter_map
Combines multiple aux parameters in a lightweight way.
paths
A list of path names.
predicate_handler
A PredicateHandler may modify a mapped column or expression.
prelude
query
The Query represents a Toql query but also comes with query builder methods.
query_fields
Trait to associate a field type provider with a struct.
query_parser
The query parser can turn a string that follows the Toql query syntax into a Query.
query_path
Trait to associate a field type provider with a struct.
result
A result with a ToqlError.
role_expr
A boolean role expression that can be evaluated.
role_validator
Validate a RoleExpr.
sql
A raw SQL statement.
sql_arg
An argument for SQL expressions.
sql_builder
The SQL builder can build different select statements.
sql_expr
SQL expression than can be resolved into raw SQL.
table_mapper
Translate Toql query fields to database columns, SQL expressions, joins and merges.
table_mapper_registry
A registry for all table mappers.
toql_api
The common interface for all database backends.
tree
Traits to do operations on nested structs.

Macros§

join
log_literal_sql
log_sql
none_error
ok_or_fail
row
row macro for easier row creation

Results

Settings
Help
    enum
    toql::error::ToqlError
    Represents all errors
    method
    toql::prelude::ToqlError::source
    &ToqlError -> Option<&Error>
    method
    toql::prelude::ToqlError::fmt
    &ToqlError, &mut Formatter -> Result<(), Error>
    method
    toql::prelude::ToqlError::from
    SqlBuilderError -> ToqlError
    method
    toql::table_mapper::TableMapper::from_mapped
    -> Result<TableMapper, ToqlError>
    Create a new mapper from a struct that implements the …
    trait method
    toql::table_mapper::mapped::Mapped::map
    &mut TableMapper -> Result<(), ToqlError>
    trait method
    toql::tree::tree_map::TreeMap::map
    &mut TableMapperRegistry -> Result<(), ToqlError>
    method
    toql::prelude::QueryParser::parse
    &str -> Result<Query<M>, ToqlError>
    Method to parse a string This fails if the syntax is …
    trait method
    toql::backend::Backend::registry
    &Backend -> Result<RwLockReadGuard<TableMapperRegistry>, ToqlError>
    Return the registry with all table mappers
    method
    toql::prelude::Join::into_entity
    Join<T> -> Result<T, ToqlError>
    Unwraps join into its entity. Can fail
    method
    toql::prelude::TableMapperRegistry::insert_new_mapper
    &mut TableMapperRegistry -> Result<String, ToqlError>
    Insert a mapper for a given struct. The Mapped trait is …
    trait method
    toql::tree::tree_identity::TreeIdentity::auto_id
    I -> Result<bool, ToqlError>
    Returns true, if struct located at descendents has …
    method
    toql::prelude::Join::auto_id
    I -> Result<bool, ToqlError>
    trait method
    toql::tree::tree_insert::TreeInsert::columns
    I -> Result<SqlExpr, ToqlError>
    Return columns of struct located at descendents.
    method
    toql::prelude::Join::columns
    I -> Result<SqlExpr, ToqlError>
    trait method
    toql::backend::Backend::registry_mut
    &mut Backend -> Result<RwLockWriteGuard<TableMapperRegistry>, ToqlError>
    Return a mutable registry with all table mappers
    method
    toql::table_mapper::TableMapper::from_mapped_with_handler
    H -> Result<TableMapper, ToqlError>
    Create a new mapper from a struct that implements the …
    trait method
    toql::tree::tree_predicate::TreePredicate::columns
    I -> Result<Vec<String>, ToqlError>
    Return the key column names
    method
    toql::sql_builder::SqlBuilder::mapper_for_query_path
    &SqlBuilder, &FieldPath -> Result<&TableMapper, ToqlError>
    method
    toql::sql_builder::SqlBuilder::joined_mapper_for_local_path
    &SqlBuilder, &FieldPath -> Result<&TableMapper, ToqlError>
    method
    toql::sql_builder::SqlBuilder::joined_mapper_for_query_path
    &SqlBuilder, &FieldPath -> Result<&TableMapper, ToqlError>
    method
    toql::sql_builder::SqlBuilder::merge_expr
    &SqlBuilder, &str -> Result<(SqlExpr, SqlExpr), ToqlError>
    method
    toql::sql_builder::SqlBuilder::build_delete
    &mut SqlBuilder, &Query<M> -> Result<BuildResult, ToqlError>
    Build a delete statement from the Query. This build a …
    method
    toql::sql_builder::SqlBuilder::build_merge_delete
    &mut SqlBuilder, &FieldPath, SqlExpr -> Result<SqlExpr, ToqlError>
    trait method
    toql::identity::Identity::set_column
    &mut Identity, &str, &SqlArg -> Result<(), ToqlError>
    Sets the value for an identity column
    method
    toql::prelude::TableMapperRegistry::insert_new_mapper_with_handler
    &mut TableMapperRegistry, H -> Result<String, ToqlError>
    Insert a mapper for a given struct with a FieldHandler …
    method
    toql::sql_builder::SqlBuilder::build_select
    &mut SqlBuilder, &str, &Query<M> -> Result<BuildResult, ToqlError>
    Build a normal select statement from the Query.
    method
    toql::sql_builder::SqlBuilder::columns_expr
    &SqlBuilder, &str, &str -> Result<(SqlExpr, SqlExpr), ToqlError>
    method
    toql::prelude::SqlArg::forward
    &mut I -> Result<usize, E>
    where
    E: From<ToqlError>
    method
    toql::prelude::Join::forward
    &mut I -> Result<usize, E>
    where
    E: From<ToqlError>
    method
    toql::sql_builder::SqlBuilder::build_count
    &mut SqlBuilder, &str, &Query<M>, bool -> Result<BuildResult, ToqlError>
    Build a count statement from the Query. This build a count …
    trait method
    toql::tree::tree_identity::TreeIdentity::set_id
    &mut TreeIdentity, I, &IdentityAction -> Result<(), ToqlError>
    Set or refresh keys of structs located at descendents.
    trait method
    toql::tree::tree_predicate::TreePredicate::args
    &TreePredicate, I, &mut Vec<SqlArg> -> Result<(), ToqlError>
    Return the key column values
    function
    toql::backend::delete::delete
    &mut B, Q -> Result<(), E>
    where
    E: From<ToqlError>
    method
    toql::prelude::Join::set_id
    &mut Join<T>, I, &IdentityAction -> Result<(), ToqlError>
    method
    toql::prelude::Join::args
    &Join<T>, I, &mut Vec<SqlArg> -> Result<(), ToqlError>
    function
    toql::backend::count::count
    &mut B, Q -> Result<u64, E>
    where
    E: From<ToqlError>
    function
    toql::backend::insert::insert
    &mut B, &mut [Q], Paths -> Result<(), E>
    where
    E: From<ToqlError>
    method
    toql::prelude::SqlArg::from_row
    &R, &mut usize, &mut I -> Result<Option<SqlArg>, E>
    where
    E: From<ToqlError>
    method
    toql::prelude::Join::index
    I, &[R], usize, &mut HashMap<u64, Vec<usize>> -> Result<(), E>
    where
    E: From<ToqlError>
    function
    toql::backend::update::update
    &mut B, &mut [Q], Fields -> Result<(), E>
    where
    E: From<ToqlError>
    trait method
    toql::tree::tree_update::TreeUpdate::update
    &TreeUpdate, I, &HashSet<String>, &HashSet<String>, &mut Vec<SqlExpr> -> Result<(), ToqlError>
    trait method
    toql::tree::tree_insert::TreeInsert::values
    &TreeInsert, I, &HashSet<String>, &mut J, &mut SqlExpr -> Result<(), ToqlError>
    Return values of structs located at descendents. The …
    method
    toql::prelude::Join::update
    &Join<T>, I, &HashSet<String>, &HashSet<String>, &mut Vec<SqlExpr> -> Result<(), ToqlError>
    method
    toql::prelude::Join::from_row
    &R, &mut usize, &mut I -> Result<Option<Join<T>>, E>
    where
    E: From<ToqlError>
    function
    toql::backend::insert::plan_insert_order
    &HashMap<String, TableMapper>, &[S], &mut Vec<HashSet<String>>, &mut HashSet<String>, &mut Vec<HashSet<String>> -> Result<(), ToqlError>
    function
    toql::backend::load::load
    &mut B, Q, Option<Page> -> Result<(Vec<T>, Option<PageCounts>), E>
    where
    E: From<ToqlError>
    method
    toql::prelude::Join::values
    &Join<T>, I, &HashSet<String>, &mut J, &mut SqlExpr -> Result<(), ToqlError>
    method
    toql::prelude::Join::merge
    &mut Join<T>, I, &str, &[R], usize, &HashMap<u64, Vec<usize>>, &SelectStream -> Result<(), E>
    where
    E: From<ToqlError>