From 72aa96a99fa6bc4209ea8a771600832d9315fe00 Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 26 Feb 2024 18:00:55 +0300 Subject: [PATCH] dict-patch --- services/db.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/db.py b/services/db.py index 94ba22ba..6642b596 100644 --- a/services/db.py +++ b/services/db.py @@ -3,7 +3,7 @@ import time from typing import Any, Callable, Dict, TypeVar -from sqlalchemy import exc, event, Engine, inspect, Column, Integer, create_engine +from sqlalchemy import exc, event, Engine, inspect, Column, Integer, create_engine, JSON from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import Session, configure_mappers from sqlalchemy.sql.schema import Table @@ -48,7 +48,15 @@ class Base(declarative_base()): def dict(self) -> Dict[str, Any]: column_names = filter(lambda x: x not in FILTERED_FIELDS, self.__table__.columns.keys()) try: - return {c: getattr(self, c) for c in column_names} + data = {} + for c in column_names: + value = getattr(self, c) + if isinstance(value, JSON): + # Cast JSON column to string + data[c] = str(value) + else: + data[c] = value + return data except Exception as e: logger.error(f'Error occurred while converting object to dictionary: {e}') return {}