diff --git a/aredis_om/model/model.py b/aredis_om/model/model.py index 46857106..324668b1 100644 --- a/aredis_om/model/model.py +++ b/aredis_om/model/model.py @@ -763,6 +763,9 @@ async def all(self, batch_size=DEFAULT_PAGE_SIZE): async def page(self, offset=0, limit=10): return await self.copy(offset=offset, limit=limit).execute() + async def count(self, batch_size=10): + return len(await self.all(batch_size)) + def sort_by(self, *fields: str): if not fields: return self diff --git a/tests/test_hash_model.py b/tests/test_hash_model.py index 84a05086..a5a3a4cd 100644 --- a/tests/test_hash_model.py +++ b/tests/test_hash_model.py @@ -103,6 +103,17 @@ async def members(m): yield member1, member2, member3 +@py_test_mark_asyncio +async def test_count_query(members, m): + + count = await m.Member.find((m.Member.first_name == "Andrew") & (m.Member.last_name == "Brookins")).count() + assert count == 1 + count = await m.Member.find(m.Member.first_name == "Andrew").count() + assert count == 2 + count = await m.Member.find().count() + assert count == 3 + + @py_test_mark_asyncio async def test_exact_match_queries(members, m): member1, member2, member3 = members