use vantage_table::mocks::MockTableSource;
use vantage_table::prelude::*;
fn main() {
let datasource1 = MockTableSource::new();
let users_table = Table::new("users", datasource1)
.with_column("id")
.with_column("name")
.with_column("email");
let datasource2 = MockTableSource::new();
let orders_table = Table::new("orders", datasource2)
.with_column("order_id")
.with_column("customer_id")
.with_column("amount")
.with_column("status");
let table_like_users: Box<dyn TableLike> = Box::new(users_table);
let table_like_orders: Box<dyn TableLike> = Box::new(orders_table);
let tables: Vec<Box<dyn TableLike>> = vec![table_like_users, table_like_orders];
println!("Processing {} tables:", tables.len());
for (i, table) in tables.iter().enumerate() {
let columns = table.columns();
println!("\nTable {}: {} columns", i + 1, columns.len());
for (_key, column) in columns.iter() {
let alias_info = match column.alias() {
Some(alias) => format!(" (alias: {})", alias),
None => String::new(),
};
println!(" - {}{}", column.name(), alias_info);
}
}
let datasource3 = MockTableSource::new();
let products_table = Table::new("products", datasource3)
.with_column("product_id")
.with_column("name")
.with_column("price");
process_table_dynamically(Box::new(products_table));
}
fn process_table_dynamically(table: Box<dyn TableLike>) {
println!("\nProcessing table dynamically:");
let columns = table.columns();
println!("Found {} columns:", columns.len());
for (_key, column) in columns.iter() {
println!(
" Column: {} -> Expression: {:?}",
column.name(),
column.expr()
);
}
}