"""Local crash-window demonstration; no network, real email, or Pi dependency."""

import os
import sqlite3
import subprocess
import sys
from contextlib import closing
from pathlib import Path
from tempfile import TemporaryDirectory


def deliver(database, key):
    # The simulated service atomically records both identity and effect.
    with closing(sqlite3.connect(database)) as db, db:
        db.execute("INSERT INTO deliveries VALUES (?) ON CONFLICT(key) DO NOTHING", (key,))


def demo():
    print(f"Python {sys.version.split()[0]}; SQLite {sqlite3.sqlite_version}")
    for strategy, retry_key, expected in [("new-key", "attempt-2", 2), ("same-key", "attempt-1", 1)]:
        with TemporaryDirectory() as directory:
            root = Path(directory)
            database, receipt = root / "service.db", root / "receipt.txt"
            with closing(sqlite3.connect(database)) as db, db:
                db.execute("CREATE TABLE deliveries (key TEXT PRIMARY KEY)")
            result = subprocess.run(
                [sys.executable, str(Path(__file__).resolve()), "child", str(database)],
                check=False,
            )
            assert result.returncode == 17 and not receipt.exists()
            with closing(sqlite3.connect(database)) as db:
                before = db.execute("SELECT count(*) FROM deliveries").fetchone()[0]
            assert before == 1
            deliver(database, retry_key)
            with closing(sqlite3.connect(database)) as db:
                after = db.execute("SELECT count(*) FROM deliveries").fetchone()[0]
            assert after == expected
            print(f"{strategy}: local_receipt=missing; service_before={before}; service_after={after}")


if __name__ == "__main__":
    if len(sys.argv) == 3 and sys.argv[1] == "child":
        deliver(sys.argv[2], "attempt-1")
        os._exit(17)  # Crash after service commit and before local acknowledgment.
    else:
        demo()
