Skip to content

Commit

Permalink
fix handling of streaming queries with limit
Browse files Browse the repository at this point in the history
  • Loading branch information
OriHoch committed Jun 13, 2023
1 parent f374121 commit 91db2d2
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion open_bus_stride_api/routers/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,15 @@ def get_list(*args, convert_to_dict=None, **kwargs):
try:
q = get_list_query(session, *args, **kwargs)
if kwargs.get('get_count'):
debug_print(f'Getting count for query {q}')
q_count = q.count()
session.close()
return fastapi.Response(content=str(q_count), media_type="application/json")
else:
q = q.yield_per(QUERY_PAGE_SIZE)
debug_print(f'Getting results for query: {q}')
if not hasattr(q, '__q_limit') or not q.__q_limit or q.__q_limit > QUERY_PAGE_SIZE:
debug_print(f'adding yield_per({QUERY_PAGE_SIZE}) to query')
q = q.yield_per(QUERY_PAGE_SIZE)
q_iterator = (obj for obj in q)
first_items = list(itertools.islice(q_iterator, QUERY_PAGE_SIZE + 1))
if len(first_items) <= QUERY_PAGE_SIZE:
Expand Down Expand Up @@ -181,6 +185,7 @@ def get_list_query(session, db_model, limit, offset, filters=None, default_limit
session_query = session_query.limit(q_limit)
if q_offset is not None:
session_query = session_query.offset(q_offset)
session_query.__q_limit = q_limit
return session_query


Expand Down

0 comments on commit 91db2d2

Please sign in to comment.