#!/usr/bin/env python3
"""Delete leftover channel models that should not appear in 系统模型."""
import sqlite3

DB = "/var/lib/friend/friend.db"
KEEP = {
    "minimax/minimax-m3:free",
    "nvidia/nemotron-3-ultra-550b-a55b:free",
    "nvidia/nemotron-3-super-120b-a12b:free",
    "nvidia/nemotron-3-nano-30b-a3b:free",
}

con = sqlite3.connect(DB)
con.row_factory = sqlite3.Row
rows = list(con.execute("SELECT id, model_key, enabled FROM llm_channel_models ORDER BY id"))
print("before:")
for r in rows:
    print(" ", dict(r))

drop_ids = []
for r in rows:
    if r["model_key"] not in KEEP:
        drop_ids.append(r["id"])

if drop_ids:
    q = ",".join("?" * len(drop_ids))
    con.execute(f"DELETE FROM llm_route_candidates WHERE channel_model_id IN ({q})", drop_ids)
    con.execute(f"DELETE FROM llm_model_runtime_states WHERE channel_model_id IN ({q})", drop_ids)
    try:
        con.execute(f"DELETE FROM llm_channel_models WHERE id IN ({q})", drop_ids)
    except sqlite3.OperationalError as e:
        print("delete models failed", e)
        raise
    con.commit()

print("deleted ids", drop_ids)
print("after:")
for r in con.execute("SELECT id, model_key, enabled FROM llm_channel_models ORDER BY id"):
    print(" ", dict(r))
print("OK")
