"""scrapers/miami_dade_clerk.py — Backward-compat shim.

ESTA MODULO ES UN ALIAS DE realauction_clerk.py para Miami-Dade.

La logica generica fue extraida a `realauction_clerk.py` cuando se agregaron
soporte para Duval, Broward, Palm Beach, Hillsborough, Orange (todos comparten
el mismo white-label platform de realauction.com).

Mantener este shim mientras:
- Tests legacy importen de `scrapers.miami_dade_clerk`
- Migration scripts referencien `_parse_cases_from_html`, `_is_status_dead`
- El source_id 'miami_dade_clerk' siga en deals.db

API publica preservada:
    SOURCE                              — string 'miami_dade_clerk'
    scrape_miami_dade_auctions(...)     — scrape function
    run_scraper_to_db(...)              — pipeline
    _parse_cases_from_html(...)         — exposed for tests
    _is_status_dead(...)                — exposed for tests
    _DEAD_STATUS_SUBSTRINGS             — exposed for tests
    _build_deal_record(case, date)      — exposed for tests
"""
from __future__ import annotations

from typing import Callable, Optional

from scrapers.realauction_clerk import (
    REALAUCTION_COUNTIES,
    get_county_config,
    scrape_realauction_county,
    run_scraper_to_db as _generic_run_scraper_to_db,
    # Re-exports for backward compat
    _parse_cases_from_html,   # noqa: F401
    _is_status_dead,           # noqa: F401
    _DEAD_STATUS_SUBSTRINGS,   # noqa: F401
    _extract_case_from_table_rows,  # noqa: F401
    _parse_address,            # noqa: F401
    _parse_money,              # noqa: F401
    _build_description,        # noqa: F401
)

SOURCE = "miami_dade_clerk"
_COUNTY = "Miami-Dade"


def scrape_miami_dade_auctions(
    *,
    days_ahead: int = 14,
    days_back: int = 0,
    status_cb: Optional[Callable[[str], None]] = None,
    max_dates: Optional[int] = None,
    use_cache: bool = True,
    cache_ttl_seconds: int = 86400,
) -> list[dict]:
    """Scrape Miami-Dade County auction calendar (delegates to realauction_clerk)."""
    return scrape_realauction_county(
        county=_COUNTY,
        days_ahead=days_ahead,
        days_back=days_back,
        status_cb=status_cb,
        max_dates=max_dates,
        use_cache=use_cache,
        cache_ttl_seconds=cache_ttl_seconds,
    )


def run_scraper_to_db(
    *,
    days_ahead: int = 14,
    days_back: int = 0,
    auto_classify: bool = True,
    status_cb: Optional[Callable[[str], None]] = None,
    max_dates: Optional[int] = None,
) -> dict:
    """Full pipeline for Miami-Dade (delegates to realauction_clerk)."""
    return _generic_run_scraper_to_db(
        county=_COUNTY,
        days_ahead=days_ahead,
        days_back=days_back,
        auto_classify=auto_classify,
        status_cb=status_cb,
        max_dates=max_dates,
    )


def _build_deal_record(case: dict, auction_date_iso: str) -> dict:
    """Backward-compat: original signature was (case, date) without county_config.

    Tests use this. Internally delegates to the generic builder with Miami-Dade config.
    """
    from scrapers.realauction_clerk import _build_deal_record as _generic_build
    return _generic_build(case, auction_date_iso, REALAUCTION_COUNTIES[_COUNTY])
