Skip to main content

query_forge/output/formats/
markdown.rs

1use crate::{QueryResult, QueryValue};
2use crate::value::display_value;
3
4use super::utils::escape_markdown_cell;
5
6pub fn render_markdown(result: &QueryResult) -> String {
7    let mut output = String::new();
8
9    output.push('|');
10    for column in &result.columns {
11        output.push(' ');
12        output.push_str(&escape_markdown_cell(column));
13        output.push(' ');
14        output.push('|');
15    }
16    output.push('\n');
17
18    output.push('|');
19    for _ in &result.columns {
20        output.push_str(" --- |");
21    }
22
23    for row in &result.rows {
24        output.push('\n');
25        output.push('|');
26        for column_index in 0..result.columns.len() {
27            let value = row.get(column_index).unwrap_or(&QueryValue::Null);
28            output.push(' ');
29            output.push_str(&escape_markdown_cell(&display_value(value)));
30            output.push(' ');
31            output.push('|');
32        }
33    }
34
35    output
36}