From 3b15caade07e8fbe351fed9aceb3f435bf58368e Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 26 May 2025 18:24:16 +0200 Subject: move all direct database access to logic crate --- server/src/compat/youtube.rs | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'server/src/compat/youtube.rs') diff --git a/server/src/compat/youtube.rs b/server/src/compat/youtube.rs index 0a69d14..7126781 100644 --- a/server/src/compat/youtube.rs +++ b/server/src/compat/youtube.rs @@ -6,48 +6,47 @@ use crate::{helper::A, ui::error::MyResult}; use anyhow::anyhow; use jellycommon::routes::{u_node_slug, u_node_slug_player}; -use jellylogic::{session::Session, Database}; -use rocket::{get, response::Redirect, State}; +use jellylogic::{ + node::{get_node_by_eid, node_id_to_slug}, + session::Session, +}; +use rocket::{get, response::Redirect}; #[get("/watch?")] -pub fn r_youtube_watch(_session: A, db: &State, v: &str) -> MyResult { +pub fn r_youtube_watch(session: A, v: &str) -> MyResult { if v.len() != 11 { Err(anyhow!("video id length incorrect"))? } - let Some(id) = db.get_node_external_id("youtube:video", v)? else { + let Some(id) = get_node_by_eid(&session.0, "youtube:video", v)? else { Err(anyhow!("element not found"))? }; - let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?; - Ok(Redirect::to(u_node_slug_player(&node.slug))) + let slug = node_id_to_slug(&session.0, id)?; + Ok(Redirect::to(u_node_slug_player(&slug))) } #[get("/channel/")] -pub fn r_youtube_channel( - _session: A, - db: &State, - id: &str, -) -> MyResult { +pub fn r_youtube_channel(session: A, id: &str) -> MyResult { let Some(id) = (if id.starts_with("UC") { - db.get_node_external_id("youtube:channel", id)? + get_node_by_eid(&session.0, "youtube:channel", id)? } else if id.starts_with("@") { - db.get_node_external_id("youtube:channel-name", id)? + get_node_by_eid(&session.0, "youtube:channel-name", id)? } else { Err(anyhow!("unknown channel id format"))? }) else { Err(anyhow!("channel not found"))? }; - let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?; - Ok(Redirect::to(u_node_slug(&node.slug))) + let slug = node_id_to_slug(&session.0, id)?; + Ok(Redirect::to(u_node_slug(&slug))) } #[get("/embed/")] -pub fn r_youtube_embed(_session: A, db: &State, v: &str) -> MyResult { +pub fn r_youtube_embed(session: A, v: &str) -> MyResult { if v.len() != 11 { Err(anyhow!("video id length incorrect"))? } - let Some(id) = db.get_node_external_id("youtube:video", v)? else { + let Some(id) = get_node_by_eid(&session.0, "youtube:video", v)? else { Err(anyhow!("element not found"))? }; - let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?; - Ok(Redirect::to(u_node_slug_player(&node.slug))) + let slug = node_id_to_slug(&session.0, id)?; + Ok(Redirect::to(u_node_slug_player(&slug))) } -- cgit v1.2.3-70-g09d2