From c663df006b76e7a00b93aea1d07b23bf0546f9e0 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:30:13 -0500 Subject: [PATCH] Fix: serializar tipos Firebird no-JSON (date, datetime, Decimal) en execute_query Co-Authored-By: Claude Sonnet 4.6 --- app/services/firebird_service.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/services/firebird_service.py b/app/services/firebird_service.py index cd9a451..5f0e40b 100644 --- a/app/services/firebird_service.py +++ b/app/services/firebird_service.py @@ -1,7 +1,17 @@ import fdb +import datetime +import decimal from typing import Optional +def _safe(v): + if isinstance(v, (datetime.date, datetime.datetime)): + return v.isoformat() + if isinstance(v, decimal.Decimal): + return float(v) + return v + + class FirebirdService: def __init__(self): self.conn = None @@ -50,7 +60,7 @@ class FirebirdService: cur.execute(query) columns = [desc[0] for desc in cur.description] if cur.description else [] rows = cur.fetchall() - return True, "", [dict(zip(columns, row)) for row in rows] + return True, "", [{c: _safe(v) for c, v in zip(columns, row)} for row in rows] except Exception as e: return False, str(e), []