Skip to content

Commit 0d09886

Browse files
Savannah Noremslorello89
Savannah Norem
andauthored
merge single page per page call (#624) into feature branch (#631)
single page per `page` call (#624) Co-authored-by: Steve Lorello <[email protected]>
1 parent cf91eac commit 0d09886

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

aredis_om/model/model.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,9 @@ async def all(self, batch_size=DEFAULT_PAGE_SIZE):
948948
return await self.execute()
949949

950950
async def page(self, offset=0, limit=10):
951-
return await self.copy(offset=offset, limit=limit).execute()
951+
return await self.copy(offset=offset, limit=limit).execute(
952+
exhaust_results=False
953+
)
952954

953955
def sort_by(self, *fields: str):
954956
if not fields:

tests/test_hash_model.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -389,8 +389,10 @@ async def test_sorting(members, m):
389389
async def test_case_sensitive(members, m):
390390
member1, member2, member3 = members
391391

392-
actual = await m.Member.find(m.Member.first_name == "Andrew").all()
393-
assert actual == [member1, member3]
392+
actual = await m.Member.find(
393+
m.Member.first_name == "Andrew" and m.Member.pk == member1.pk
394+
).all()
395+
assert actual == [member1]
394396

395397
actual = await m.Member.find(m.Member.first_name == "andrew").all()
396398
assert actual == []
@@ -859,13 +861,13 @@ async def test_xfix_queries(members, m):
859861
member1, member2, member3 = members
860862

861863
result = await m.Member.find(m.Member.first_name.startswith("And")).first()
862-
assert result.first_name == "Andrew"
864+
assert result.last_name == "Brookins"
863865

864866
result = await m.Member.find(m.Member.last_name.endswith("ins")).first()
865-
assert result.first_name == "Andrew"
867+
assert result.last_name == "Brookins"
866868

867869
result = await m.Member.find(m.Member.last_name.contains("ook")).first()
868-
assert result.first_name == "Andrew"
870+
assert result.last_name == "Brookins"
869871

870872
result = await m.Member.find(m.Member.bio % "great*").first()
871873
assert result.first_name == "Andrew"

tests/test_json_model.py

+25
Original file line numberDiff line numberDiff line change
@@ -1069,3 +1069,28 @@ class Example(JsonModel):
10691069

10701070
res = await Example.find(Example.d == ex.d and Example.b == True).first()
10711071
assert res.name == ex.name
1072+
1073+
1074+
@py_test_mark_asyncio
1075+
async def test_pagination():
1076+
class Test(JsonModel):
1077+
id: str = Field(primary_key=True, index=True)
1078+
num: int = Field(sortable=True, index=True)
1079+
1080+
@classmethod
1081+
async def get_page(cls, offset, limit):
1082+
return await cls.find().sort_by("num").page(limit=limit, offset=offset)
1083+
1084+
await Migrator().run()
1085+
1086+
pipe = Test.Meta.database.pipeline()
1087+
for i in range(0, 1000):
1088+
await Test(num=i, id=str(i)).save(pipeline=pipe)
1089+
1090+
await pipe.execute()
1091+
res = await Test.get_page(100, 100)
1092+
assert len(res) == 100
1093+
assert res[0].num == 100
1094+
res = await Test.get_page(10, 30)
1095+
assert len(res) == 30
1096+
assert res[0].num == 10

0 commit comments

Comments
 (0)