from __future__ import annotations

from typing import Any, Dict, List

from db.source_imports import normalize_column_key


VIRTUAL_MASTER_FILTER_ATTRIBUTES: Dict[str, Dict[str, str]] = {
    "is_parent": {
        "label": "Is parent (has children)",
        "purpose": "structure",
        "data_type": "boolean",
    },
}

IS_PARENT_FILTER_CODES = frozenset({"is_parent", "has_children", "is_configurable_parent"})


def virtual_master_filter_attributes() -> List[Dict[str, Any]]:
    """Synthetic attribute codes used only for master_filters (not stored EAV)."""
    return [
        {
            "attribute_code": code,
            "label": meta["label"],
            "purpose": meta["purpose"],
            "data_type": meta["data_type"],
            "source": "virtual_filter",
            "product_count": 0,
        }
        for code, meta in sorted(VIRTUAL_MASTER_FILTER_ATTRIBUTES.items())
    ]


def is_parent_filter_code(code: str) -> bool:
    return normalize_column_key(code) in IS_PARENT_FILTER_CODES
