-- 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);