"""Artifacts export - FastAPI router."""
from __future__ import annotations
from typing import Optional
from uuid import UUID

from fastapi import APIRouter, Depends, Path, Query
from fastapi.responses import Response
from sqlalchemy.ext.asyncio import AsyncSession

from src.core.database import get_db
from src.core.dependencies import require_active_billing_for_project
from src.domain.auth.models import User
from src.domain.auth.router import get_current_user
from src.domain.artifacts.service import ArtifactService

router = APIRouter(prefix="/api/projects/{project}/artifacts", tags=["artifacts"])


@router.post("/source.zip")
async def export_source_zip(
    project: UUID = Depends(require_active_billing_for_project),
    revision: Optional[UUID] = Query(None),
    user: User = Depends(get_current_user),
    db: AsyncSession = Depends(get_db),
):
    """Export project source as a zip file.

    In production this would:
    1. Look up the revision's git SHA
    2. Checkout or fetch the repo at that SHA
    3. Zip and return (or upload to S3/R2 and return signed URL)

    For now, returns a placeholder response.
    """
    return Response(
        content=b"",
        media_type="application/zip",
        headers={
            "Content-Disposition": f"attachment; filename={project}_source.zip",
            "X-P2HS-Note": "Full implementation requires repo checkout at revision SHA",
        },
    )
