from typing import Optional

from fastapi import APIRouter, Query

from app.repositories import chunk_repo

router = APIRouter(prefix="/chunks", tags=["Chunks"])


@router.get("/{repo_id:path}")
async def get_chunks(
    repo_id: str,
    doc_path: Optional[str] = Query(default=None, description="Filter by document path"),
    skip: int = Query(default=0, ge=0),
    limit: int = Query(default=50, ge=1, le=500),
):
    """Retrieve chunks for a repository, optionally filtered by doc_path."""
    chunks = await chunk_repo.get_chunks_by_repo(
        repo_id=repo_id, doc_path=doc_path, skip=skip, limit=limit
    )
    total = await chunk_repo.count_chunks(repo_id=repo_id, doc_path=doc_path)
    return {
        "repo_id": repo_id,
        "total": total,
        "skip": skip,
        "limit": limit,
        "chunks": chunks,
    }
