Skip to main content

pg_extras/queries/
index_scans.rs

1use crate::{queries::shared::Query, PgStatsVersion};
2use sqlx::{postgres::PgRow, Row};
3
4#[derive(Debug, Clone, serde::Serialize)]
5pub struct IndexScans {
6    pub schemaname: String,
7    pub table: String,
8    pub index: String,
9    pub index_size: String,
10    pub index_scans: i64,
11}
12
13impl Query for IndexScans {
14    fn new(row: &PgRow) -> Self {
15        Self {
16            schemaname: row.try_get("schemaname").unwrap_or_default(),
17            table: row.try_get("table").unwrap_or_default(),
18            index: row.try_get("index").unwrap_or_default(),
19            index_size: row.try_get("index_size").unwrap_or_default(),
20            index_scans: row.try_get("index_scans").unwrap_or_default(),
21        }
22    }
23
24    fn to_row(&self) -> prettytable::Row {
25        row![
26            self.schemaname,
27            self.table,
28            self.index,
29            self.index_size,
30            self.index_scans.to_string()
31        ]
32    }
33
34    fn headers() -> prettytable::Row {
35        row!["schemaname", "table", "index", "index_size", "index_scans"]
36    }
37
38    fn read_file(_pg_statement_version: Option<PgStatsVersion>) -> String {
39        include_str!("../sql/index_scans.sql").to_string()
40    }
41}