32 lines
1.1 KiB
SQL
32 lines
1.1 KiB
SQL
-- CreateTable: outbox_events (Outbox Pattern)
|
|
CREATE TABLE "outbox_events" (
|
|
"outbox_id" BIGSERIAL NOT NULL,
|
|
"event_type" VARCHAR(100) NOT NULL,
|
|
"topic" VARCHAR(100) NOT NULL,
|
|
"key" VARCHAR(200) NOT NULL,
|
|
"payload" JSONB NOT NULL,
|
|
"aggregate_id" VARCHAR(100) NOT NULL,
|
|
"aggregate_type" VARCHAR(50) NOT NULL,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'PENDING',
|
|
"retry_count" INTEGER NOT NULL DEFAULT 0,
|
|
"max_retries" INTEGER NOT NULL DEFAULT 5,
|
|
"last_error" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"published_at" TIMESTAMP(3),
|
|
"next_retry_at" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "outbox_events_pkey" PRIMARY KEY ("outbox_id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "outbox_events_status_created_at_idx" ON "outbox_events"("status", "created_at");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "outbox_events_status_next_retry_at_idx" ON "outbox_events"("status", "next_retry_at");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "outbox_events_aggregate_type_aggregate_id_idx" ON "outbox_events"("aggregate_type", "aggregate_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "outbox_events_topic_idx" ON "outbox_events"("topic");
|