from datetime import datetime from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from backend.database import get_db from backend.services import comment_service router = APIRouter(prefix="/comments", tags=["comments"]) @router.get("") async def list_comments( post_id: int | None = None, subreddit_id: int | None = None, author: str | None = None, sort_by: str = Query("created_utc", pattern="^(created_utc|score)$"), sort_order: str = Query("desc", pattern="^(asc|desc)$"), since: datetime | None = None, until: datetime | None = None, page: int = Query(1, ge=1), per_page: int = Query(25, ge=1, le=100), db: AsyncSession = Depends(get_db), ): comments, total = await comment_service.list_comments( db, post_id, subreddit_id, author, sort_by, sort_order, since, until, page, per_page ) return { "data": comments, "total": total, "page": page, "per_page": per_page, "pages": (total + per_page - 1) // per_page if per_page else 0, }