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](https://github.com/sfackler/rust-postgres). A macro is provided
to rewrite queries with named arguments, into a query and its positional
arguments.

Example:

```rust
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:

```rust
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](CONTRIBUTING.md#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

- Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT]LICENSE-MIT or <http://opensource.org/licenses/MIT>)

at your option.