query_forge/output/formats/
csv.rs1use crate::QueryResult;
2use crate::value::display_value;
3
4use super::utils::escape_csv_field;
5
6pub fn render_csv(result: &QueryResult) -> String {
7 let mut output = String::new();
8 output.push_str(
9 &result
10 .columns
11 .iter()
12 .map(|column| escape_csv_field(column))
13 .collect::<Vec<_>>()
14 .join(","),
15 );
16
17 for row in &result.rows {
18 output.push('\n');
19 output.push_str(
20 &row.iter()
21 .map(display_value)
22 .map(|value| escape_csv_field(&value))
23 .collect::<Vec<_>>()
24 .join(","),
25 );
26 }
27
28 output
29}