csvsql 0.1.4

SQL like engine that works on CSV file.
Documentation
use std::rc::Rc;

use crate::{
    error::CvsSqlError,
    result_set_metadata::{Metadata, SimpleResultSetMetadata},
    results::ResultSet,
    results_data::{DataRow, ResultsData},
    value::Value,
};

pub(crate) fn build_empty_results(cols: &[&str]) -> Result<ResultSet, CvsSqlError> {
    let mut metadata = SimpleResultSetMetadata::new(None);
    for col in cols {
        metadata.add_column(col);
    }
    let metadata = Metadata::Simple(metadata);

    let row = DataRow::new(vec![]);
    let data = vec![row];
    let data = ResultsData::new(data);
    let metadata = Rc::new(metadata);
    let results = ResultSet { metadata, data };
    Ok(results)
}

pub(crate) fn build_simple_results(data: Vec<(&str, Value)>) -> Result<ResultSet, CvsSqlError> {
    let mut metadata = SimpleResultSetMetadata::new(None);
    for col in &data {
        metadata.add_column(col.0);
    }
    let metadata = Metadata::Simple(metadata);

    let mut row = vec![];
    for col in data {
        row.push(col.1);
    }
    let row = DataRow::new(row);
    let data = vec![row];
    let data = ResultsData::new(data);
    let metadata = Rc::new(metadata);
    let results = ResultSet { metadata, data };
    Ok(results)
}