rwadurian/backend/services/planting-service/prisma/migrations/20241210000000_add_outbox/migration.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");