Macro diesel::sql_function [] [src]

macro_rules! sql_function {
    ($fn_name:ident, $struct_name:ident, ($($arg_name:ident: $arg_type:ty),*) -> $return_type:ty) => { ... };
    ($fn_name:ident, $struct_name:ident, ($($arg_name:ident: $arg_type:ty),*) -> $return_type:ty,
    $docs: expr) => { ... };
    ($fn_name:ident, $struct_name:ident, ($($arg_name:ident: $arg_type:ty),*)) => { ... };

Declare a sql function for use in your code. Useful if you have your own SQL functions that you'd like to use. You can optionally provide a doc string as well. $struct_name should just be any unique name. You will not need to reference it in your code, but it is required due to the fact that concat_idents! is useless.

This will generate a rust function with the same name to construct the expression, and a helper type which represents the return type of that function. The function will automatically convert its arguments to expressions.


sql_function!(canon_crate_name, canon_crate_name_t, (a: types::VarChar) -> types::VarChar);

let target_name = "diesel";
// This will generate the following SQL
// SELECT * FROM crates WHERE canon_crate_name( = canon_crate_name($1)