1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use maud::{html, Markup};

use dbui_core::ctx::RequestContext;
use dbui_core::database::results::ResultSet;
use dbui_core::result::Result;

pub fn results(ctx: &RequestContext, sql: &str, result: &ResultSet) -> Result<Markup> {
  let content = html! {
    div.uk-section.uk-section-small {
      div.uk-container {
        div.uk-text-center {
          h1.uk-heading-hero {
            "SQL Results"
          }
        }
        div {
          (crate::card(&ctx, html! {
            pre { (sql) }
          }))
          div.uk-margin-top {
            (crate::card(&ctx, html! {
              table.uk-table.uk-table-divider.uk-text-left {
                thead {
                  tr {
                    @for c in result.columns() {
                      th { (c.name()) }
                    }
                  }
                }
                tbody {
                  @if result.data().is_empty() {
                    tr {
                      td colspan=(result.columns().len()) { "No rows returned" }
                    }
                  }
                  @for row in result.data() {
                    tr {
                      @for cell in row {
                        td {
                          (cell.as_ref().unwrap_or(&"∅".to_string()))
                        }
                      }
                    }
                  }
                }
              }
            }))
          }
        }
      }
    }
  };
  Ok(html! {
    (crate::page(ctx, "SQL Results", content)?)
  })
}