from fastapi import APIRouter, Depends, HTTPException

from app.dependencies.trusted_context import get_trusted_context
from app.middleware.trusted_context import TrustedContext
from app.models.upload import ChunkUploadRequest, ChunkUploadResponse
from app.services.upload_service import upload_service

router = APIRouter(prefix="/indexing", tags=["Indexing"])


@router.post(
    "/chunks",
    response_model=ChunkUploadResponse,
    summary="Upload normalized workspace chunks (TW-200)",
)
async def upload_chunks(
    body: ChunkUploadRequest,
    ctx: TrustedContext = Depends(get_trusted_context),
) -> ChunkUploadResponse:
    if not ctx.can_access_repo(body.repo_id):
        raise HTTPException(status_code=403, detail="Repository access denied")

    return await upload_service.upload_chunks(body, ctx)
