diff --git a/app.py b/app.py index 334d804..e1a01b8 100644 --- a/app.py +++ b/app.py @@ -13,7 +13,7 @@ def handle_tickerdata(data: TickerData, condition: Condition): result = Condition.greater_than(condition.value, data.lastPrice) if result: - DbConnector.disable_condition(condition.id) + DbConnector.fulfill_condition(condition.id) print(data.symbol + ": " + data.lastPrice) diff --git a/messages/Condition.py b/messages/Condition.py index ba5a60c..cebc21d 100644 --- a/messages/Condition.py +++ b/messages/Condition.py @@ -7,6 +7,7 @@ class Condition: condition: str value: float disabled: bool + fulfilled: bool @staticmethod def lower_than(value: float, lastPrice: float): diff --git a/messages/DbConnector.py b/messages/DbConnector.py index 1cb11df..5ddca83 100644 --- a/messages/DbConnector.py +++ b/messages/DbConnector.py @@ -41,13 +41,13 @@ class DbConnector: conditions = fetch_conditions() for cond in conditions: - if not cond.disabled: + if not cond.disabled and not cond.fulfilled: callback(cond) feed = r.table(TABLE_NAME).changes().run(get_connection()) for change in feed: cond = Condition(**change['new_val']) - if not cond.disabled: + if not cond.disabled and not cond.fulfilled: callback(cond) @staticmethod @@ -56,4 +56,12 @@ class DbConnector: json = jsonify(cursor) json.disabled = True r.table(TABLE_NAME).get(condition_id).update(json).run(get_connection()) + + @staticmethod + def fulfill_condition(condition_id: str): + cursor = r.table(TABLE_NAME).get(condition_id).run(get_connection()) + json = jsonify(cursor) + json.disabled = True + json.fulfilled = True + r.table(TABLE_NAME).get(condition_id).update(json).run(get_connection())