CREATE TYPE "PipelineStatus" AS ENUM ('PENDING', 'RUNNING', 'PASSED', 'FAILED', 'CANCELED');
CREATE TYPE "StageStatus" AS ENUM ('PENDING', 'RUNNING', 'PASSED', 'FAILED', 'CANCELED');
CREATE TABLE "Pipeline" (
"id" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"name" TEXT NOT NULL,
"status" "PipelineStatus" NOT NULL DEFAULT 'PENDING',
"manifest" TEXT,
"repoId" TEXT NOT NULL,
CONSTRAINT "Pipeline_pkey" PRIMARY KEY ("id")
);
CREATE TABLE "Stage" (
"id" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"name" TEXT NOT NULL,
"order" INTEGER NOT NULL,
"status" "StageStatus" NOT NULL DEFAULT 'PENDING',
"logs" TEXT,
"pipelineId" TEXT NOT NULL,
CONSTRAINT "Stage_pkey" PRIMARY KEY ("id")
);
CREATE TABLE "Artefact" (
"id" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"name" TEXT NOT NULL,
"path" TEXT NOT NULL,
"size" INTEGER,
"pipelineId" TEXT NOT NULL,
CONSTRAINT "Artefact_pkey" PRIMARY KEY ("id")
);
ALTER TABLE "Pipeline" ADD CONSTRAINT "Pipeline_repoId_fkey" FOREIGN KEY ("repoId") REFERENCES "Repository"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "Stage" ADD CONSTRAINT "Stage_pipelineId_fkey" FOREIGN KEY ("pipelineId") REFERENCES "Pipeline"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "Artefact" ADD CONSTRAINT "Artefact_pipelineId_fkey" FOREIGN KEY ("pipelineId") REFERENCES "Pipeline"("id") ON DELETE RESTRICT ON UPDATE CASCADE;