use std::fmt::Display;
use crate::model::sql_query::response::Response;
pub struct CsvFormatter {
pub resp: Response,
}
impl Display for CsvFormatter {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
if !self.resp.rows.is_empty() {
let first_row = self.resp.rows.first().unwrap();
let col_names = first_row
.columns()
.iter()
.map(|col| col.name().to_string())
.collect::<Vec<_>>();
for col_name in &col_names {
f.write_fmt(format_args!("{col_name},"))?;
}
f.write_str("\n")?;
for row in &self.resp.rows {
for column in row.columns() {
f.write_fmt(format_args!("{:?},", column.value()))?;
}
f.write_str("\n")?;
}
}
Ok(())
}
}