feat: harden sessions and track downstream acknowledgements
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
ALTER TABLE "SmsApplication"
|
||||
ADD COLUMN "downstreamReceiptRetryEnabled" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "downstreamUplinkRetryEnabled" BOOLEAN NOT NULL DEFAULT true;
|
||||
|
||||
ALTER TABLE "CmppDownstreamDelivery"
|
||||
ADD COLUMN "retryEnabled" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "sentAt" TIMESTAMP(3),
|
||||
ADD COLUMN "acknowledgedAt" TIMESTAMP(3),
|
||||
ADD COLUMN "ackDeadlineAt" TIMESTAMP(3),
|
||||
ADD COLUMN "ackResult" INTEGER,
|
||||
ADD COLUMN "ackSequenceId" TEXT,
|
||||
ADD COLUMN "ackMessageId" TEXT,
|
||||
ADD COLUMN "connectionId" TEXT;
|
||||
|
||||
UPDATE "CmppDownstreamDelivery"
|
||||
SET
|
||||
"status" = 'unconfirmed',
|
||||
"sentAt" = "deliveredAt",
|
||||
"deliveredAt" = NULL,
|
||||
"lastError" = '历史记录仅确认 Gateway 已写出,未留存 CMPP_DELIVER_RESP'
|
||||
WHERE "status" = 'delivered';
|
||||
|
||||
UPDATE "CmppDownstreamDelivery"
|
||||
SET "retryEnabled" = CASE
|
||||
WHEN "deliveryType" = 'uplink' THEN app."downstreamUplinkRetryEnabled"
|
||||
ELSE app."downstreamReceiptRetryEnabled"
|
||||
END
|
||||
FROM "SmsApplication" app
|
||||
WHERE app.id = "CmppDownstreamDelivery"."applicationId";
|
||||
|
||||
CREATE INDEX "CmppDownstreamDelivery_status_ackDeadlineAt_idx"
|
||||
ON "CmppDownstreamDelivery"("status", "ackDeadlineAt");
|
||||
Reference in New Issue
Block a user