Macro ormx::conditional_query_as [−][src]
An improved version of sqlx::query_as!
.
Syntax
The syntax of conditional_query_as!
differs from the original sqlx::query_as!
.
Formally, it accepts this syntax:
ⓘ
conditional_query_as!( PATH, ( LITERAL | ?(EXPRESSION) | PATTERN = EXPRESSION => { (LITERAL | ?(EXPRESSION))* } )* )
Arguments are now provided inline with the query like this:
ⓘ
let user_id = Some(2); conditional_query_as!( User, "SELECT * FROM users WHERE user_id =" ?(user_id.unwrap()) );
Also, conditional_query_as!
can parse multiple string literals like this:
ⓘ
conditional_query_as!( User, "SELECT * FROM users" "WHERE user_id =" ?(user_id) "AND first_name =" ?(first_name) );
Conditions
conditional_query_as!
can be used to have queries depend on a condition during runtime.
This is achieved by checking the correctness of all possible queries at compile time.
The syntax for a condition is
ⓘ
PATTERN = EXPRESSION => { (LITERAL | ?(EXPRESSION))* }
Please note that conditions can’t be nested right now. Also, the number of conditions per query is currently limited to 5.
Example:
ⓘ
let limit = Some(10); conditional_query_as!( User, "SELECT * FROM users" Some(l) = limit => { "LIMIT" ?(l) } );