"""DEPRECATED: direct repo-path preview provisioning.

This task is superseded by ``provision_preview_for_revision`` which polls CF Pages
for a provider-backed preview deployment instead of starting a local dev server.

Retained in the worker function list for backwards compatibility with any queued jobs.
New code must not call ``provision_preview`` directly.
"""
import structlog

logger = structlog.get_logger()


async def provision_preview(ctx: dict, preview_id: str, project_id: str, project_type: str, repo_path: str) -> dict:
    """Deprecated stub — redirects to failed status with a clear explanation."""
    from uuid import UUID

    from src.core.database import async_session_factory
    from src.domain.previews.repository import PreviewRepository

    logger.warning(
        "provision_preview_deprecated",
        preview_id=preview_id,
        project_id=project_id,
        message="provision_preview is deprecated; use provision_preview_for_revision",
    )

    db_factory = ctx.get("db_factory", async_session_factory)
    async with db_factory() as db:
        repo = PreviewRepository(db)
        await repo.update_status(UUID(preview_id), "failed")
        await db.commit()

    return {"status": "failed", "reason": "provision_preview_deprecated"}
