from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.core.auth_dependency import require_session from app.db import get_db from app.models.channel import Channel from app.models.video import Video from app.services.video_presentation import channel_categories_map, serialize_video router = APIRouter(dependencies=[Depends(require_session)]) @router.get("/videos/{youtube_video_id}") def get_video(youtube_video_id: str, db: Session = Depends(get_db)) -> dict: video = db.query(Video).filter(Video.youtube_video_id == youtube_video_id).one_or_none() if video is None: raise HTTPException(status_code=404, detail="Video not found") channel = db.get(Channel, video.channel_id) if channel is None: raise HTTPException(status_code=404, detail="Channel not found") categories = channel_categories_map(db, [channel.id]).get(channel.id, []) return serialize_video(video, channel, categories)