diff --git a/src/db.rs b/src/db.rs index 9cca161..769bfbd 100644 --- a/src/db.rs +++ b/src/db.rs @@ -7,7 +7,7 @@ use sqlx::{ const MAX_CONNS: u32 = 200; const MIN_CONNS: u32 = 5; -const TIMEOUT: u64 = 20; +const TIMEOUT: u64 = 2000; // in milliseconds pub fn get_db_pool() -> SqlitePool { let conf = crate::conf::Config::get(); @@ -44,6 +44,7 @@ pub fn get_db_pool() -> SqlitePool { // be sure to have run `make julid` so that the libjulid extension is built .extension(conf.julid_plugin) .busy_timeout(Duration::from_secs(TIMEOUT)) + .pragma("temp_store", "memory") .create_if_missing(true) .optimize_on_close(true, None) .pragma("mmap_size", "3000000000"); diff --git a/src/watches/handlers.rs b/src/watches/handlers.rs index 3519c78..619597e 100644 --- a/src/watches/handlers.rs +++ b/src/watches/handlers.rs @@ -8,7 +8,7 @@ use julid::Julid; use serde::Deserialize; use sqlx::{query, query_as, query_scalar, SqlitePool}; -use super::templates::{AddNewWatchPage, AddWatchButton, GetWatchPage}; +use super::templates::{AddNewWatchPage, GetWatchPage, WatchStatusMenus}; use crate::{ misc_util::empty_string_as_none, AuthSession, MyWatchesPage, ShowKind, Watch, WatchQuest, }; @@ -237,11 +237,7 @@ pub async fn get_watch_status( .map_err(|e| { tracing::error!("Got error from checking watch status: {e:?}"); })?; - match quest { - Some(quest) if quest.watched => Ok(format!("{CHECKMARK} watched").into_response()), - Some(quest) => Ok(checkmark(quest.public).into_response()), - None => Ok(AddWatchButton { watch }.into_response()), - } + Ok(WatchStatusMenus { watch, quest }.into_response()) } else { Ok("Login to add".into_response()) } diff --git a/src/watches/templates.rs b/src/watches/templates.rs index fb058ae..0fb0847 100644 --- a/src/watches/templates.rs +++ b/src/watches/templates.rs @@ -2,7 +2,7 @@ use askama::Template; use julid::Julid; use serde::{Deserialize, Serialize}; -use crate::{OptionalOptionalUser, User, Watch}; +use crate::{OptionalOptionalUser, User, Watch, WatchQuest}; #[derive(Debug, Default, Template, Deserialize, Serialize, PartialEq, Eq, OptionalOptionalUser)] #[template(path = "my_watches_page.html")] @@ -26,6 +26,7 @@ pub struct AddNewWatchPage { #[derive(Debug, Default, Template, Deserialize, Serialize, PartialEq, Eq)] #[template(path = "elements/add_watch_button.html")] -pub struct AddWatchButton { +pub struct WatchStatusMenus { pub watch: Julid, + pub quest: Option, } diff --git a/templates/elements/add_watch_button.html b/templates/elements/add_watch_button.html index fbd05b3..f9edb07 100644 --- a/templates/elements/add_watch_button.html +++ b/templates/elements/add_watch_button.html @@ -1,8 +1,59 @@ +{% match quest %} +{% when Some with (q) %} + +{% let public %} +{% let np %} +{% if q.public -%} +{% let public = "public" %} +{% let np = "private" %} +{% else %} +{% let public = "private" %} +{% let np = "public" %} +{%- endif %} + +{% let status %} +{% if q.watched -%} +{% let status = "want to watch" %} +{% else %} +{% let status = "watched" %} +{% endif %} + + + + + + + + + + + + +
Added{{- public -}}
+
+ + + +
+
+
+ + +
+
+ +{% when None %} +
- +
+ +{% endmatch %} diff --git a/templates/my_watches_page.html b/templates/my_watches_page.html index c6582a3..9e08939 100644 --- a/templates/my_watches_page.html +++ b/templates/my_watches_page.html @@ -33,7 +33,7 @@ Link Type Year - Watching? + Status diff --git a/templates/search_watches_page.html b/templates/search_watches_page.html index 61d39e4..b4ba5c6 100644 --- a/templates/search_watches_page.html +++ b/templates/search_watches_page.html @@ -39,7 +39,7 @@ Link Type Year - Watching? + Status