"""Endpoints para gestión de video.""" from typing import List, Optional from fastapi import APIRouter, Depends, Query from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.security import get_current_user from app.models.usuario import Usuario from app.models.camara import Camara router = APIRouter(prefix="/video", tags=["Video"]) @router.get("/camaras") async def listar_camaras( vehiculo_id: Optional[int] = None, activa: Optional[bool] = True, db: AsyncSession = Depends(get_db), current_user: Usuario = Depends(get_current_user), ): """Lista las cámaras.""" query = select(Camara) if vehiculo_id: query = query.where(Camara.vehiculo_id == vehiculo_id) if activa is not None: query = query.where(Camara.activa == activa) result = await db.execute(query) camaras = result.scalars().all() return [{"id": c.id, "vehiculo_id": c.vehiculo_id, "nombre": c.nombre, "tipo": c.tipo, "url_stream": c.url_stream, "activa": c.activa} for c in camaras] @router.get("/camaras/{camara_id}") async def obtener_camara( camara_id: int, db: AsyncSession = Depends(get_db), current_user: Usuario = Depends(get_current_user), ): """Obtiene una cámara por ID.""" result = await db.execute(select(Camara).where(Camara.id == camara_id)) camara = result.scalar_one_or_none() if not camara: return {"detail": "Cámara no encontrada"} return {"id": camara.id, "vehiculo_id": camara.vehiculo_id, "nombre": camara.nombre, "tipo": camara.tipo, "url_stream": camara.url_stream}