"""Every collector the app knows about, in one place."""

from app.services.collectors.base import Collector
from app.services.collectors.ari import TheLoop
from app.services.collectors.avolta import avolta_collectors
from app.services.collectors.changi import Changi
from app.services.collectors.dubai import DubaiDutyFree
from app.services.collectors.extime import Extime
from app.services.collectors.heinemann import HeinemannGlobal
from app.services.collectors.heinemann_platform import heinemann_platform_collectors
from app.services.collectors.shilla import Shilla
from app.services.collectors.shopify import shopify_collectors

COLLECTORS: dict[str, Collector] = {
    c.slug: c for c in (
        DubaiDutyFree(),
        Extime(),
        Changi(),
        Shilla(),
        HeinemannGlobal(),
        TheLoop(),
        *heinemann_platform_collectors(),
        *avolta_collectors(),
        *shopify_collectors(),
    )
}


def get_collector(slug: str) -> Collector:
    if slug not in COLLECTORS:
        raise KeyError(f"unknown collector: {slug}")
    return COLLECTORS[slug]
