dubswayAgenticV2 / app /dashboard.py
peace2024's picture
Upload 23 files
6d01d5b
raw
history blame
1.36 kB
from fastapi import APIRouter, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from sqlalchemy.orm import sessionmaker
from sqlalchemy import desc
from app.database import engine
from app.models import VideoUpload
router = APIRouter()
# Create async DB session
async_session = sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)
@router.get("/dashboard/{user_id}")
async def get_user_dashboard(user_id: int):
try:
async with async_session() as session:
query = (
select(VideoUpload)
.where(VideoUpload.user_id == user_id)
.order_by(desc(VideoUpload.created_at))
)
result = await session.execute(query)
uploads = result.scalars().all()
# Convert SQLAlchemy objects to dicts for response
return [
{
"id": upload.id,
"video_url": upload.video_url,
"pdf_url": upload.pdf_url,
"status": upload.status,
"created_at": upload.created_at,
}
for upload in uploads
]
except Exception as e:
raise HTTPException(
status_code=500, detail=f"Error fetching dashboard data: {str(e)}"
)