"""Prozkoumá strukturu tabulky DATA v externí DB - spusť na Windows"""
import fdb, glob

soubory = glob.glob(r'u:\MEDICUS_FILES_*.fdb') + glob.glob(r'u:\MEDICUS_FILES_*.FDB')
if not soubory:
    soubory = glob.glob(r'u:\externi\MEDICUS_FILES_*.fdb') + glob.glob(r'u:\externi\MEDICUS_FILES_*.FDB')

soubor = sorted(soubory)[-1]
print(f"Soubor: {soubor}\n")

conn = fdb.connect(dsn=f'localhost:{soubor}', user='SYSDBA', password='masterkey', charset='win1250')
cur = conn.cursor()

# Sloupce tabulky DATA
print("=== Sloupce tabulky DATA ===")
cur.execute("""
    SELECT r.RDB$FIELD_NAME, f.RDB$FIELD_TYPE, f.RDB$FIELD_LENGTH, f.RDB$SEGMENT_LENGTH
    FROM RDB$RELATION_FIELDS r
    JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = r.RDB$FIELD_SOURCE
    WHERE r.RDB$RELATION_NAME = 'DATA'
    ORDER BY r.RDB$FIELD_POSITION
""")
for row in cur.fetchall():
    typ = {7:'SMALLINT',8:'INTEGER',12:'DATE',13:'TIME',14:'CHAR',16:'INT64',35:'TIMESTAMP',37:'VARCHAR',261:'BLOB'}.get(row[1], str(row[1]))
    print(f"  {row[0].strip():30} {typ}  len={row[2]}")

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

# Počet záznamů a ukázka
print("\n=== Počet záznamů ===")
cur.execute("SELECT COUNT(*) FROM DATA")
print(f"  {cur.fetchone()[0]} záznamů")

print("\n=== Ukázka 3 záznamů (bez BLOB) ===")
cur.execute("""
    SELECT ID, OCTET_LENGTH(BODY) as VELIKOST
    FROM DATA ORDER BY ID ROWS 3
""")
for row in cur.fetchall():
    print(f"  ID={row[0]}  BODY={row[1]}B")

conn.close()
