Skip to content

Commit 8b9fc45

Browse files
authored
Merge pull request #12 from socobox/find_all_generator
create function find_all_generator
2 parents 44a4f65 + 30c5e38 commit 8b9fc45

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ tmtagsHistory
4141
.bundle
4242

4343
condalibrary/*
44+
.env

sbxpy/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,24 @@ def merge_results(self, results):
270270
break
271271
return total_res
272272

273+
async def find_all_generator(self, page_size=1000):
274+
max_page_size=1000
275+
if page_size > max_page_size:
276+
raise ValueError(f"El tamaño máximo permitido es {max_page_size}, pero se recibio {page_size}")
277+
self.set_page_size(page_size)
278+
self.set_page(1)
279+
self.set_url(True)
280+
query_compiled = self.query.compile()
281+
data = await self.__then(query_compiled)
282+
yield data
283+
if data["success"]:
284+
total_pages = data["total_pages"]
285+
for i in range(1, total_pages):
286+
query_aux = copy.deepcopy(query_compiled)
287+
query_aux['page'] = i
288+
data = await self.__then(query_aux)
289+
yield data
290+
273291
async def find_all_query(self, page_size=1000, max_in_parallel=2):
274292
self.set_page_size(page_size)
275293
self.set_page(1)

test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
from sbxpy.__init__ import SbxCore as Sc
33
import asyncio
44
import os
5+
from dotenv import load_dotenv
56

67
'''
78
This is a test using the os environment:
89
credentials app: APP-KEY, DOMAIN
910
credentials user: LOGIN, PASSWORD
1011
'''
1112

13+
load_dotenv()
1214
async def main(sci):
1315

1416
qb = Qb()
@@ -29,6 +31,11 @@ async def main(sci):
2931
# domain = await sci.list_domain()
3032
sci.headers['Authorization'] = 'Bearer ' + os.environ['TOKEN']
3133
all_data = await sci.with_model(os.environ["MODEL"]).find_all()
34+
35+
print("\n=== Prueba de find_all_generator ===\n")
36+
async for page_data in sci.with_model(os.environ["MODEL"]).find_all_generator():
37+
print(f"Número de registros en esta página: {len(page_data["results"])}")
38+
3239
return all_data
3340

3441

0 commit comments

Comments
 (0)