This commit is contained in:
Peter Howell 2025-08-29 23:28:36 +00:00
parent 0c32da87a9
commit e5fa6f0b76
1 changed files with 47 additions and 20 deletions

View File

@ -783,6 +783,22 @@ def insert_usefulinfo_record(parsed):
pass pass
print("[usefulinfo][tag-link-failed] summary_id=", summary_id, " tag=", t, " error=", str(ex_tag_link)) print("[usefulinfo][tag-link-failed] summary_id=", summary_id, " tag=", t, " error=", str(ex_tag_link))
# Determine schema variant for events (legacy column vs link table)
has_event_summary_col = False
has_link_table = True
try:
CUR.execute("SELECT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='useful_info_event' AND column_name='summary_id')")
row = CUR.fetchone()
has_event_summary_col = bool(row[0]) if row else False
except Exception as ex_chk1:
print('[usefulinfo][diag] failed to probe useful_info_event.summary_id:', str(ex_chk1))
try:
CUR.execute("SELECT to_regclass('useful_info_summary_event')")
row = CUR.fetchone()
has_link_table = bool(row and row[0])
except Exception as ex_chk2:
print('[usefulinfo][diag] failed to probe useful_info_summary_event presence:', str(ex_chk2))
# Events # Events
if summary_id and isinstance(events, list): if summary_id and isinstance(events, list):
for idx, e in enumerate(events, start=1): for idx, e in enumerate(events, start=1):
@ -830,29 +846,40 @@ def insert_usefulinfo_record(parsed):
try: try:
CUR.execute("SAVEPOINT sp_event") CUR.execute("SAVEPOINT sp_event")
CUR.execute( if has_event_summary_col:
""" CUR.execute(
INSERT INTO useful_info_event (dt, length, title, description) """
VALUES (%s, %s, %s, %s) INSERT INTO useful_info_event (summary_id, dt, length, title, description)
RETURNING id VALUES (%s, %s, %s, %s, %s)
""", RETURNING id
(raw_dt, raw_len, raw_title, raw_desc) """,
) (summary_id, raw_dt, raw_len, raw_title, raw_desc)
)
else:
CUR.execute(
"""
INSERT INTO useful_info_event (dt, length, title, description)
VALUES (%s, %s, %s, %s)
RETURNING id
""",
(raw_dt, raw_len, raw_title, raw_desc)
)
evrow = CUR.fetchone() evrow = CUR.fetchone()
if evrow and evrow[0]: if evrow and evrow[0]:
try: if has_link_table:
CUR.execute("SAVEPOINT sp_evlink")
CUR.execute(
"INSERT INTO useful_info_summary_event (summary_id, event_id) VALUES (%s, %s) ON CONFLICT DO NOTHING",
(summary_id, evrow[0])
)
CUR.execute("RELEASE SAVEPOINT sp_evlink")
except Exception as ex_evlink:
try: try:
CUR.execute("ROLLBACK TO SAVEPOINT sp_evlink") CUR.execute("SAVEPOINT sp_evlink")
except Exception: CUR.execute(
pass "INSERT INTO useful_info_summary_event (summary_id, event_id) VALUES (%s, %s) ON CONFLICT DO NOTHING",
print("[usefulinfo][event-link-failed] summary_id=", summary_id, " event_id=", evrow[0], " error=", str(ex_evlink)) (summary_id, evrow[0])
)
CUR.execute("RELEASE SAVEPOINT sp_evlink")
except Exception as ex_evlink:
try:
CUR.execute("ROLLBACK TO SAVEPOINT sp_evlink")
except Exception:
pass
print("[usefulinfo][event-link-failed] summary_id=", summary_id, " event_id=", evrow[0], " error=", str(ex_evlink))
print(f"[usefulinfo] inserted event id={evrow[0]} (summary_id={summary_id}) dt='{dt_str}' parsed={parsed_ok} iso='{parsed_iso}' all_day={all_day} minutes={computed_minutes} title='{raw_title}'") print(f"[usefulinfo] inserted event id={evrow[0]} (summary_id={summary_id}) dt='{dt_str}' parsed={parsed_ok} iso='{parsed_iso}' all_day={all_day} minutes={computed_minutes} title='{raw_title}'")
else: else:
print(f"[usefulinfo][warn] no event id returned for dt='{dt_str}' title='{raw_title}'") print(f"[usefulinfo][warn] no event id returned for dt='{dt_str}' title='{raw_title}'")