from __future__ import annotations

from sqlite3 import Connection

from .alerts import create_alert
from .rules import MISSING_FX_RULE


def check_missing_fx(conn: Connection) -> int:
    rows = conn.execute(
        "SELECT transaction_id FROM transactions WHERE currency_original != 'CHF' AND (fx_rate_to_chf IS NULL OR fx_status = 'missing')"
    ).fetchall()
    for row in rows:
        create_alert(
            conn,
            priority="kritisch",
            category="fx",
            entity_type="transaction",
            entity_id=row["transaction_id"],
            rule_id=MISSING_FX_RULE,
            message="FX-Kurs fehlt für bestätigte oder prüfpflichtige Transaktion.",
        )
    return len(rows)
