"""Restore a saved result through a new backend instance."""

from __future__ import annotations

import json
from pathlib import Path
from tempfile import TemporaryDirectory

from cascaqit import Circuit, LocalBackend, RetryPolicy


def main() -> None:
    """Restore a saved result through a new backend instance."""
    with TemporaryDirectory(prefix="cascaqit-resume-") as directory:
        store = Path(directory) / "runs.sqlite"
        backend = LocalBackend(store=store, seed=7)
        job = backend.run(
            Circuit(1).h(0),
            shots=100,
            retry=RetryPolicy(max_attempts=3),
            idempotency_key="experiment-001",
        )
        result = job.result()
        restored = LocalBackend(store=store).resume(job.job_id)
        same_result = restored.result().stable_hash() == result.stable_hash()
        page = backend.history(limit=20, statuses=("completed", "failed"))
        if not same_result or len(page.entries) != 1:
            raise RuntimeError("A restored result must match the saved result.")
        print(
            json.dumps(
                {
                    "restored_result_matches": same_result,
                    "counts_total": sum(result.counts.values()),
                    "history_entries": len(page.entries),
                    "restored_status": restored.status().state,
                },
                sort_keys=True,
            )
        )


if __name__ == "__main__":
    main()
