sql-middleware 0.7.3

Lightweight async wrappers for tokio-postgres, rusqlite, turso, and tiberius.
Documentation
use chrono::NaiveDateTime;
use serde_json::json;

pub(super) fn assert_selected_rows(res: &sql_middleware::ResultSet) {
    assert_alpha_row(res);
    assert_charlie_row(res);
    assert_juliet_row(res);
}

fn assert_alpha_row(res: &sql_middleware::ResultSet) {
    assert_eq!(*res.results[0].get("recid").unwrap().as_int().unwrap(), 1);
    assert_eq!(*res.results[0].get("a").unwrap().as_int().unwrap(), 1);
    assert_eq!(res.results[0].get("b").unwrap().as_text().unwrap(), "Alpha");
    assert_eq!(
        res.results[0].get("c").unwrap().as_timestamp().unwrap(),
        NaiveDateTime::parse_from_str("2024-01-01 08:00:01", "%Y-%m-%d %H:%M:%S").unwrap()
    );
    assert!((res.results[0].get("d").unwrap().as_float().unwrap() - 10.5).abs() < f64::EPSILON);
    assert!(*res.results[0].get("e").unwrap().as_bool().unwrap());
    assert_eq!(
        res.results[0].get("f").unwrap().as_blob().unwrap(),
        b"Blob12"
    );
    assert_eq!(
        json!(res.results[0].get("g").unwrap().as_text().unwrap()),
        json!(r#"{"name": "Alice", "age": 30}"#)
    );
}

fn assert_charlie_row(res: &sql_middleware::ResultSet) {
    assert_eq!(*res.results[2].get("recid").unwrap().as_int().unwrap(), 3);
    assert_eq!(*res.results[2].get("a").unwrap().as_int().unwrap(), 3);
    assert_eq!(
        res.results[2].get("b").unwrap().as_text().unwrap(),
        "Charlie"
    );
    assert_eq!(
        res.results[2].get("c").unwrap().as_timestamp().unwrap(),
        NaiveDateTime::parse_from_str("2024-01-03 10:30:00", "%Y-%m-%d %H:%M:%S").unwrap()
    );
    assert!((res.results[2].get("d").unwrap().as_float().unwrap() - 30.25).abs() < f64::EPSILON);
    assert!(*res.results[2].get("e").unwrap().as_bool().unwrap());
}

fn assert_juliet_row(res: &sql_middleware::ResultSet) {
    assert_eq!(*res.results[3].get("a").unwrap().as_int().unwrap(), 100);
    assert!((res.results[3].get("d").unwrap().as_float().unwrap() - 100.75).abs() < f64::EPSILON);
    assert_eq!(
        res.results[3].get("f").unwrap().as_blob().unwrap(),
        b"Blob11"
    );
}