Function diesel::debug_query

source ·
pub fn debug_query<DB, T>(query: &T) -> DebugQuery<'_, T, DB>
Expand description

Takes a query QueryFragment expression as an argument and returns a type that implements fmt::Display and fmt::Debug to show the query.

The Display implementation will show the exact query being sent to the server, with a comment showing the values of the bind parameters. The Debug implementation will include the same information in a more structured form, and respects pretty printing.

§Example

§Returning SQL from a count statement:

let sql = debug_query::<DB, _>(&users.count()).to_string();
assert_eq!(sql, "SELECT COUNT(*) FROM `users` -- binds: []");

let query = users.find(1);
let debug = debug_query::<DB, _>(&query);
assert_eq!(debug.to_string(), "SELECT `users`.`id`, `users`.`name` FROM `users` \
    WHERE (`users`.`id` = ?) -- binds: [1]");

let debug = format!("{:?}", debug);
let expected = "Query { \
    sql: \"SELECT `users`.`id`, `users`.`name` FROM `users` WHERE \
        (`users`.`id` = ?)\", \
    binds: [1] \
}";
assert_eq!(debug, expected);