#postgresql #serde-json #sqlx #newtype #pg-row #sqlx-pgrow-serde

kurtbuilds_sqlx_serde

serde-compatible newtype wrapper for sqlx::postgres::PgRow

4 releases

0.3.3 Oct 7, 2024
0.3.2 Sep 10, 2024
0.3.1 Sep 2, 2024
0.3.0 Sep 2, 2024

#652 in Encoding

Download history 24/week @ 2024-10-22 83/week @ 2024-10-29 27/week @ 2024-11-05 21/week @ 2024-11-12 13/week @ 2024-11-19 1/week @ 2024-11-26 19/week @ 2024-12-03 8/week @ 2024-12-10 8/week @ 2024-12-24 9/week @ 2025-01-07 29/week @ 2025-01-14 5/week @ 2025-01-21 15/week @ 2025-01-28 82/week @ 2025-02-04

133 downloads per month

MIT license

19KB
260 lines

sqlx-pgrow-serde

Check lib.rs for tests, which should give you a clear idea how to use the crate.

async fn main() {
    let row: PgRow = conn.fetch_one("select 3.3").await.unwrap();
    // option 1 - use function calls
    let headers: Vec<String> = read_headers(&row);
    let row: Vec<serde_json::Value> = read_row(&row);
    // option 2 - serializes as a header -> value map
    let row = SerMapPgRow::from(row);
    let row: serde_json::Value = serde_json::to_value(&row).unwrap();
    // option 3 - serializes as a serde_json::Array
    let row = SerVecPgRow::from(row);
    let row: serde_json::Value = serde_json::to_value(&row).unwrap();
}

Look at the SerMapPgRow and SerVecPgRow structs if you want to use #[serialize_with(...)] on your structs.

Dependencies

~14–30MB
~485K SLoC