serde-sqlx 0.0.1

Allows deserializing Postgres rows into Rust types using serde
Documentation
mod util;

use util::{fetch_all, fetch_one, fetch_optional};
#[tokio::test]
async fn unannotated_as_string() {
    let row: String = fetch_one("SELECT 'a string' AS greeting").await.unwrap();
    assert_eq!(row, "a string");
}

#[tokio::test]
async fn text_as_string() {
    let row: String = fetch_one("SELECT 'a string' :: TEXT AS greeting")
        .await
        .unwrap();
    assert_eq!(row, "a string");
}

#[tokio::test]
async fn bpchar_as_string() {
    let row: String = fetch_one("SELECT 'a string' :: BPCHAR AS greeting")
        .await
        .unwrap();
    assert_eq!(row, "a string");
}

#[tokio::test]
async fn varchar_as_string() {
    let row: String = fetch_one("SELECT 'a string' :: VARCHAR AS greeting")
        .await
        .unwrap();
    assert_eq!(row, "a string");
}

#[tokio::test]
async fn unannotated_as_string_opt() {
    let rows: Vec<Option<String>> =
        fetch_all("SELECT 'a string' AS greeting UNION ALL SELECT NULL")
            .await
            .unwrap();
    assert_eq!(rows, vec![Some("a string".to_owned()), None]);
}

#[tokio::test]
async fn text_as_string_opt() {
    let rows: Vec<Option<String>> =
        fetch_all("SELECT 'a string' :: TEXT AS greeting UNION ALL SELECT NULL")
            .await
            .unwrap();
    assert_eq!(rows, vec![Some("a string".to_owned()), None]);
}

#[tokio::test]
async fn bpchar_as_string_opt() {
    let rows: Vec<Option<String>> =
        fetch_all("SELECT 'a string' :: BPCHAR AS greeting UNION ALL SELECT NULL")
            .await
            .unwrap();
    assert_eq!(rows, vec![Some("a string".to_owned()), None]);
}

#[tokio::test]
async fn varchar_as_string_opt() {
    let rows: Option<String> =
        fetch_optional("SELECT 'a string' :: VARCHAR AS greeting UNION ALL SELECT NULL")
            .await
            .unwrap();

    assert_eq!(rows, Some("a string".to_owned()));
}