-- Idempotency table for inbound Shopify webhooks. We insert a row keyed on -- the X-Shopify-Webhook-Id header at the start of webhook processing; a -- duplicate insert (P2002) means Shopify retried a delivery we've already -- seen, so we short-circuit and return 200 without doing the work twice. CREATE TABLE "ProcessedWebhook" ( "webhookId" TEXT NOT NULL PRIMARY KEY, "topic" TEXT NOT NULL, "shopDomain" TEXT NOT NULL, "receivedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX "ProcessedWebhook_shopDomain_topic_idx" ON "ProcessedWebhook"("shopDomain", "topic");