# apps/aroflo_connector_app/zones/registry.py
from __future__ import annotations

from typing import Dict, List, Any

from .lastupdate import LastUpdateZone
from .users import UsersZone
# from .clients import ClientsZone   # ⬅️ COMENTADO HASTA IMPLEMENTARLA


def build_registry(client: Any) -> Dict[str, Any]:
    """
    Crea el registro de zonas para un cliente AroFlo concreto.
    De momento solo LastUpdate y Users.
    """
    zones: Dict[str, Any] = {
        "lastupdate": LastUpdateZone(client),
        "users": UsersZone(client),
        # "clients": ClientsZone(client),  # ⬅️ lo sumamos después
    }
    return zones


def list_zones_metadata(client: Any) -> List[dict]:
    registry = build_registry(client)
    return [zone.to_dict() for zone in registry.values()]


def get_zone(client: Any, code: str):
    registry = build_registry(client)
    try:
        return registry[code]
    except KeyError:
        raise KeyError(f"Zona '{code}' no está registrada")

