From ff6c910b2ff18455d575f7e6c900bd114f55922e Mon Sep 17 00:00:00 2001
From: Philippe Loctaux
Date: Sat, 6 May 2023 16:11:16 +0200
Subject: [PATCH] admin/settings: maintenance page, show database size
---
Cargo.lock | 7 ++
.../queries/settings/database_size.sql | 2 +
crates/database/sqlx-data.json | 18 +++
crates/database/src/tables/settings.rs | 7 ++
crates/ezidam/src/menu/items/admin.rs | 4 +
crates/ezidam/src/page.rs | 5 +
crates/ezidam/src/routes/admin.rs | 9 ++
crates/ezidam/src/routes/admin/settings.rs | 24 ++++
.../pages/admin/settings/branding.html.tera | 2 +
.../admin/settings/maintenance.html.tera | 115 ++++++++++++++++++
.../pages/admin/settings/security.html.tera | 2 +
crates/settings/Cargo.toml | 1 +
crates/settings/src/database.rs | 7 ++
13 files changed, 203 insertions(+)
create mode 100644 crates/database/queries/settings/database_size.sql
create mode 100644 crates/ezidam/templates/pages/admin/settings/maintenance.html.tera
diff --git a/Cargo.lock b/Cargo.lock
index edb36bb..4f2df05 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1259,6 +1259,12 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
+[[package]]
+name = "human_bytes"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27e2b089f28ad15597b48d8c0a8fe94eeb1c1cb26ca99b6f66ac9582ae10c5e6"
+
[[package]]
name = "humansize"
version = "2.1.3"
@@ -2959,6 +2965,7 @@ version = "0.0.0"
dependencies = [
"chrono",
"database",
+ "human_bytes",
"id",
"thiserror",
"url",
diff --git a/crates/database/queries/settings/database_size.sql b/crates/database/queries/settings/database_size.sql
new file mode 100644
index 0000000..4043fc3
--- /dev/null
+++ b/crates/database/queries/settings/database_size.sql
@@ -0,0 +1,2 @@
+select page_count * page_size
+FROM pragma_page_count(), pragma_page_size();
\ No newline at end of file
diff --git a/crates/database/sqlx-data.json b/crates/database/sqlx-data.json
index d93011c..76710b4 100644
--- a/crates/database/sqlx-data.json
+++ b/crates/database/sqlx-data.json
@@ -1598,6 +1598,24 @@
},
"query": "select id,\n created_at as \"created_at: DateTime\",\n updated_at as \"updated_at: DateTime\",\n label,\n redirect_uri,\n secret,\n is_confidential as \"is_confidential: bool\",\n is_archived as \"is_archived: bool\"\nfrom apps\n\nwhere id is (?)\n"
},
+ "e977ca16c7bd7ec4125725ff5e42d3c547634e2b608d6be91814bce657e07b65": {
+ "describe": {
+ "columns": [
+ {
+ "name": "page_count * page_size",
+ "ordinal": 0,
+ "type_info": "Int"
+ }
+ ],
+ "nullable": [
+ null
+ ],
+ "parameters": {
+ "Right": 0
+ }
+ },
+ "query": "select page_count * page_size\nFROM pragma_page_count(), pragma_page_size();"
+ },
"eaf0744f65a1de803fa8cc21b67bad4bdf22760d431265cf97b911e6456b2fd8": {
"describe": {
"columns": [
diff --git a/crates/database/src/tables/settings.rs b/crates/database/src/tables/settings.rs
index 00d84a8..6c9c096 100644
--- a/crates/database/src/tables/settings.rs
+++ b/crates/database/src/tables/settings.rs
@@ -31,6 +31,13 @@ impl Settings {
.map_err(handle_error)
}
+ pub async fn database_size(conn: impl SqliteExecutor<'_>) -> Result