"""Test připojení k externí DB a prozkoumání její struktury - spusť na Windows"""
import fdb, os, glob

# Najde první existující externí FDB soubor
soubory = glob.glob(r'u:\MEDICUS_FILES_*.fdb')
if not soubory:
    soubory = glob.glob(r'u:\externi\MEDICUS_FILES_*.fdb')

if not soubory:
    print("Žádné externí FDB soubory nenalezeny!")
    exit()

soubor = sorted(soubory)[-1]  # vezme nejnovější
print(f"Zkouším: {soubor}")

# Test 1: masterkey
try:
    conn = fdb.connect(dsn=f'localhost:{soubor}', user='SYSDBA', password='masterkey', charset='win1250')
    print("✓ Připojení s masterkey FUNGUJE!")

    cur = conn.cursor()

    # Jaké tabulky jsou v externí DB?
    cur.execute("SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG=0 AND RDB$VIEW_BLR IS NULL")
    tabulky = [r[0].strip() for r in cur.fetchall()]
    print(f"Tabulky v externí DB: {tabulky}")

    # Kolik záznamů v FILES?
    if 'FILES' in tabulky:
        cur.execute("SELECT COUNT(*), MIN(ID), MAX(ID) FROM FILES")
        row = cur.fetchone()
        print(f"FILES: {row[0]} záznamů, ID od {row[1]} do {row[2]}")

        cur.execute("SELECT ID, IDPAC, FILENAME, DATUM, OCTET_LENGTH(BODY) FROM FILES ORDER BY ID ROWS 3")
        for r in cur.fetchall():
            print(f"  ID={r[0]} IDPAC={r[1]} FILE={r[2]} DATUM={r[3]} BODY={r[4]}B")

        # Zjistit generátor
        cur.execute("SELECT RDB$GENERATOR_NAME, RDB$GENERATOR_ID FROM RDB$GENERATORS WHERE RDB$SYSTEM_FLAG=0")
        for r in cur.fetchall():
            print(f"Generátor: {r[0].strip()} = {r[1]}")

    conn.close()
except Exception as e:
    print(f"✗ masterkey NEFUNGUJE: {e}")

    # Test s jiným heslem - zkus prázdné
    try:
        conn = fdb.connect(dsn=f'localhost:{soubor}', user='SYSDBA', password='', charset='win1250')
        print("✓ Připojení s prázdným heslem FUNGUJE!")
        conn.close()
    except Exception as e2:
        print(f"✗ Prázdné heslo také nefunguje: {e2}")
