Initial implementation of custom price triggers
- likely to have some bugs, but this is good enough for a preview release.
This commit is contained in:
@@ -15,10 +15,13 @@ class History:
|
||||
self._last_price_movement: int = 0
|
||||
self._latest_price_datum: Tuple[datetime.datetime, int] | None = None
|
||||
self._update_triggers: List[UpdateTrigger] = []
|
||||
# Create triggers for all non-custom alert types
|
||||
for alert_type in AlertType:
|
||||
self._update_triggers.append(
|
||||
UpdateTrigger(Alert(alert_type, flavor, self._region))
|
||||
)
|
||||
if alert_type != AlertType.SPECIFIC_PRICE:
|
||||
self._update_triggers.append(
|
||||
UpdateTrigger(Alert(alert_type, flavor, self._region))
|
||||
)
|
||||
# SPECIFIC_PRICE triggers are created on-demand as they have unique prices
|
||||
|
||||
@property
|
||||
def flavor(self) -> Flavor:
|
||||
@@ -55,8 +58,21 @@ class History:
|
||||
self._history.append(datum)
|
||||
return await self._process_update_triggers()
|
||||
|
||||
async def find_update_trigger_from_alert(self, alert: Alert) -> UpdateTrigger:
|
||||
async def find_update_trigger_from_alert(self, alert: Alert, initial_import: bool = False) -> UpdateTrigger:
|
||||
for trigger in self._update_triggers:
|
||||
if trigger.alert == alert:
|
||||
return trigger
|
||||
|
||||
# If not found and it's a SPECIFIC_PRICE alert, create it on-demand
|
||||
if alert.alert_type == AlertType.SPECIFIC_PRICE:
|
||||
new_trigger = UpdateTrigger(alert)
|
||||
if initial_import:
|
||||
new_trigger.squelched = True
|
||||
self._update_triggers.append(new_trigger)
|
||||
# Initialize the trigger with current history
|
||||
if self._latest_price_datum is not None:
|
||||
new_trigger.check_and_update(self._latest_price_datum, self._history)
|
||||
new_trigger.squelched = False
|
||||
return new_trigger
|
||||
|
||||
raise ValueError
|
||||
|
||||
Reference in New Issue
Block a user