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

sqlx-pgrow-serde

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

7 releases

0.2.0 Jul 29, 2023
0.1.6 May 25, 2023
0.1.2 Mar 6, 2023

#2128 in Encoding

Download history 84/week @ 2024-11-20 80/week @ 2024-11-27 85/week @ 2024-12-04 87/week @ 2024-12-11 70/week @ 2024-12-18 42/week @ 2024-12-25 62/week @ 2025-01-01 78/week @ 2025-01-08 79/week @ 2025-01-15 75/week @ 2025-01-22 68/week @ 2025-01-29 89/week @ 2025-02-05 81/week @ 2025-02-12 91/week @ 2025-02-19 80/week @ 2025-02-26 70/week @ 2025-03-05

331 downloads per month

MIT license

15KB
246 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

~11–28MB
~421K SLoC