"""Usage: check_run_status.py <proposal> <run>

e.g. check_run_status.py 3279 168
"""

import sqlite3
import sys

from config import webservice as config

proposal, run = sys.argv[1:3]
proposal = proposal.zfill(6)
run = int(run)

conn = sqlite3.connect(config['web-service']['job-db'])

req_cur = conn.execute("""
    SELECT req_id, timestamp FROM requests
    WHERE proposal = ? AND run = ? AND action = 'CORRECT'
""", (proposal, run))

for req_id, req_time in req_cur:
    print(f"Request {req_id} at {req_time}")
    for exec_id, karabo_id in conn.execute(
        "SELECT exec_id, karabo_id FROM executions WHERE req_id = ?", (req_id,)
    ):
        print(f"- {karabo_id}")
        jobs_by_status = {}
        for job_id, status in conn.execute(
            "SELECT job_id, status FROM slurm_jobs WHERE exec_id = ?", (exec_id,)
        ):
            jobs_by_status.setdefault(status, []).append(job_id)

        for status, job_ids in sorted(jobs_by_status.items()):
            print(f"  {status}:", *job_ids)
    print()