use sql_cli::data::data_view::DataView;
use sql_cli::data::datatable::{DataTable, DataColumn, DataRow, DataValue};
use sql_cli::ui::viewport_manager::ViewportManager;
use std::sync::Arc;
fn main() {
let mut table = DataTable::new("test");
table.add_column(DataColumn::new("Name"));
table.add_column(DataColumn::new("Age"));
table.add_column(DataColumn::new("City"));
table.add_column(DataColumn::new("Comments"));
table.add_column(DataColumn::new("Status"));
table.add_row(DataRow::new(vec![
DataValue::String("Alice".to_string()),
DataValue::Integer(30),
DataValue::String("NYC".to_string()),
DataValue::String("Long comment".to_string()),
DataValue::String("Active".to_string()),
])).unwrap();
let mut dataview = DataView::new(Arc::new(table));
println!("Before hiding: {} columns", dataview.column_count());
dataview.hide_column(3);
println!("After hiding: {} columns", dataview.column_count());
let mut viewport = ViewportManager::new(Arc::new(dataview));
let rows = vec![vec![
"Alice".to_string(),
"30".to_string(),
"NYC".to_string(),
"Long comment".to_string(),
"Active".to_string(),
]];
let (headers, data, widths) = viewport.get_visual_display(100, &rows);
println!("\nHeaders: {:?}", headers);
println!("Data: {:?}", data);
println!("\nAlignment check:");
for (i, header) in headers.iter().enumerate() {
if let Some(row) = data.first() {
if let Some(value) = row.get(i) {
println!(" {} -> {}", header, value);
}
}
}
}