aboutsummaryrefslogtreecommitdiff
path: root/server/src/logic/userdata.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-05-26 18:24:16 +0200
committermetamuffin <metamuffin@disroot.org>2025-05-26 18:24:16 +0200
commit3b15caade07e8fbe351fed9aceb3f435bf58368e (patch)
treecce91c229b78061ad36f29d76a76d67c3c737c59 /server/src/logic/userdata.rs
parent1eeff5c03e8985d16d4f2b6283741dd82b369bd3 (diff)
downloadjellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar
jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.bz2
jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.zst
move all direct database access to logic crate
Diffstat (limited to 'server/src/logic/userdata.rs')
-rw-r--r--server/src/logic/userdata.rs59
1 files changed, 20 insertions, 39 deletions
diff --git a/server/src/logic/userdata.rs b/server/src/logic/userdata.rs
index ac3cb83..52c3688 100644
--- a/server/src/logic/userdata.rs
+++ b/server/src/logic/userdata.rs
@@ -5,13 +5,20 @@
*/
use crate::{helper::A, ui::error::MyResult};
use jellycommon::{
+ api::NodeFilterSort,
routes::u_node_id,
user::{NodeUserData, WatchedState},
NodeID,
};
-use jellylogic::{session::Session, Database};
+use jellylogic::{
+ node::{
+ get_node, update_node_userdata_rating, update_node_userdata_watched,
+ update_node_userdata_watched_progress,
+ },
+ session::Session,
+};
use rocket::{
- form::Form, get, post, response::Redirect, serde::json::Json, FromForm, FromFormField, State,
+ form::Form, get, post, response::Redirect, serde::json::Json, FromForm, FromFormField,
UriDisplayQuery,
};
@@ -23,33 +30,26 @@ pub enum UrlWatchedState {
}
#[get("/n/<id>/userdata")]
-pub fn r_node_userdata(
- session: A<Session>,
- db: &State<Database>,
- id: A<NodeID>,
-) -> MyResult<Json<NodeUserData>> {
- let u = db
- .get_node_udata(id.0, &session.0.user.name)?
- .unwrap_or_default();
+pub fn r_node_userdata(session: A<Session>, id: A<NodeID>) -> MyResult<Json<NodeUserData>> {
+ let u = get_node(&session.0, id.0, false, false, NodeFilterSort::default())?.userdata;
Ok(Json(u))
}
#[post("/n/<id>/watched?<state>")]
pub async fn r_node_userdata_watched(
session: A<Session>,
- db: &State<Database>,
id: A<NodeID>,
state: UrlWatchedState,
) -> MyResult<Redirect> {
- // TODO perm
- db.update_node_udata(id.0, &session.0.user.name, |udata| {
- udata.watched = match state {
+ update_node_userdata_watched(
+ &session.0,
+ id.0,
+ match state {
UrlWatchedState::None => WatchedState::None,
UrlWatchedState::Watched => WatchedState::Watched,
UrlWatchedState::Pending => WatchedState::Pending,
- };
- Ok(())
- })?;
+ },
+ )?;
Ok(Redirect::found(u_node_id(id.0)))
}
@@ -62,34 +62,15 @@ pub struct UpdateRating {
#[post("/n/<id>/update_rating", data = "<form>")]
pub async fn r_node_userdata_rating(
session: A<Session>,
- db: &State<Database>,
id: A<NodeID>,
form: Form<UpdateRating>,
) -> MyResult<Redirect> {
- // TODO perm
- db.update_node_udata(id.0, &session.0.user.name, |udata| {
- udata.rating = form.rating;
- Ok(())
- })?;
+ update_node_userdata_rating(&session.0, id.0, form.rating)?;
Ok(Redirect::found(u_node_id(id.0)))
}
#[post("/n/<id>/progress?<t>")]
-pub async fn r_node_userdata_progress(
- session: A<Session>,
- db: &State<Database>,
- id: A<NodeID>,
- t: f64,
-) -> MyResult<()> {
- // TODO perm
- db.update_node_udata(id.0, &session.0.user.name, |udata| {
- udata.watched = match udata.watched {
- WatchedState::None | WatchedState::Pending | WatchedState::Progress(_) => {
- WatchedState::Progress(t)
- }
- WatchedState::Watched => WatchedState::Watched,
- };
- Ok(())
- })?;
+pub async fn r_node_userdata_progress(session: A<Session>, id: A<NodeID>, t: f64) -> MyResult<()> {
+ update_node_userdata_watched_progress(&session.0, id.0, t)?;
Ok(())
}