"""
Průzkum Medicus databáze – výpis tabulek a jejich sloupců.
"""
import fdb

conn = fdb.connect(
    dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
    user='SYSDBA',
    password='masterkey',
    charset='win1250'
)

cur = conn.cursor()

# Všechny uživatelské tabulky
cur.execute("""
    SELECT rdb$relation_name
    FROM rdb$relations
    WHERE rdb$view_blr IS NULL
      AND (rdb$system_flag IS NULL OR rdb$system_flag = 0)
    ORDER BY rdb$relation_name
""")
tables = [row[0].strip() for row in cur.fetchall()]

print(f"Počet tabulek: {len(tables)}\n")
print("=== SEZNAM TABULEK ===")
for t in tables:
    print(f"  {t}")

print("\n=== SLOUPCE KAŽDÉ TABULKY ===")
for table in tables:
    cur.execute("""
        SELECT rf.rdb$field_name, f.rdb$field_type, f.rdb$field_length
        FROM rdb$relation_fields rf
        JOIN rdb$fields f ON rf.rdb$field_source = f.rdb$field_name
        WHERE rf.rdb$relation_name = ?
        ORDER BY rf.rdb$field_position
    """, (table,))
    cols = cur.fetchall()
    col_names = [c[0].strip() for c in cols]
    print(f"\n{table}")
    print("  " + ", ".join(col_names))

cur.close()
conn.close()
