Skip to content

Commit c4ab3bf

Browse files
fix json
1 parent dc97f10 commit c4ab3bf

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

pioreactor/tests/test_utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from time import sleep
88

99
import pytest
10+
from msgspec.json import encode as dumps
1011

1112
from pioreactor.background_jobs.stirring import start_stirring
1213
from pioreactor.pubsub import subscribe_and_callback
@@ -322,6 +323,22 @@ def test_upsert_setting_insert(job_manager, job_id):
322323
assert result[0] == value
323324

324325

326+
def test_upsert_setting_insert_complex_types(job_manager, job_id):
327+
setting = "settingDict"
328+
value = {"A": 1, "B": {"C": 2}}
329+
330+
# Call the upsert_setting function
331+
job_manager.upsert_setting(job_id, setting, value)
332+
333+
# Verify the setting was inserted correctly
334+
job_manager.cursor.execute(
335+
"SELECT value FROM pio_job_published_settings WHERE job_id=? AND setting=?", (job_id, setting)
336+
)
337+
result = job_manager.cursor.fetchone()
338+
assert result is not None
339+
assert result[0] == dumps(value).decode() == r'{"A":1,"B":{"C":2}}'
340+
341+
325342
def test_upsert_setting_update(job_manager, job_id):
326343
# First insert a setting-value pair
327344
setting = "setting1"

pioreactor/utils/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ def upsert_setting(self, job_id: JobMetadataKey, setting: str, value: Any) -> No
627627
UPDATE SET value = :value;
628628
"""
629629
if isinstance(value, dict):
630-
value = dumps(value)
630+
value = dumps(value).decode() # back to string, not bytes
631631
else:
632632
value = str(value)
633633

0 commit comments

Comments
 (0)