"""Queue manager abstraction prepared for RQ or Celery adoption."""

from __future__ import annotations

import uuid
from datetime import datetime, timezone
from typing import Any

from bridge_platform.quotas.service import consume


class QueueManager:
    """Submit jobs through a stable API while the backend remains pluggable."""

    def enqueue(
        self, *, job_name: str, payload: dict[str, Any],
        queue_name: str = "default", tenant_id: str | None = None,
        app_id: str | None = None,
    ) -> dict[str, Any]:
        if tenant_id:
            consume(
                tenant_id=tenant_id, app_id=app_id, metric="jobs",
                metadata={"job_name": job_name, "queue_name": queue_name},
            )
        return {
            "job_id": str(uuid.uuid4()),
            "job_name": job_name,
            "queue_name": queue_name,
            "payload": payload,
            "status": "queued",
            "queued_at": datetime.now(timezone.utc).isoformat(),
        }
