querqle 0.1.2

A small library made to perform sql queries thru the odbc-api library, and convert the results directly into data structures.
Documentation
#[cfg(test)]
mod tests {
    use std::{error::Error, fs, io::{self, BufRead}};
    use crate::{Environment, QueryResult};


    #[test]
    fn test_to_csv() -> Result<(), Box<dyn Error>> {
        let env = Environment::new()?;
        let conn = env.connect_with_connection_string("DRIVER={SQLITE3 ODBC Driver};Database=test.db;{Journal Mode}=WAL")?;
        let query_strings = r#"
            DROP TABLE IF EXISTS CSV_TEST;
            CREATE TABLE CSV_TEST(
                ID INT PRIMARY KEY,
                FIRST_NAME VARCHAR(50) NOT NULL,
                LAST_NAME VARCHAR(50) NOT NULL
            );
            INSERT INTO CSV_TEST (ID, FIRST_NAME, LAST_NAME)
                VALUES (1,"Scott","Cawthorn"),
                (2,"Freddy","Fazbear");
            SELECT * FROM CSV_TEST;
            DROP TABLE IF EXISTS CSV_TEST
            "#.split(';').collect();
        let results = conn.execute_queries(query_strings)?;
        let result = results.get(results.len()-2).unwrap();
        fs::remove_file("test.csv")?;   
        result.to_csv("test.csv")?;
        let file = fs::File::open("test.csv")?;
        let reader = io::BufReader::new(file);
        let mut file_lines:Vec<String> = Vec::new();
        for line in reader.lines() {
            file_lines.push(line?);
        } 
        assert!(file_lines.get(0).unwrap() == "ID, FIRST_NAME, LAST_NAME");
        assert!(file_lines.get(1).unwrap() == "1, Scott, Cawthorn");
        assert!(file_lines.get(2).unwrap() == "2, Freddy, Fazbear");
        fs::remove_file("test.csv")?;   
        Ok(())
    }

    #[test]
    fn test_multiple_queries() -> Result<(),Box<dyn Error>> {
        let env = Environment::new()?;
        let conn = env.connect_with_connection_string("DRIVER={SQLITE3 ODBC Driver};Database=test.db;{Journal Mode}=WAL")?;
        let query_strings = r#"
            DROP TABLE IF EXISTS MULTQUERIESTEST;
            CREATE TABLE MULTQUERIESTEST(
                ID INT PRIMARY KEY,
                FIRST_NAME VARCHAR(50) NOT NULL,
                LAST_NAME VARCHAR(50) NOT NULL
            );
            INSERT INTO MULTQUERIESTEST (ID, FIRST_NAME, LAST_NAME )
                VALUES (1,"Peter", "Griffin"),
                (2, 'Lois','Griffin');
            SELECT * FROM MULTQUERIESTEST;
            DROP TABLE IF EXISTS MULTQUERIESTEST
        "#.split(';').collect();
        let results = conn.execute_queries(query_strings)?;
        let result = results.get(results.len()-2).unwrap();
        assert!(matches!(result, QueryResult::Result { rows: _, col_names: _ }));
        match result {
            QueryResult::Result { rows, col_names } => {
                        assert!(vec![vec!["1","Peter","Griffin"],vec!["2","Lois","Griffin"]]==*rows);
                        assert!(vec!["ID","FIRST_NAME","LAST_NAME"]==*col_names);
                        return Ok(());
                    }
            QueryResult::None =>{
                println!("empty");
                return Ok(());
            }
        };
    }





}