@@ -40,11 +40,13 @@ def decimal_encoder(json_obj):
4040 return json .loads (json .dumps (json_obj , cls = DecimalEncoder ))
4141
4242
43- def _paginated_scan (ddb_table ):
43+ def _paginated_scan (ddb_table , filter_exp = None ):
4444 """performs a paginated scan of the DynamoDB table
4545 """
46-
47- response = ddb_table .scan ()
46+ if filter_exp :
47+ response = ddb_table .scan (FilterExpression = filter_exp )
48+ else :
49+ response = ddb_table .scan ()
4850 data = response ['Items' ]
4951 print (len (data ))
5052
@@ -371,39 +373,44 @@ def get_stats(userid=None, after_when=None, before_when=None):
371373 response = None
372374
373375 if all ([userid , after_when , before_when ]):
374- response = fishfry_stats .scan (
375- FilterExpression = \
376+ response = _paginated_scan (
377+ ddb_table = fishfry_stats ,
378+ filter_exp = \
376379 Attr ('userid' ).contains (userid ) & \
377380 Attr ('when' ).gt (after_when ) & \
378381 Attr ('when' ).lt (before_when )
379382 )
380383
381384 elif all ([after_when , before_when ]) and not userid :
382- response = fishfry_stats .scan (
383- FilterExpression = \
385+ response = _paginated_scan (
386+ ddb_table = fishfry_stats ,
387+ filter_exp = \
384388 Attr ('when' ).gt (after_when ) & \
385389 Attr ('when' ).lt (before_when )
386390 )
387391
388392 elif after_when and not all ([userid , before_when ]):
389- response = fishfry_stats .scan (
390- FilterExpression = \
393+ response = _paginated_scan (
394+ ddb_table = fishfry_stats ,
395+ filter_exp = \
391396 Attr ('when' ).gt (after_when )
392397 )
393398 elif before_when and not all ([userid , after_when ]):
394- response = fishfry_stats .scan (
395- FilterExpression = \
399+ response = _paginated_scan (
400+ ddb_table = fishfry_stats ,
401+ filter_exp = \
396402 Attr ('when' ).lt (before_when )
397403 )
398404
399405 elif userid and not all ([after_when , before_when ]):
400- response = fishfry_stats .scan (
401- FilterExpression = Attr ('userid' ).contains (userid )
406+ response = _paginated_scan (
407+ ddb_table = fishfry_stats ,
408+ filter_exp = Attr ('userid' ).contains (userid )
402409 )
403410
404411 else :
405412 # not all([userid, after_when, before_when]):
406- response = fishfry_stats . scan ( )
413+ response = _paginated_scan ( ddb_table = fishfry_stats )
407414
408415 tally = {}
409416
0 commit comments