about summary refs log tree commit diff
path: root/src/database
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2025-04-19 13:30:07 +0300
committerVika <vika@fireburn.ru>2025-04-19 13:30:07 +0300
commit8d4b697863a338e843a28707c7f9cd7c863ccca5 (patch)
treebbd869923e27e034f1cec17b750d5b13466d248b /src/database
parente3c845d8f563d75618e237cdf16bd4ad4a00dcb8 (diff)
downloadkittybox-8d4b697863a338e843a28707c7f9cd7c863ccca5.tar.zst
Extract various modules to their own files for convenience
Change-Id: I571ec98b760a583300a810abd756e5f6f2bca25a
Diffstat (limited to 'src/database')
-rw-r--r--src/database/mod.rs66
-rw-r--r--src/database/settings.rs63
2 files changed, 64 insertions, 65 deletions
diff --git a/src/database/mod.rs b/src/database/mod.rs
index de51c2c..fb6f43c 100644
--- a/src/database/mod.rs
+++ b/src/database/mod.rs
@@ -43,71 +43,7 @@ pub enum ErrorKind {
 }
 
 /// Settings that can be stored in the database.
-pub mod settings {
-    mod private {
-        pub trait Sealed {}
-    }
-
-    /// A trait for various settings that should be contained here.
-    ///
-    /// **Note**: this trait is sealed to prevent external
-    /// implementations, as it wouldn't make sense to add new settings
-    /// that aren't used by Kittybox itself.
-    pub trait Setting: private::Sealed + std::fmt::Debug + Default + Clone + serde::Serialize + serde::de::DeserializeOwned + /*From<Settings> +*/ Send + Sync + 'static {
-        /// The data that the setting carries.
-        type Data: std::fmt::Debug + Send + Sync;
-        /// The string ID for the setting, usable as an identifier in the database.
-        const ID: &'static str;
-
-        /// Unwrap the setting type, returning owned data contained within.
-        fn into_inner(self) -> Self::Data;
-        /// Create a new instance of this type containing certain data.
-        fn new(data: Self::Data) -> Self;
-    }
-
-    /// A website's title, shown in the header.
-    #[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
-    pub struct SiteName(pub(crate) String);
-    impl Default for SiteName {
-        fn default() -> Self {
-            Self("Kittybox".to_string())
-        }
-    }
-    impl AsRef<str> for SiteName {
-        fn as_ref(&self) -> &str {
-            self.0.as_str()
-        }
-    }
-    impl private::Sealed for SiteName {}
-    impl Setting for SiteName {
-        type Data = String;
-        const ID: &'static str = "site_name";
-
-        fn into_inner(self) -> String {
-            self.0
-        }
-        fn new(data: Self::Data) -> Self {
-            Self(data)
-        }
-    }
-
-    /// Participation status in the IndieWeb Webring: https://πŸ•ΈπŸ’.ws/dashboard
-    #[derive(Debug, Default, serde::Deserialize, serde::Serialize, Clone, Copy, PartialEq, Eq)]
-    pub struct Webring(bool);
-    impl private::Sealed for Webring {}
-    impl Setting for Webring {
-        type Data = bool;
-        const ID: &'static str = "webring";
-
-        fn into_inner(self) -> Self::Data {
-            self.0
-        }
-
-        fn new(data: Self::Data) -> Self {
-            Self(data)
-        }
-    }
-}
+pub mod settings;
 
 /// Error signalled from the database.
 #[derive(Debug)]
diff --git a/src/database/settings.rs b/src/database/settings.rs
new file mode 100644
index 0000000..792a155
--- /dev/null
+++ b/src/database/settings.rs
@@ -0,0 +1,63 @@
+mod private {
+    pub trait Sealed {}
+}
+
+/// A trait for various settings that should be contained here.
+///
+/// **Note**: this trait is sealed to prevent external
+/// implementations, as it wouldn't make sense to add new settings
+/// that aren't used by Kittybox itself.
+pub trait Setting: private::Sealed + std::fmt::Debug + Default + Clone + serde::Serialize + serde::de::DeserializeOwned + /*From<Settings> +*/ Send + Sync + 'static {
+    /// The data that the setting carries.
+    type Data: std::fmt::Debug + Send + Sync;
+    /// The string ID for the setting, usable as an identifier in the database.
+    const ID: &'static str;
+
+    /// Unwrap the setting type, returning owned data contained within.
+    fn into_inner(self) -> Self::Data;
+    /// Create a new instance of this type containing certain data.
+    fn new(data: Self::Data) -> Self;
+}
+
+/// A website's title, shown in the header.
+#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq)]
+pub struct SiteName(pub(crate) String);
+impl Default for SiteName {
+    fn default() -> Self {
+        Self("Kittybox".to_string())
+    }
+}
+impl AsRef<str> for SiteName {
+    fn as_ref(&self) -> &str {
+        self.0.as_str()
+    }
+}
+impl private::Sealed for SiteName {}
+impl Setting for SiteName {
+    type Data = String;
+    const ID: &'static str = "site_name";
+
+    fn into_inner(self) -> String {
+        self.0
+    }
+    fn new(data: Self::Data) -> Self {
+        Self(data)
+    }
+}
+
+/// Participation status in the IndieWeb Webring: https://πŸ•ΈπŸ’.ws/dashboard
+#[derive(Debug, Default, serde::Deserialize, serde::Serialize, Clone, Copy, PartialEq, Eq)]
+pub struct Webring(bool);
+impl private::Sealed for Webring {}
+impl Setting for Webring {
+    type Data = bool;
+    const ID: &'static str = "webring";
+
+    fn into_inner(self) -> Self::Data {
+        self.0
+    }
+
+    fn new(data: Self::Data) -> Self {
+        Self(data)
+    }
+}