From c670201b86783dd864bf7bd2f329c64bb81bf1ba Mon Sep 17 00:00:00 2001
From: Philippe Loctaux
Date: Tue, 7 Mar 2023 08:42:23 +0100
Subject: [PATCH] settings: add base url, WIP flash system
---
Cargo.lock | 2 +
Cargo.toml | 3 +-
.../20230306214726_settings_url.down.sql | 2 +
.../20230306214726_settings_url.up.sql | 2 +
crates/database/queries/settings/get.sql | 3 +-
crates/database/queries/settings/set_url.sql | 5 +
crates/database/sqlx-data.json | 100 ++++++++++--------
crates/database/src/tables/settings.rs | 10 ++
crates/ezidam/Cargo.toml | 1 +
crates/ezidam/src/page.rs | 3 +
crates/ezidam/src/page/flash.rs | 29 +++++
crates/ezidam/src/page/template.rs | 29 +++--
crates/ezidam/src/routes.rs | 5 +-
crates/ezidam/src/routes/setup.rs | 32 ++++--
crates/ezidam/templates/setup.html.tera | 20 ++--
crates/settings/Cargo.toml | 3 +-
crates/settings/src/database.rs | 8 ++
crates/settings/src/lib.rs | 1 +
18 files changed, 190 insertions(+), 68 deletions(-)
create mode 100644 crates/database/migrations/20230306214726_settings_url.down.sql
create mode 100644 crates/database/migrations/20230306214726_settings_url.up.sql
create mode 100644 crates/database/queries/settings/set_url.sql
create mode 100644 crates/ezidam/src/page/flash.rs
diff --git a/Cargo.lock b/Cargo.lock
index 00924a1..f450a0a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -565,6 +565,7 @@ dependencies = [
"rocket_db_pools",
"rocket_dyn_templates",
"settings",
+ "url",
"users",
]
@@ -2071,6 +2072,7 @@ dependencies = [
"database",
"id",
"thiserror",
+ "url",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 871b7f8..891ebae 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,4 +7,5 @@ members = [
[workspace.dependencies]
thiserror = "1"
chrono = "0.4.23"
-sqlx = "0.5.13"
\ No newline at end of file
+sqlx = "0.5.13"
+url = "2.3.1"
diff --git a/crates/database/migrations/20230306214726_settings_url.down.sql b/crates/database/migrations/20230306214726_settings_url.down.sql
new file mode 100644
index 0000000..ef4f150
--- /dev/null
+++ b/crates/database/migrations/20230306214726_settings_url.down.sql
@@ -0,0 +1,2 @@
+alter table settings
+ drop column url;
diff --git a/crates/database/migrations/20230306214726_settings_url.up.sql b/crates/database/migrations/20230306214726_settings_url.up.sql
new file mode 100644
index 0000000..c6a2b9e
--- /dev/null
+++ b/crates/database/migrations/20230306214726_settings_url.up.sql
@@ -0,0 +1,2 @@
+alter table settings
+ add column url TEXT;
diff --git a/crates/database/queries/settings/get.sql b/crates/database/queries/settings/get.sql
index 313b33b..f274f11 100644
--- a/crates/database/queries/settings/get.sql
+++ b/crates/database/queries/settings/get.sql
@@ -2,7 +2,8 @@ select id,
created_at as "created_at: DateTime",
updated_at as "updated_at: DateTime",
business_name,
- business_logo
+ business_logo,
+ url
from settings
diff --git a/crates/database/queries/settings/set_url.sql b/crates/database/queries/settings/set_url.sql
new file mode 100644
index 0000000..b228350
--- /dev/null
+++ b/crates/database/queries/settings/set_url.sql
@@ -0,0 +1,5 @@
+update settings
+
+set url = ?
+
+where id is 0
diff --git a/crates/database/sqlx-data.json b/crates/database/sqlx-data.json
index e47ef3f..e77720a 100644
--- a/crates/database/sqlx-data.json
+++ b/crates/database/sqlx-data.json
@@ -40,6 +40,64 @@
},
"query": "insert or ignore into settings(id)\nvalues (0);"
},
+ "64cf880633d3ee5c18f6e7c2a865470442f1ba4b1019806a580ec384329dc32e": {
+ "describe": {
+ "columns": [
+ {
+ "name": "id",
+ "ordinal": 0,
+ "type_info": "Int64"
+ },
+ {
+ "name": "created_at: DateTime",
+ "ordinal": 1,
+ "type_info": "Text"
+ },
+ {
+ "name": "updated_at: DateTime",
+ "ordinal": 2,
+ "type_info": "Text"
+ },
+ {
+ "name": "business_name",
+ "ordinal": 3,
+ "type_info": "Text"
+ },
+ {
+ "name": "business_logo",
+ "ordinal": 4,
+ "type_info": "Blob"
+ },
+ {
+ "name": "url",
+ "ordinal": 5,
+ "type_info": "Text"
+ }
+ ],
+ "nullable": [
+ false,
+ false,
+ false,
+ true,
+ true,
+ true
+ ],
+ "parameters": {
+ "Right": 0
+ }
+ },
+ "query": "select id,\n created_at as \"created_at: DateTime\",\n updated_at as \"updated_at: DateTime\",\n business_name,\n business_logo,\n url\n\nfrom settings\n\nwhere id is 0\n"
+ },
+ "87906834faa6f185aee0e4d893b9754908b1c173e9dce383663d723891a89cd1": {
+ "describe": {
+ "columns": [],
+ "nullable": [],
+ "parameters": {
+ "Right": 1
+ }
+ },
+ "query": "update settings\n\nset url = ?\n\nwhere id is 0\n"
+ },
"aae93a39c5a9f46235b5ef871b45ba76d7efa1677bfe8291a62b8cbf9cd9e0d5": {
"describe": {
"columns": [],
@@ -127,47 +185,5 @@
}
},
"query": "select u.id,\n u.created_at as \"created_at: DateTime\",\n u.updated_at as \"updated_at: DateTime\",\n u.is_admin as \"is_admin: bool\",\n u.username,\n u.name,\n u.email,\n u.password,\n u.password_recover,\n u.paper_key,\n u.is_archived as \"is_archived: bool\"\nfrom users u\n\n inner join settings s on u.id = s.first_admin\n\nwhere u.is_admin is 1\n and u.is_archived is 0\n and u.id is s.first_admin\n\nlimit 1"
- },
- "cc69514c4d9457462e634eb58cbfc82b454197c5cb7f4a451954eb5a421afc3b": {
- "describe": {
- "columns": [
- {
- "name": "id",
- "ordinal": 0,
- "type_info": "Int64"
- },
- {
- "name": "created_at: DateTime",
- "ordinal": 1,
- "type_info": "Text"
- },
- {
- "name": "updated_at: DateTime",
- "ordinal": 2,
- "type_info": "Text"
- },
- {
- "name": "business_name",
- "ordinal": 3,
- "type_info": "Text"
- },
- {
- "name": "business_logo",
- "ordinal": 4,
- "type_info": "Blob"
- }
- ],
- "nullable": [
- false,
- false,
- false,
- true,
- true
- ],
- "parameters": {
- "Right": 0
- }
- },
- "query": "select id,\n created_at as \"created_at: DateTime\",\n updated_at as \"updated_at: DateTime\",\n business_name,\n business_logo\n\nfrom settings\n\nwhere id is 0\n"
}
}
\ No newline at end of file
diff --git a/crates/database/src/tables/settings.rs b/crates/database/src/tables/settings.rs
index b9f6265..d98b647 100644
--- a/crates/database/src/tables/settings.rs
+++ b/crates/database/src/tables/settings.rs
@@ -10,6 +10,7 @@ pub struct Settings {
pub updated_at: DateTime,
pub business_name: Option,
pub business_logo: Option>,
+ pub url: Option,
}
impl Settings {
@@ -67,4 +68,13 @@ impl Settings {
Ok((query.rows_affected() == 1).then_some(()))
}
+
+ pub async fn set_url(conn: impl SqliteExecutor<'_>, url: &str) -> Result