fix: harden upstream and downstream receipt delivery
This commit is contained in:
+86
@@ -0,0 +1,86 @@
|
||||
CREATE TABLE "CmppDownstreamDeliveryAttempt" (
|
||||
"id" TEXT NOT NULL,
|
||||
"deliveryId" TEXT NOT NULL,
|
||||
"attemptKey" TEXT NOT NULL,
|
||||
"attemptNo" INTEGER NOT NULL,
|
||||
"connectionId" TEXT,
|
||||
"sequenceId" TEXT,
|
||||
"messageId" TEXT,
|
||||
"status" TEXT NOT NULL,
|
||||
"sentAt" TIMESTAMP(3),
|
||||
"ackDeadlineAt" TIMESTAMP(3),
|
||||
"acknowledgedAt" TIMESTAMP(3),
|
||||
"ackResult" INTEGER,
|
||||
"failureType" TEXT,
|
||||
"errorMessage" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "CmppDownstreamDeliveryAttempt_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE TABLE "UpstreamReceiptInbox" (
|
||||
"id" TEXT NOT NULL,
|
||||
"receiptKey" TEXT NOT NULL,
|
||||
"incomingChannelId" TEXT NOT NULL,
|
||||
"incomingConnectionId" TEXT,
|
||||
"upstreamAccount" TEXT NOT NULL,
|
||||
"upstreamHost" TEXT NOT NULL,
|
||||
"upstreamPort" INTEGER NOT NULL,
|
||||
"protocol" TEXT NOT NULL,
|
||||
"protocolVersion" TEXT NOT NULL,
|
||||
"provisionalMessageId" TEXT,
|
||||
"sequenceId" INTEGER,
|
||||
"gatewayMessageId" TEXT NOT NULL,
|
||||
"phoneNumber" TEXT,
|
||||
"receiptStatus" TEXT NOT NULL,
|
||||
"rawStatus" TEXT NOT NULL,
|
||||
"errorCode" TEXT,
|
||||
"errorMessage" TEXT,
|
||||
"deliveredAt" TIMESTAMP(3) NOT NULL,
|
||||
"receivedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"status" TEXT NOT NULL DEFAULT 'pending',
|
||||
"matchedMessageRecordId" TEXT,
|
||||
"matchedSubmitRecordId" TEXT,
|
||||
"matchedChannelId" TEXT,
|
||||
"attemptCount" INTEGER NOT NULL DEFAULT 0,
|
||||
"nextRetryAt" TIMESTAMP(3),
|
||||
"lastError" TEXT,
|
||||
"processedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "UpstreamReceiptInbox_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "CmppDownstreamDeliveryAttempt_attemptKey_key"
|
||||
ON "CmppDownstreamDeliveryAttempt"("attemptKey");
|
||||
|
||||
CREATE INDEX "CmppDownstreamDeliveryAttempt_deliveryId_attemptNo_idx"
|
||||
ON "CmppDownstreamDeliveryAttempt"("deliveryId", "attemptNo");
|
||||
|
||||
CREATE INDEX "CmppDownstreamDeliveryAttempt_status_ackDeadlineAt_idx"
|
||||
ON "CmppDownstreamDeliveryAttempt"("status", "ackDeadlineAt");
|
||||
|
||||
CREATE INDEX "CmppDownstreamDeliveryAttempt_connectionId_sequenceId_idx"
|
||||
ON "CmppDownstreamDeliveryAttempt"("connectionId", "sequenceId");
|
||||
|
||||
CREATE UNIQUE INDEX "UpstreamReceiptInbox_receiptKey_key"
|
||||
ON "UpstreamReceiptInbox"("receiptKey");
|
||||
|
||||
CREATE INDEX "UpstreamReceiptInbox_status_nextRetryAt_receivedAt_idx"
|
||||
ON "UpstreamReceiptInbox"("status", "nextRetryAt", "receivedAt");
|
||||
|
||||
CREATE INDEX "UpstreamReceiptInbox_gatewayMessageId_phoneNumber_idx"
|
||||
ON "UpstreamReceiptInbox"("gatewayMessageId", "phoneNumber");
|
||||
|
||||
CREATE INDEX "UpstreamReceiptInbox_incomingChannelId_receivedAt_idx"
|
||||
ON "UpstreamReceiptInbox"("incomingChannelId", "receivedAt");
|
||||
|
||||
CREATE INDEX "UpstreamReceiptInbox_matchedMessageRecordId_idx"
|
||||
ON "UpstreamReceiptInbox"("matchedMessageRecordId");
|
||||
|
||||
ALTER TABLE "CmppDownstreamDeliveryAttempt"
|
||||
ADD CONSTRAINT "CmppDownstreamDeliveryAttempt_deliveryId_fkey"
|
||||
FOREIGN KEY ("deliveryId") REFERENCES "CmppDownstreamDelivery"("id")
|
||||
ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
+790
-727
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user