Skip to content

Commit 09a3599

Browse files
author
Simon Prickett
authored
Merge pull request #132 from redis/delete-without-read-#127
Adds delete function at a class level - enables instances of models to be deleted without reading them first
2 parents e851131 + 6d009a0 commit 09a3599

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

aredis_om/model/model.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,8 +1114,10 @@ def key(self):
11141114
pk = getattr(self, self._meta.primary_key.field.name)
11151115
return self.make_primary_key(pk)
11161116

1117-
async def delete(self):
1118-
return await self.db().delete(self.key())
1117+
@classmethod
1118+
async def delete(cls, pk: Any) -> int:
1119+
"""Delete data at this key."""
1120+
return await cls.db().delete(cls.make_primary_key(pk))
11191121

11201122
@classmethod
11211123
async def get(cls, pk: Any) -> "RedisModel":

tests/test_hash_model.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,22 @@ async def test_saves_model_and_creates_pk(m):
375375
assert member2 == member
376376

377377

378+
@pytest.mark.asyncio
379+
async def test_delete(m):
380+
member = m.Member(
381+
first_name="Simon",
382+
last_name="Prickett",
383+
email="s@example.com",
384+
join_date=today,
385+
age=97,
386+
bio="This is a test user to be deleted.",
387+
)
388+
389+
await member.save()
390+
response = await m.Member.delete(member.pk)
391+
assert response == 1
392+
393+
378394
def test_raises_error_with_embedded_models(m):
379395
class Address(m.BaseHashModel):
380396
address_line_1: str

tests/test_json_model.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,22 @@ async def test_saves_model_and_creates_pk(address, m, redis):
187187
assert member2.address == address
188188

189189

190+
@pytest.mark.asyncio
191+
async def test_delete(address, m, redis):
192+
member = m.Member(
193+
first_name="Simon",
194+
last_name="Prickett",
195+
email="s@example.com",
196+
join_date=today,
197+
age=38,
198+
address=address,
199+
)
200+
201+
await member.save()
202+
response = await m.Member.delete(member.pk)
203+
assert response == 1
204+
205+
190206
@pytest.mark.asyncio
191207
async def test_saves_many_implicit_pipeline(address, m):
192208
member1 = m.Member(

0 commit comments

Comments
 (0)