use lodviz_core::core::column_inference::{infer_column_types, InferenceConfig};
use lodviz_core::io::parse_csv;
use std::fs;
fn main() {
let csv_content =
fs::read_to_string("/tmp/test_inference.csv").expect("Failed to read test CSV");
let (table, columns) = parse_csv(&csv_content).expect("Failed to parse CSV");
println!("Columns found: {:?}", columns);
println!("\nSample rows:");
for (i, row) in table.rows().iter().take(3).enumerate() {
println!(" Row {}: {:?}", i + 1, row);
}
let column_types = infer_column_types(&table, &columns, InferenceConfig::default());
println!("\n=== INFERRED COLUMN TYPES ===");
for (col_name, inferred) in columns.iter().zip(column_types.iter()) {
println!("\n Column: {}", col_name);
println!(" Storage Type: {:?}", inferred.storage_type);
println!(" Semantic Type: {:?}", inferred.semantic_type);
println!(" Confidence: {:.2}%", inferred.confidence * 100.0);
println!(" Cardinality: {}", inferred.cardinality);
println!(" Null Count: {}", inferred.null_count);
println!(" Sample Size: {}", inferred.sample_size);
println!(" Metadata:");
println!(" Is Integer: {}", inferred.metadata.is_integer);
println!(
" Has Currency: {}",
inferred.metadata.has_currency_symbols
);
println!(
" Low Cardinality: {}",
inferred.metadata.is_low_cardinality
);
}
}