Skip to content

Commit cf5118e

Browse files
committed
Return data as json instead of string
1 parent 30cc781 commit cf5118e

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

message_db/client.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import json
34
from typing import Any, Dict, List
45
from uuid import uuid4
56

@@ -143,12 +144,20 @@ def read(
143144
"batch_size": no_of_messages,
144145
},
145146
)
146-
messages = cursor.fetchall()
147+
raw_messages = cursor.fetchall()
147148

148149
conn.commit()
149150
cursor.close()
150151
self.connection_pool.release(conn)
151152

153+
messages = []
154+
for message in raw_messages:
155+
message["data"] = json.loads(message["data"])
156+
message["metadata"] = (
157+
json.loads(message["metadata"]) if message["metadata"] else None
158+
)
159+
messages.append(message)
160+
152161
return messages
153162

154163
def read_stream(
@@ -190,4 +199,9 @@ def read_last_message(self, stream_name) -> Dict[str, Any]:
190199
cursor.close()
191200
self.connection_pool.release(conn)
192201

202+
if message:
203+
message["data"] = json.loads(message["data"])
204+
message["metadata"] = (
205+
json.loads(message["metadata"]) if message["metadata"] else None
206+
)
193207
return message

tests/test_client.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import json
2-
31
import pytest
42

53
from message_db.client import MessageDB
@@ -35,7 +33,7 @@ def test_writing_message_with_metadata(self, client):
3533
client.write("testStream-123", "Event1", {"foo": "bar"}, {"trace_id": "baz"})
3634

3735
messages = client.read("testStream-123")
38-
assert messages[0]["metadata"] == json.dumps({"trace_id": "baz"})
36+
assert messages[0]["metadata"] == {"trace_id": "baz"}
3937

4038
def test_that_write_returns_position_of_message_written(self, client):
4139
position = client.write("testStream-123", "Event1", {"foo": "bar"})
@@ -90,7 +88,7 @@ def test_read_stream_from_store(self, client):
9088

9189
messages = client.read("testStream-123")
9290
assert messages is not None
93-
assert messages[0]["data"] == json.dumps({"foo": "bar"})
91+
assert messages[0]["data"] == {"foo": "bar"}
9492

9593
def test_read_multiple_stream_messages_from_store(self, client):
9694
for i in range(5):
@@ -100,7 +98,7 @@ def test_read_multiple_stream_messages_from_store(self, client):
10098

10199
assert messages is not None
102100
assert len(messages) == 5
103-
assert messages[4]["data"] == json.dumps({"foo4": "bar4"})
101+
assert messages[4]["data"] == {"foo4": "bar4"}
104102

105103
def test_read_paginated_stream_messages_from_store(self, client):
106104
for i in range(5):
@@ -110,15 +108,15 @@ def test_read_paginated_stream_messages_from_store(self, client):
110108

111109
assert messages is not None
112110
assert len(messages) == 3
113-
assert messages[2]["data"] == json.dumps({"foo2": "bar2"})
111+
assert messages[2]["data"] == {"foo2": "bar2"}
114112

115113
def test_read_stream_last_message(self, client):
116114
for i in range(5):
117115
client.write("testStream-123", "Event1", {"foo": f"bar{i}"})
118116

119117
message = client.read_last_message("testStream-123")
120118
assert message["position"] == 4
121-
assert message["data"] == json.dumps({"foo": "bar4"})
119+
assert message["data"] == {"foo": "bar4"}
122120

123121
def test_read_specific_stream_message(self, client):
124122
for i in range(5):
@@ -129,7 +127,7 @@ def test_read_specific_stream_message(self, client):
129127
messages = client.read("testStream-456")
130128

131129
assert len(messages) == 5
132-
assert messages[4]["data"] == json.dumps({"foo": "baz4"})
130+
assert messages[4]["data"] == {"foo": "baz4"}
133131

134132
def test_read_category_messages(self, client):
135133
for i in range(5):
@@ -138,7 +136,7 @@ def test_read_category_messages(self, client):
138136
messages = client.read("testStream")
139137

140138
assert len(messages) == 5
141-
assert messages[4]["data"] == json.dumps({"foo": "bar4"})
139+
assert messages[4]["data"] == {"foo": "bar4"}
142140

143141

144142
class TestReadStream:
@@ -153,7 +151,7 @@ def test_read_stream_from_store(self, client):
153151

154152
messages = client.read_stream("testStream-123")
155153
assert messages is not None
156-
assert messages[0]["data"] == json.dumps({"foo": "bar"})
154+
assert messages[0]["data"] == {"foo": "bar"}
157155

158156
def test_read_multiple_stream_messages_from_store(self, client):
159157
for i in range(5):
@@ -163,7 +161,7 @@ def test_read_multiple_stream_messages_from_store(self, client):
163161

164162
assert messages is not None
165163
assert len(messages) == 5
166-
assert messages[4]["data"] == json.dumps({"foo4": "bar4"})
164+
assert messages[4]["data"] == {"foo4": "bar4"}
167165

168166
def test_read_paginated_stream_messages_from_store(self, client):
169167
for i in range(5):
@@ -173,7 +171,7 @@ def test_read_paginated_stream_messages_from_store(self, client):
173171

174172
assert messages is not None
175173
assert len(messages) == 3
176-
assert messages[2]["data"] == json.dumps({"foo2": "bar2"})
174+
assert messages[2]["data"] == {"foo2": "bar2"}
177175

178176

179177
class TestReadCategory:
@@ -188,7 +186,7 @@ def test_read_category_messages_from_store(self, client):
188186

189187
messages = client.read_category("testStream")
190188
assert messages is not None
191-
assert messages[0]["data"] == json.dumps({"foo": "bar"})
189+
assert messages[0]["data"] == {"foo": "bar"}
192190

193191
def test_read_multiple_category_messages_from_store(self, client):
194192
for i in range(5):
@@ -198,7 +196,7 @@ def test_read_multiple_category_messages_from_store(self, client):
198196

199197
assert messages is not None
200198
assert len(messages) == 5
201-
assert messages[4]["data"] == json.dumps({"foo4": "bar4"})
199+
assert messages[4]["data"] == {"foo4": "bar4"}
202200

203201
def test_read_paginated_category_messages_from_store(self, client):
204202
for i in range(5):
@@ -208,4 +206,4 @@ def test_read_paginated_category_messages_from_store(self, client):
208206

209207
assert messages is not None
210208
assert len(messages) == 3
211-
assert messages[2]["data"] == json.dumps({"foo2": "bar2"})
209+
assert messages[2]["data"] == {"foo2": "bar2"}

0 commit comments

Comments
 (0)