rqlite_client 0.1.0

rqlite database client with optional extra convenience
Documentation
#![allow(missing_docs, unused_crate_dependencies)]
#![cfg(feature = "ureq")]

use rqlite_client::{
    request_type::{Get, Post},
    response::Query,
    DataType, Mapping, Request, RequestBuilder,
};
use test_rqlited::TestRqlited;

const TEST_TABLE: &str = "query_without_values";

#[test]
fn query_standard_without_values_test() {
    TestRqlited::get_or_init().run_test(|c| {
        let r = Request::<Post>::new().run(&c.execute().push_sql_str(&format!(
            "CREATE TABLE IF NOT EXISTS {TEST_TABLE} (id INTEGER NOT NULL PRIMARY KEY, name TEXT, age INTEGER)"
        )));

        assert!(r.is_ok(), "response error: {:?}", r.err().unwrap());

        let r = Request::<Get>::new().run(&c.query().set_sql_str(&format!(
            "SELECT name FROM {TEST_TABLE}"
        )));

        assert!(r.is_ok(), "response error: {:?}", r.err().unwrap());
        let r = r.unwrap();

        if let Some(Mapping::Standard(result)) = Query::from(r).results().next() {
            assert_eq!(result.columns[0], "name");
            assert_eq!(result.types[0], DataType::Text);
        } else {
            unreachable!()
        }
    });
}

#[test]
fn query_associative_without_values_test() {
    TestRqlited::get_or_init().run_test(|c| {
        let r = Request::<Post>::new().run(&c.execute().push_sql_str(&format!(
            "CREATE TABLE IF NOT EXISTS {TEST_TABLE} (id INTEGER NOT NULL PRIMARY KEY, name TEXT, age INTEGER)"
        )));

        assert!(r.is_ok(), "response error: {:?}", r.err().unwrap());

        let r = Request::<Post>::new().run(&c.query().push_sql_str(&format!(
            "SELECT name FROM {TEST_TABLE}"
        )).set_associative());

        assert!(r.is_ok(), "response error: {:?}", r.err().unwrap());
        let r = r.unwrap();

        if let Some(Mapping::Associative(result)) = Query::from(r).results().next() {
            assert!(result.rows.is_empty());
            assert_eq!(result.types["name"], DataType::Text);
        } else {
            unreachable!()
        }
    });
}