query-forge 0.1.0

Run SQL queries on XLSX/XML/CSV/JSON/JSONL/Markdown inputs and export results as text, CSV, JSONL, Markdown, XML, or XLSX
Documentation
use anyhow::Result;
use clap::Parser;

mod cli;
mod input;
mod output;
mod query;

use crate::cli::Cli;

fn main() -> Result<()> {
    let cli = Cli::parse();
    let query = query::load_query(&cli)?;
    let params = query::parse_query_params(&cli.params)?;
    let input_specs = input::parse_input_specs(&cli.input, cli.sheet.as_deref())?;
    let workbook_inputs = input_specs
        .iter()
        .map(|input| query_forge::WorkbookInput {
            path: input.path.as_path(),
            sheet_name: input.sheet_name.as_deref(),
        })
        .collect::<Vec<_>>();

    let result = query_forge::run_query_with_params_multi_inputs(
        &workbook_inputs,
        &query,
        &params,
        !cli.no_headers,
    )?;

    output::write_query_result(&result, cli.output.as_deref(), cli.format)?;

    Ok(())
}