max / makenotwork
| 1 | -- Webhook event deduplication: track processed event IDs to prevent |
| 2 | -- duplicate processing on Stripe retries. |
| 3 | NOT EXISTS processed_webhook_events ( |
| 4 | event_id TEXT PRIMARY KEY, |
| 5 | processed_at TIMESTAMPTZ NOT NULL DEFAULT NOW |
| 6 | ); |
| 7 | |
| 8 | -- Auto-clean old entries (keep 30 days) |
| 9 | |
| 10 | ON processed_webhook_events (processed_at); |
| 11 |