use db::conn::sea_orm::*; use db::issue::issue_reactions as reaction_entity; use uuid::Uuid; use crate::error::{IssueError, IssueResult}; use crate::features::IssueService; use crate::features::issue::usecase::load_issue; pub fn require_authenticated(actor: Uuid) -> IssueResult<()> { if actor.is_nil() { return Err(IssueError::Unauthorized("authentication required".into())); } Ok(()) } pub async fn load_reaction( svc: &IssueService, reaction_id: Uuid, ) -> IssueResult { let db = svc.db.reader(); let r = reaction_entity::Entity::find_by_id(reaction_id) .one(&db) .await? .ok_or_else(|| IssueError::NotFound(format!("reaction {reaction_id}")))?; Ok(r) } pub async fn ensure_issue_visible( svc: &IssueService, channel_id: Uuid, issue_id: Uuid, ) -> IssueResult<()> { load_issue(svc, channel_id, issue_id).await?; Ok(()) }