pg_extras/queries/
vacuum_stats.rs1use crate::{queries::shared::Query, PgStatsVersion};
2use sqlx::{postgres::PgRow, Row};
3
4#[derive(Debug, Clone, serde::Serialize)]
5pub struct VacuumStats {
6 pub schema: String,
7 pub table: String,
8 pub last_vacuum: String,
9 pub last_autovacuum: String,
10 pub rowcount: String,
11 pub dead_rowcount: String,
12 pub autovacuum_threshold: String,
13 pub expect_autovacuum: String,
14}
15
16impl Query for VacuumStats {
17 fn new(row: &PgRow) -> Self {
18 Self {
19 schema: row.try_get("schema").unwrap_or_default(),
20 table: row.try_get("table").unwrap_or_default(),
21 last_vacuum: row.try_get("last_vacuum").unwrap_or_default(),
22 last_autovacuum: row.try_get("last_autovacuum").unwrap_or_default(),
23 rowcount: row.try_get("rowcount").unwrap_or_default(),
24 dead_rowcount: row.try_get("dead_rowcount").unwrap_or_default(),
25 autovacuum_threshold: row.try_get("autovacuum_threshold").unwrap_or_default(),
26 expect_autovacuum: row.try_get("expect_autovacuum").unwrap_or_default(),
27 }
28 }
29
30 fn to_row(&self) -> prettytable::Row {
31 row![
32 self.schema,
33 self.table,
34 self.last_vacuum,
35 self.last_autovacuum,
36 self.rowcount,
37 self.dead_rowcount,
38 self.autovacuum_threshold,
39 self.expect_autovacuum
40 ]
41 }
42
43 fn headers() -> prettytable::Row {
44 row![
45 "schema",
46 "table",
47 "last_vacuum",
48 "last_autovacuum",
49 "rowcount",
50 "dead_rowcount",
51 "autovacuum_threshold",
52 "expect_autovacuum"
53 ]
54 }
55
56 fn read_file(_pg_statement_version: Option<PgStatsVersion>) -> String {
57 include_str!("../sql/vacuum_stats.sql").to_string()
58 }
59}