23 lines
862 B
SQL
23 lines
862 B
SQL
-- CreateEnum
|
|
CREATE TYPE "CronRunStatus" AS ENUM ('RUNNING', 'SUCCESS', 'FAILED');
|
|
|
|
-- CreateTable: log per cron run untuk observability admin. Append-only.
|
|
CREATE TABLE "CronRun" (
|
|
"id" TEXT NOT NULL,
|
|
"jobName" TEXT NOT NULL,
|
|
"startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"finishedAt" TIMESTAMP(3),
|
|
"status" "CronRunStatus" NOT NULL DEFAULT 'RUNNING',
|
|
"errorMessage" TEXT,
|
|
"payload" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "CronRun_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex: query "last run per job" sering — pakai composite index.
|
|
CREATE INDEX "CronRun_jobName_startedAt_idx" ON "CronRun"("jobName", "startedAt" DESC);
|
|
|
|
-- CreateIndex: query "recent runs across all jobs" untuk admin dashboard.
|
|
CREATE INDEX "CronRun_startedAt_idx" ON "CronRun"("startedAt" DESC);
|