aboutsummaryrefslogtreecommitdiffstats
path: root/crates/rocie-server/src/storage/sql/get/config
diff options
context:
space:
mode:
Diffstat (limited to 'crates/rocie-server/src/storage/sql/get/config')
-rw-r--r--crates/rocie-server/src/storage/sql/get/config/mod.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/crates/rocie-server/src/storage/sql/get/config/mod.rs b/crates/rocie-server/src/storage/sql/get/config/mod.rs
new file mode 100644
index 0000000..eb8be86
--- /dev/null
+++ b/crates/rocie-server/src/storage/sql/get/config/mod.rs
@@ -0,0 +1,41 @@
+use crate::{app::App, storage::sql::config::Config};
+
+use sqlx::query;
+
+impl Config {
+ pub(crate) async fn get(app: &App) -> Result<Self, get::Error> {
+ let record = query!(
+ "
+ SELECT use_defaults
+ FROM config
+ WHERE id = 0
+"
+ )
+ .fetch_one(&app.db)
+ .await?;
+
+ let should_use_defaults = if record.use_defaults == 1 {
+ true
+ } else if record.use_defaults == 0 {
+ false
+ } else {
+ unreachable!("Should not be possible, sqlite's CHECK prevents it")
+ };
+
+ Ok(Self {
+ should_use_defaults,
+ })
+ }
+}
+
+pub(crate) mod get {
+ use actix_web::ResponseError;
+
+ #[derive(thiserror::Error, Debug)]
+ pub(crate) enum Error {
+ #[error("Failed to execute the sql query")]
+ SqlError(#[from] sqlx::Error),
+ }
+
+ impl ResponseError for Error {}
+}