perf: batch gateway submits and isolate callbacks
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
CREATE TABLE "GatewaySubmitOutbox" (
|
||||
"id" TEXT NOT NULL,
|
||||
"submitId" TEXT NOT NULL,
|
||||
"messageRecordId" TEXT NOT NULL,
|
||||
"channelId" TEXT NOT NULL,
|
||||
"payload" JSONB NOT NULL,
|
||||
"schemaVersion" TEXT NOT NULL DEFAULT 'v1',
|
||||
"status" TEXT NOT NULL DEFAULT 'pending',
|
||||
"attemptCount" INTEGER NOT NULL DEFAULT 0,
|
||||
"nextAttemptAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"leaseOwner" TEXT,
|
||||
"leaseExpiresAt" TIMESTAMP(3),
|
||||
"streamEntryId" TEXT,
|
||||
"publishedAt" TIMESTAMP(3),
|
||||
"lastError" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "GatewaySubmitOutbox_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "GatewaySubmitOutbox_submitId_key"
|
||||
ON "GatewaySubmitOutbox"("submitId");
|
||||
|
||||
CREATE INDEX "GatewaySubmitOutbox_pending_claim_idx"
|
||||
ON "GatewaySubmitOutbox"("nextAttemptAt", "createdAt")
|
||||
WHERE "status" IN ('pending', 'publishing');
|
||||
|
||||
CREATE INDEX "GatewaySubmitOutbox_messageRecordId_idx"
|
||||
ON "GatewaySubmitOutbox"("messageRecordId");
|
||||
@@ -1828,6 +1828,28 @@ model SmsSubmitRecord {
|
||||
@@index([channelGroupId])
|
||||
}
|
||||
|
||||
model GatewaySubmitOutbox {
|
||||
id String @id @default(cuid())
|
||||
submitId String @unique
|
||||
messageRecordId String
|
||||
channelId String
|
||||
payload Json
|
||||
schemaVersion String @default("v1")
|
||||
status String @default("pending")
|
||||
attemptCount Int @default(0)
|
||||
nextAttemptAt DateTime @default(now())
|
||||
leaseOwner String?
|
||||
leaseExpiresAt DateTime?
|
||||
streamEntryId String?
|
||||
publishedAt DateTime?
|
||||
lastError String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([submitId, status])
|
||||
@@index([messageRecordId])
|
||||
}
|
||||
|
||||
model DailyReconciliationReport {
|
||||
id String @id @default(cuid())
|
||||
reportDate DateTime @db.Date
|
||||
|
||||
Reference in New Issue
Block a user