pg_named_args 0.1.0

PostgreSQL named arguments
Documentation

PostgreSQL named arguments

This library allows one to use named arguments in PostgreSQL queries. This library is especially aimed at supporting rust-postgres. A macro is provided to rewrite queries with named arguments, into a query and its positional arguments.

Example:

let (query, args) = pg_named_args!(
    r"
    SELECT location, time, report
    FROM weather_reports
    WHERE location = $location
        AND time BETWEEN $start AND $end
    ORDER BY location, time DESC
    ",
    {
        location,
        "start": &period.start,
        "end": &period.end,
    }
);
let rows = client.query($query, $args).await?;

As can be seen from the example above a shortcut is allowed when the name of the argument is identical to the variable name, similar to what's allowd in Rust struc's.

For INSERT's a special syntax is supported, which helps to avoid mismatches between the list of column names and the values:

let (query, args) = pg_named_args!(
    r"
    INSERT INTO weather_reports
    ($[
        location,
        time,
        report
    ]) VALUES ($[..])
    ",
    { location, time, report }
);
client.execute($query, $args).await?;

Goals

  • Increase usability of executing PostgreSQL queries from Rust.

  • Reduce the risk of mismatching query arguments.

  • Basic support for using rust-analyzer to help one with the syntax.

Contributing

We welcome community contributions to this project.

Please read our Contributor Terms before you make any contributions.

Any contribution intentionally submitted for inclusion, shall comply with the Rust standard licensing model (MIT OR Apache 2.0) and therefore be dual licensed as described below, without any additional terms or conditions:

License

This contribution is dual licensed under EITHER OF

at your option.