Add date filter and paging on all orders/ states

- Add date filtering (before parameter) to /queued.
- Add page limit to /sent and /pending.
This commit is contained in:
Blockstream Satellite 2021-07-06 11:41:05 -03:00
parent 9d421771e7
commit d8e7516f01
2 changed files with 6 additions and 5 deletions

View file

@ -182,20 +182,21 @@ class OrdersResource(Resource):
return error.messages, HTTPStatus.BAD_REQUEST
before = db.func.datetime(args['before'])
limit = args['limit']
if state == 'pending':
orders = Order.query.filter_by(
status=OrderStatus[state].value).\
filter(db.func.datetime(Order.created_at) < before).\
order_by(Order.created_at.desc()).\
limit(constants.PAGE_SIZE)
limit(limit)
elif state == 'queued':
limit = args['limit']
orders = Order.query.filter(or_(
Order.status ==
OrderStatus.pending.value,
Order.status ==
OrderStatus.transmitting.value)).\
filter(db.func.datetime(Order.created_at) < before).\
order_by(Order.bid_per_byte.desc()).limit(limit)
elif state == 'sent':
orders = Order.query.filter(or_(
@ -205,7 +206,7 @@ class OrdersResource(Resource):
OrderStatus.received.value)).\
filter(db.func.datetime(Order.created_at) < before).\
order_by(Order.ended_transmission_at.desc()).\
limit(constants.PAGE_SIZE)
limit(limit)
return [order_schema.dump(order) for order in orders]

View file

@ -65,7 +65,7 @@ def test_try_to_get_invalid_order_state(client):
@patch('constants.PAGE_SIZE', 3) # change PAGE_SIZE to run this test faster
@patch('orders.new_invoice')
@pytest.mark.parametrize("state", ['pending', 'sent'])
@pytest.mark.parametrize("state", ['pending', 'queued', 'sent'])
def test_get_orders_before_parameter(mock_new_invoice, client, state):
# Create PAGE_SIZE orders with the target state
n_orders = constants.PAGE_SIZE
@ -106,7 +106,7 @@ def test_get_orders_before_parameter(mock_new_invoice, client, state):
@patch('orders.new_invoice')
@pytest.mark.parametrize("state", ['queued'])
@pytest.mark.parametrize("state", ['pending', 'queued', 'sent'])
def test_get_orders_limit_parameter(mock_new_invoice, client, state):
n_bytes = 500
mock_new_invoice.return_value = (True,