diff options
author | metamuffin <metamuffin@disroot.org> | 2025-05-26 18:24:16 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-05-26 18:24:16 +0200 |
commit | 3b15caade07e8fbe351fed9aceb3f435bf58368e (patch) | |
tree | cce91c229b78061ad36f29d76a76d67c3c737c59 /server/src/compat/youtube.rs | |
parent | 1eeff5c03e8985d16d4f2b6283741dd82b369bd3 (diff) | |
download | jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.bz2 jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.zst |
move all direct database access to logic crate
Diffstat (limited to 'server/src/compat/youtube.rs')
-rw-r--r-- | server/src/compat/youtube.rs | 37 |
1 files changed, 18 insertions, 19 deletions
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?<v>")] -pub fn r_youtube_watch(_session: A<Session>, db: &State<Database>, v: &str) -> MyResult<Redirect> { +pub fn r_youtube_watch(session: A<Session>, v: &str) -> MyResult<Redirect> { 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/<id>")] -pub fn r_youtube_channel( - _session: A<Session>, - db: &State<Database>, - id: &str, -) -> MyResult<Redirect> { +pub fn r_youtube_channel(session: A<Session>, id: &str) -> MyResult<Redirect> { 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/<v>")] -pub fn r_youtube_embed(_session: A<Session>, db: &State<Database>, v: &str) -> MyResult<Redirect> { +pub fn r_youtube_embed(session: A<Session>, v: &str) -> MyResult<Redirect> { 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))) } |