Skip to main content

sqlite_extras/queries/
index_size.rs

1use sqlx::{sqlite::SqliteRow, Row};
2
3use super::shared::Query;
4
5#[derive(Debug, Clone)]
6pub struct IndexSize {
7    pub name: String,
8    pub table_name: String,
9    pub column_name: String,
10    pub payload_size: u64,
11    pub unused_size: u64,
12    pub page_size: u64,
13    pub cells: u64,
14    pub pages: u64,
15    pub max_payload_siz: u64,
16}
17
18impl Query for IndexSize {
19    fn new(row: &SqliteRow) -> Self {
20        Self {
21            name: row.get(0),
22            table_name: row.get(1),
23            column_name: row.get(2),
24            payload_size: row.get(3),
25            unused_size: row.get(4),
26            page_size: row.get(5),
27            cells: row.get(6),
28            pages: row.get(7),
29            max_payload_siz: row.get(8),
30        }
31    }
32
33    fn to_row(&self) -> prettytable::Row {
34        row![
35            self.name,
36            self.table_name,
37            self.column_name,
38            self.payload_size,
39            self.unused_size,
40            self.page_size,
41            self.cells,
42            self.pages,
43            self.max_payload_siz
44        ]
45    }
46
47    fn headers() -> prettytable::Row {
48        row![
49            "name",
50            "table_name",
51            "column_name",
52            "payload_size",
53            "unused_size",
54            "page_size",
55            "cells",
56            "pages",
57            "max_payload_siz"
58        ]
59    }
60
61    fn read_file() -> String {
62        include_str!("../sql/index_size.sql").to_string()
63    }
64}