Skip to main content

query_forge/output/formats/
csv.rs

1use 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}