diff --git a/app/database.py b/app/database.py index 30bbf4b..f4b4de5 100644 --- a/app/database.py +++ b/app/database.py @@ -22,9 +22,10 @@ def apply_database_schema(connection): type varchar, instrument char(12), limit_price varchar, - quantity varchar, - created_at timestamp - ); + quantity int, + created_at timestamp, + status varchar DEFAULT('pending') + ) """ ) @@ -62,3 +63,12 @@ def insert_order(connection, order: Order): order.created_at = returned_row[1] return order + + +def mark_order_as(connection, order_id, status): + connection.execute( + """ + UPDATE orders set status = :status where id = :order_id + """, + {"status": status, "order_id": order_id}, + ) diff --git a/tests/database_test.py b/tests/database_test.py index d1ea5b7..a4c2cbf 100644 --- a/tests/database_test.py +++ b/tests/database_test.py @@ -26,5 +26,27 @@ def test_store_order(db_connection): assert record[2] == order.type_.value assert record[3] == order.instrument assert record[4] == str(order.limit_price) - assert record[5] == str(order.quantity) + assert record[5] == order.quantity assert record[6] == order.created_at + assert record[7] == "pending" + + +def test_mark_order_as(db_connection): + order = Order( + id="", + created_at=datetime.now(), + side=OrderSide.BUY, + type=OrderType.LIMIT, + instrument="123456789123", + limit_price=123.00, + quantity=1, + ) + database.insert_order(db_connection, order) + + database.mark_order_as(db_connection, order.id_, "failed") + + record = db_connection.execute( + "SELECT status FROM orders where id = :id", {"id": order.id_} + ).fetchone() + + assert record[0] == "failed"