from __future__ import annotations

from sqlite3 import Connection


def has_audit_for_entity(conn: Connection, entity_type: str, entity_id: str) -> bool:
    row = conn.execute(
        "SELECT 1 FROM audit_log WHERE entity_type = ? AND entity_id = ? LIMIT 1",
        (entity_type, entity_id),
    ).fetchone()
    return row is not None


def require_audit_for_confirmed_transaction(conn: Connection, transaction_id: str) -> None:
    row = conn.execute(
        "SELECT is_confirmed FROM transactions WHERE transaction_id = ?", (transaction_id,)
    ).fetchone()
    if row and int(row["is_confirmed"]) == 1 and not has_audit_for_entity(conn, "transaction", transaction_id):
        raise ValueError(f"Confirmed transaction requires audit log: {transaction_id}")
