use sql_cli::csv_datasource::CsvApiClient;
fn main() -> anyhow::Result<()> {
let mut csv_client = CsvApiClient::new();
csv_client.load_csv(
"/home/me/dev/sql-cli/BusinessCrimeBoroughLevel.csv",
"crime_data",
)?;
println!("CSV file loaded successfully!\n");
let queries = vec![
("SELECT * FROM crime_data", "All data"),
("SELECT * FROM crime_data WHERE Borough = 'Bronx'", "Filter by Bronx"),
("SELECT * FROM crime_data WHERE \"Major Class Description\" = 'Burglary'", "Burglary crimes"),
("SELECT * FROM crime_data WHERE \"Major Class Description\".Contains('Criminal')", "Criminal related"),
("SELECT Borough, \"Major Class Description\", \"Minor Class Description\" FROM crime_data", "Specific columns"),
("SELECT * FROM crime_data WHERE Borough.Contains('Aviation') AND \"Major Class Description\".Contains('Damage')", "Aviation damage crimes"),
];
for (query, description) in queries {
println!("Query: {}", query);
println!("Description: {}", description);
match csv_client.query_csv(query) {
Ok(result) => {
println!("Results: {} rows", result.count);
if let Some(first_row) = result.data.first() {
if let Some(obj) = first_row.as_object() {
println!("First row sample:");
for (key, value) in obj.iter().take(5) {
println!(" {}: {}", key, value);
}
}
}
}
Err(e) => {
println!("Error: {}", e);
}
}
println!("\n---\n");
}
Ok(())
}