Skip to content

Commit

Permalink
attempt to handle datetimes in sqlalchemy json serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
adamsachs committed May 1, 2024
1 parent 39f3b2b commit 9247189
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
15 changes: 15 additions & 0 deletions src/fides/api/db/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from datetime import date, datetime
from json import dumps


def default_serialize(obj):
"""JSON serializer for objects not serializable by default json code"""

if isinstance(obj, (datetime, date)):
return obj.isoformat()
raise TypeError("Type %s not serializable" % type(obj))


def json_serializer(obj):
"""JSON serializer that handles dates, to plug in for SQLAlchemy engine JSON serialization"""
return dumps(obj, default=default_serialize)
2 changes: 2 additions & 0 deletions src/fides/api/db/ctl_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker

from fides.api.db import json_serializer
from fides.api.db.session import ExtendedSession
from fides.config import CONFIG

Expand All @@ -31,6 +32,7 @@
echo=False,
hide_parameters=not CONFIG.dev_mode,
logging_name="SyncEngine",
json_serializer=json_serializer,
)
sync_session = sessionmaker(
sync_engine,
Expand Down
7 changes: 6 additions & 1 deletion src/fides/api/db/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from sqlalchemy.orm import Session, sessionmaker

from fides.api.common_exceptions import MissingConfig
from fides.api.db import json_serializer
from fides.config import FidesConfig


Expand All @@ -32,7 +33,11 @@ def get_db_engine(
else:
database_uri = config.database.sqlalchemy_database_uri
return create_engine(
database_uri, pool_pre_ping=True, pool_size=pool_size, max_overflow=max_overflow
database_uri,
pool_pre_ping=True,
pool_size=pool_size,
max_overflow=max_overflow,
json_serializer=json_serializer,
)


Expand Down

0 comments on commit 9247189

Please sign in to comment.