"""ISY utils."""
from __future__ import annotations

from homeassistant.core import HomeAssistant

from .const import (
    DOMAIN,
    ISY994_ISY,
    ISY994_NODES,
    ISY994_PROGRAMS,
    ISY994_VARIABLES,
    PLATFORMS,
    PROGRAM_PLATFORMS,
)


def unique_ids_for_config_entry_id(
    hass: HomeAssistant, config_entry_id: str
) -> set[str]:
    """Find all the unique ids for a config entry id."""
    hass_isy_data = hass.data[DOMAIN][config_entry_id]
    uuid = hass_isy_data[ISY994_ISY].configuration["uuid"]
    current_unique_ids: set[str] = {uuid}

    for platform in PLATFORMS:
        for node in hass_isy_data[ISY994_NODES][platform]:
            if hasattr(node, "address"):
                current_unique_ids.add(f"{uuid}_{node.address}")

    for platform in PROGRAM_PLATFORMS:
        for _, node, _ in hass_isy_data[ISY994_PROGRAMS][platform]:
            if hasattr(node, "address"):
                current_unique_ids.add(f"{uuid}_{node.address}")

    for node in hass_isy_data[ISY994_VARIABLES]:
        if hasattr(node, "address"):
            current_unique_ids.add(f"{uuid}_{node.address}")

    return current_unique_ids