"""Tenant-aware database routing.

The router selects the tenant data-plane database dynamically while preserving
the existing ``config.db`` helpers. Existing apps can continue using their
current DB access until the gateway begins passing explicit tenant context.
"""

from __future__ import annotations

from typing import Any

from config.db import build_database_url


class DatabaseRouter:
    """Resolve the correct tenant database binding for an app request."""

    def resolve(self, *, tenant: dict[str, Any] | None, app_id: str | None) -> dict[str, Any]:
        db_name = None
        if tenant:
            db_name = tenant.get("data_db_name") or f"tenant_{tenant.get('slug')}"
        return {
            "app_id": app_id,
            "db_name": db_name,
            "database_url": build_database_url(db_name) if db_name else None,
        }

