Skip to content

Commit e9529e3

Browse files
authored
Fix crash when trying to delete non-existent record (#372)
1 parent 285f7c9 commit e9529e3

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

aredis_om/model/model.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from pydantic.typing import NoArgAnyCallable
3333
from pydantic.utils import Representation
3434
from redis.commands.json.path import Path
35+
from redis.exceptions import ResponseError
3536
from typing_extensions import Protocol, get_args, get_origin
3637
from ulid import ULID
3738

@@ -799,7 +800,10 @@ async def update(self, use_transaction=True, **field_values):
799800
async def delete(self):
800801
"""Delete all matching records in this query."""
801802
# TODO: Better response type, error detection
802-
return await self.model.db().delete(*[m.key() for m in await self.all()])
803+
try:
804+
return await self.model.db().delete(*[m.key() for m in await self.all()])
805+
except ResponseError:
806+
return 0
803807

804808
async def __aiter__(self):
805809
if self._model_cache:

tests/test_hash_model.py

+21
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,27 @@ async def test_exact_match_queries(members, m):
140140
assert actual == [member1]
141141

142142

143+
@py_test_mark_asyncio
144+
async def test_delete_non_exist(members, m):
145+
member1, member2, member3 = members
146+
actual = await m.Member.find(
147+
(m.Member.last_name == "Brookins") & ~(m.Member.first_name == "Andrew")
148+
).all()
149+
assert actual == [member2]
150+
assert (
151+
1
152+
== await m.Member.find(
153+
(m.Member.last_name == "Brookins") & ~(m.Member.first_name == "Andrew")
154+
).delete()
155+
)
156+
assert (
157+
0
158+
== await m.Member.find(
159+
(m.Member.last_name == "Brookins") & ~(m.Member.first_name == "Andrew")
160+
).delete()
161+
)
162+
163+
143164
@py_test_mark_asyncio
144165
async def test_full_text_search_queries(members, m):
145166
member1, member2, member3 = members

0 commit comments

Comments
 (0)