Fix crash when trying to delete non-existent record (#372)
This commit is contained in:
parent
285f7c90ee
commit
e9529e35be
2 changed files with 26 additions and 1 deletions
|
@ -32,6 +32,7 @@ from pydantic.main import ModelMetaclass, validate_model
|
||||||
from pydantic.typing import NoArgAnyCallable
|
from pydantic.typing import NoArgAnyCallable
|
||||||
from pydantic.utils import Representation
|
from pydantic.utils import Representation
|
||||||
from redis.commands.json.path import Path
|
from redis.commands.json.path import Path
|
||||||
|
from redis.exceptions import ResponseError
|
||||||
from typing_extensions import Protocol, get_args, get_origin
|
from typing_extensions import Protocol, get_args, get_origin
|
||||||
from ulid import ULID
|
from ulid import ULID
|
||||||
|
|
||||||
|
@ -799,7 +800,10 @@ class FindQuery:
|
||||||
async def delete(self):
|
async def delete(self):
|
||||||
"""Delete all matching records in this query."""
|
"""Delete all matching records in this query."""
|
||||||
# TODO: Better response type, error detection
|
# TODO: Better response type, error detection
|
||||||
return await self.model.db().delete(*[m.key() for m in await self.all()])
|
try:
|
||||||
|
return await self.model.db().delete(*[m.key() for m in await self.all()])
|
||||||
|
except ResponseError:
|
||||||
|
return 0
|
||||||
|
|
||||||
async def __aiter__(self):
|
async def __aiter__(self):
|
||||||
if self._model_cache:
|
if self._model_cache:
|
||||||
|
|
|
@ -140,6 +140,27 @@ async def test_exact_match_queries(members, m):
|
||||||
assert actual == [member1]
|
assert actual == [member1]
|
||||||
|
|
||||||
|
|
||||||
|
@py_test_mark_asyncio
|
||||||
|
async def test_delete_non_exist(members, m):
|
||||||
|
member1, member2, member3 = members
|
||||||
|
actual = await m.Member.find(
|
||||||
|
(m.Member.last_name == "Brookins") & ~(m.Member.first_name == "Andrew")
|
||||||
|
).all()
|
||||||
|
assert actual == [member2]
|
||||||
|
assert (
|
||||||
|
1
|
||||||
|
== await m.Member.find(
|
||||||
|
(m.Member.last_name == "Brookins") & ~(m.Member.first_name == "Andrew")
|
||||||
|
).delete()
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
0
|
||||||
|
== await m.Member.find(
|
||||||
|
(m.Member.last_name == "Brookins") & ~(m.Member.first_name == "Andrew")
|
||||||
|
).delete()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@py_test_mark_asyncio
|
@py_test_mark_asyncio
|
||||||
async def test_full_text_search_queries(members, m):
|
async def test_full_text_search_queries(members, m):
|
||||||
member1, member2, member3 = members
|
member1, member2, member3 = members
|
||||||
|
|
Loading…
Reference in a new issue