Skip to content

Commit 38e4436

Browse files
committed
fix delete non existing record
1 parent a00a68b commit 38e4436

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

aredis_om/model/model.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from pydantic.main import ModelMetaclass, validate_model
3232
from pydantic.typing import NoArgAnyCallable
3333
from pydantic.utils import Representation
34+
from redis.exceptions import ResponseError
3435
from typing_extensions import Protocol, get_args, get_origin
3536
from ulid import ULID
3637

@@ -795,7 +796,10 @@ async def update(self, use_transaction=True, **field_values):
795796
async def delete(self):
796797
"""Delete all matching records in this query."""
797798
# TODO: Better response type, error detection
798-
return await self.model.db().delete(*[m.key() for m in await self.all()])
799+
try:
800+
return await self.model.db().delete(*[m.key() for m in await self.all()])
801+
except ResponseError:
802+
return 0
799803

800804
async def __aiter__(self):
801805
if self._model_cache:

tests/test_hash_model.py

Lines changed: 21 additions & 0 deletions
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)