"""掃除スクリプト v1.0 — この演習の既知版（架空）

改訂版では「削除処理を行わない」ことが分かっている版として単純化した。
保持期間や日付の計算は行わない。本番用の掃除機能を設計したものではない。

rev2: 任意のデータベースを受け付ける直接実行の入口を廃止した。
drill.py（rollback-code）から run(db) として呼ばれ、drill_safety の共通検査で
「初期化済みの演習領域にある practice.db」であることを確かめてからでなければ動かない。
"""
import os
import sqlite3
import sys

import drill_safety as safety


def run(db):
    work = safety.resolve_work()
    safety.require_initialized(work)
    db = safety.check_inside(work, db, "掃除対象のデータベース", must_exist=True)
    if os.path.basename(db) != "practice.db":
        raise safety.SafetyError(f"掃除対象は演習領域の practice.db に限る: {db}")
    conn = sqlite3.connect(db)
    n = conn.execute("SELECT COUNT(*) FROM history").fetchone()[0]
    conn.close()
    print(f"cleanup v1.0: 削除処理なし（履歴 {n} 件はそのまま）", flush=True)


if __name__ == "__main__":
    print("このスクリプトは単独では実行しない。drill.py の rollback-code から実行する。", flush=True)
    sys.exit(2)
