diff --git a/aredis_om/model/model.py b/aredis_om/model/model.py index 8a1fac2..0c2ef60 100644 --- a/aredis_om/model/model.py +++ b/aredis_om/model/model.py @@ -1114,8 +1114,10 @@ class RedisModel(BaseModel, abc.ABC, metaclass=ModelMeta): pk = getattr(self, self._meta.primary_key.field.name) return self.make_primary_key(pk) - async def delete(self): - return await self.db().delete(self.key()) + @classmethod + async def delete(cls, pk: Any) -> int: + """Delete data at this key.""" + return await cls.db().delete(cls.make_primary_key(pk)) @classmethod async def get(cls, pk: Any) -> "RedisModel": diff --git a/tests/test_hash_model.py b/tests/test_hash_model.py index 9a9291a..133e43a 100644 --- a/tests/test_hash_model.py +++ b/tests/test_hash_model.py @@ -375,6 +375,22 @@ async def test_saves_model_and_creates_pk(m): assert member2 == member +@pytest.mark.asyncio +async def test_delete(m): + member = m.Member( + first_name="Simon", + last_name="Prickett", + email="s@example.com", + join_date=today, + age=97, + bio="This is a test user to be deleted.", + ) + + await member.save() + response = await m.Member.delete(member.pk) + assert response == 1 + + def test_raises_error_with_embedded_models(m): class Address(m.BaseHashModel): address_line_1: str diff --git a/tests/test_json_model.py b/tests/test_json_model.py index 8b360f7..d920a40 100644 --- a/tests/test_json_model.py +++ b/tests/test_json_model.py @@ -187,6 +187,22 @@ async def test_saves_model_and_creates_pk(address, m, redis): assert member2.address == address +@pytest.mark.asyncio +async def test_delete(address, m, redis): + member = m.Member( + first_name="Simon", + last_name="Prickett", + email="s@example.com", + join_date=today, + age=38, + address=address, + ) + + await member.save() + response = await m.Member.delete(member.pk) + assert response == 1 + + @pytest.mark.asyncio async def test_saves_many_implicit_pipeline(address, m): member1 = m.Member(