meal-order-manager/src/server/jobs/close_form.py

25 lines
752 B
Python
Raw Normal View History

from shared.db import current_week, get_form_status, set_form_status
def _dispatch_job(payload: dict) -> None:
from server.jobs import enqueue_job
enqueue_job(payload)
def lambda_handler(event, context):
# Scheduler fires Thursday 23:59 America/New_York. Do not skip on wall
# clock: a delayed SQS delivery must still close the week. already-closed
# is the idempotency gate for redelivery.
week = event.get("week", current_week())
status = get_form_status(week)
if status == "closed":
return {"status": "already_closed", "week": week}
set_form_status(week, "closed")
_dispatch_job({"event": "aggregate", "week": week})
return {"status": "closed", "week": week, "aggregate_triggered": True}