about summary refs log tree commit diff
path: root/kittybox-rs/src/frontend
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2023-06-15 17:02:39 +0300
committerVika <vika@fireburn.ru>2023-06-15 17:02:39 +0300
commiteca7687439c2b6f804603de75501b6737a82e5a2 (patch)
treea4715e0b8d3d63ee8b77830670c473b83a70031e /kittybox-rs/src/frontend
parent59f3e2d43d30642e4242039ce3ab934961e69602 (diff)
downloadkittybox-eca7687439c2b6f804603de75501b6737a82e5a2.tar.zst
Database: use newtypes to represent settings
This allows much for a cleaner and idiomatic settings interface.
Diffstat (limited to 'kittybox-rs/src/frontend')
-rw-r--r--kittybox-rs/src/frontend/mod.rs36
-rw-r--r--kittybox-rs/src/frontend/onboarding.rs4
2 files changed, 22 insertions, 18 deletions
diff --git a/kittybox-rs/src/frontend/mod.rs b/kittybox-rs/src/frontend/mod.rs
index f0f4e5a..9d5c164 100644
--- a/kittybox-rs/src/frontend/mod.rs
+++ b/kittybox-rs/src/frontend/mod.rs
@@ -132,8 +132,9 @@ pub async fn homepage<D: Storage>(
             //
             // btw is it more efficient to fetch these in parallel?
             let (blogname, channels) = tokio::join!(
-                db.get_setting(crate::database::Settings::SiteName, &path)
-                    .map(|i| i.unwrap_or_else(|_| "Kittybox".to_owned())),
+                db.get_setting::<crate::database::settings::SiteName>(&path)
+                .map(Result::unwrap_or_default),
+
                 db.get_channels(&path).map(|i| i.unwrap_or_default())
             );
             // Render the homepage
@@ -144,8 +145,8 @@ pub async fn homepage<D: Storage>(
                     r#"text/html; charset="utf-8""#,
                 )],
                 Template {
-                    title: &blogname,
-                    blog_name: &blogname,
+                    title: blogname.as_ref(),
+                    blog_name: blogname.as_ref(),
                     feeds: channels,
                     user,
                     content: MainPage {
@@ -170,8 +171,9 @@ pub async fn homepage<D: Storage>(
                 error!("Error while fetching h-card and/or h-feed: {}", err);
                 // Return the error
                 let (blogname, channels) = tokio::join!(
-                    db.get_setting(crate::database::Settings::SiteName, &path)
-                        .map(|i| i.unwrap_or_else(|_| "Kittybox".to_owned())),
+                    db.get_setting::<crate::database::settings::SiteName>(&path)
+                    .map(Result::unwrap_or_default),
+
                     db.get_channels(&path).map(|i| i.unwrap_or_default())
                 );
 
@@ -182,8 +184,8 @@ pub async fn homepage<D: Storage>(
                         r#"text/html; charset="utf-8""#,
                     )],
                     Template {
-                        title: &blogname,
-                        blog_name: &blogname,
+                        title: blogname.as_ref(),
+                        blog_name: blogname.as_ref(),
                         feeds: channels,
                         user,
                         content: ErrorPage {
@@ -215,8 +217,9 @@ pub async fn catchall<D: Storage>(
     match get_post_from_database(&db, path.as_str(), query.after, &user).await {
         Ok(post) => {
             let (blogname, channels) = tokio::join!(
-                db.get_setting(crate::database::Settings::SiteName, &host)
-                    .map(|i| i.unwrap_or_else(|_| "Kittybox".to_owned())),
+                db.get_setting::<crate::database::settings::SiteName>(&host)
+                .map(Result::unwrap_or_default),
+
                 db.get_channels(&host).map(|i| i.unwrap_or_default())
             );
             // Render the homepage
@@ -227,8 +230,8 @@ pub async fn catchall<D: Storage>(
                     r#"text/html; charset="utf-8""#,
                 )],
                 Template {
-                    title: &blogname,
-                    blog_name: &blogname,
+                    title: blogname.as_ref(),
+                    blog_name: blogname.as_ref(),
                     feeds: channels,
                     user,
                     content: match post.pointer("/type/0").and_then(|i| i.as_str()) {
@@ -245,8 +248,9 @@ pub async fn catchall<D: Storage>(
         }
         Err(err) => {
             let (blogname, channels) = tokio::join!(
-                db.get_setting(crate::database::Settings::SiteName, &host)
-                    .map(|i| i.unwrap_or_else(|_| "Kittybox".to_owned())),
+                db.get_setting::<crate::database::settings::SiteName>(&host)
+                .map(Result::unwrap_or_default),
+
                 db.get_channels(&host).map(|i| i.unwrap_or_default())
             );
             (
@@ -256,8 +260,8 @@ pub async fn catchall<D: Storage>(
                     r#"text/html; charset="utf-8""#,
                 )],
                 Template {
-                    title: &blogname,
-                    blog_name: &blogname,
+                    title: blogname.as_ref(),
+                    blog_name: blogname.as_ref(),
                     feeds: channels,
                     user,
                     content: ErrorPage {
diff --git a/kittybox-rs/src/frontend/onboarding.rs b/kittybox-rs/src/frontend/onboarding.rs
index b4bae8e..88b533b 100644
--- a/kittybox-rs/src/frontend/onboarding.rs
+++ b/kittybox-rs/src/frontend/onboarding.rs
@@ -1,4 +1,4 @@
-use crate::database::{Settings, Storage};
+use crate::database::{settings, Storage};
 use axum::{
     extract::{Extension, Host},
     http::StatusCode,
@@ -68,7 +68,7 @@ async fn onboard<D: Storage + 'static>(
         ));
     }
 
-    db.set_setting(Settings::SiteName, user.me.as_str(), &data.blog_name)
+    db.set_setting::<settings::SiteName>(user.me.as_str(), data.blog_name.to_owned())
         .await
         .map_err(FrontendError::from)?;