#!/usr/bin/env python3
# Laporan status migrasi: versi terpasang vs berkas yang tersedia.
import os
import re

import psycopg

BASE = os.path.dirname(os.path.abspath(__file__))
POLA = re.compile(r"^(\d+)_(.+)\.up\.sql$")

conn = psycopg.connect()
conn.execute("""
    CREATE TABLE IF NOT EXISTS schema_migrations (
        version    bigint PRIMARY KEY,
        name       text NOT NULL,
        applied_at timestamptz NOT NULL DEFAULT now()
    )
""")
conn.commit()

ada = {}
for berkas in sorted(os.listdir(BASE)):
    m = POLA.match(berkas)
    if m:
        ada[int(m.group(1))] = m.group(2)

terpasang = {v for (v,) in conn.execute(
    "SELECT version FROM schema_migrations").fetchall()}

for versi in sorted(ada):
    status = "terpasang" if versi in terpasang else "tertunda"
    print(f"{versi:04d}_{ada[versi]}: {status}")

conn.close()
