use crate::extension::odbc::{OdbcColumn, OdbcColumnItem};
use odbc_common::print_table::Print;
use odbc_common::{StyledString, Table, TableTheme, TextStyle};
#[derive(Debug, Default)]
pub struct QueryResult {
pub columns: Vec<OdbcColumn>,
pub data: Vec<Vec<OdbcColumnItem>>,
}
impl Print for QueryResult {
fn convert_table(self) -> anyhow::Result<Table> {
let headers: Vec<StyledString> = self
.columns
.iter()
.map(|x| StyledString::new(x.name.to_string(), TextStyle::default_header()))
.collect();
let rows = self
.data
.iter()
.map(|x| {
x.iter()
.map(|y| y.to_string())
.map(|y| StyledString::new(y, TextStyle::basic_left()))
.collect::<Vec<_>>()
})
.collect();
Ok(Table::new(headers, rows, TableTheme::rounded()))
}
}