import os, requests
GATEWAY = "http://127.0.0.1:9470"
HEADERS = {"Authorization": f"Bearer {os.environ['WARDEN_API_KEY']}"}
def execute(statement, params=None, *, reason, idempotency_key=None, mode=None):
body = {"statement": statement, "params": params or [], "reason": reason}
if idempotency_key:
body["idempotency_key"] = idempotency_key
if mode:
body["mode"] = mode
r = requests.post(f"{GATEWAY}/api/v1/gateway/execute", json=body, headers=HEADERS)
return r.json()
result = execute(
"UPDATE orders SET status = $1 WHERE id = $2",
["refunded", order_id],
reason="Customer requested refund",
idempotency_key=f"{task_id}:{step}:{order_id}",
)
match result["status"]:
case "committed":
approver = (result.get("approval") or {}).get("by")
done(approved_by=approver) # say a human approved it, if one did
case "rejected": escalate(result["message"]) # a person said no
case "expired": retry_later() # nobody answered; nothing ran
case "stale": refresh_and_repropose() # data moved under us
case "denied": give_up(result["code"]) # policy forbids it
case "proposed": poll(result["operation_id"]) # async: a human has it