101 lines
3.6 KiB
SQL
101 lines
3.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"email" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"passwordHash" TEXT,
|
|
"role" TEXT NOT NULL DEFAULT 'evaluator',
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Template" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"name" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TemplateDimension" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"templateId" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"orderIndex" INTEGER NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"rubric" TEXT NOT NULL,
|
|
"suggestedQuestions" TEXT,
|
|
CONSTRAINT "TemplateDimension_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Evaluation" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"candidateName" TEXT NOT NULL,
|
|
"candidateRole" TEXT NOT NULL,
|
|
"candidateTeam" TEXT,
|
|
"evaluatorName" TEXT NOT NULL,
|
|
"evaluatorId" TEXT,
|
|
"evaluationDate" DATETIME NOT NULL,
|
|
"templateId" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'draft',
|
|
"findings" TEXT,
|
|
"recommendations" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "Evaluation_evaluatorId_fkey" FOREIGN KEY ("evaluatorId") REFERENCES "User" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
CONSTRAINT "Evaluation_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "EvaluationShare" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"evaluationId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "EvaluationShare_evaluationId_fkey" FOREIGN KEY ("evaluationId") REFERENCES "Evaluation" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "EvaluationShare_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "DimensionScore" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"evaluationId" TEXT NOT NULL,
|
|
"dimensionId" TEXT NOT NULL,
|
|
"score" INTEGER,
|
|
"justification" TEXT,
|
|
"examplesObserved" TEXT,
|
|
"confidence" TEXT,
|
|
"candidateNotes" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
CONSTRAINT "DimensionScore_evaluationId_fkey" FOREIGN KEY ("evaluationId") REFERENCES "Evaluation" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT "DimensionScore_dimensionId_fkey" FOREIGN KEY ("dimensionId") REFERENCES "TemplateDimension" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AuditLog" (
|
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
"evaluationId" TEXT NOT NULL,
|
|
"action" TEXT NOT NULL,
|
|
"field" TEXT,
|
|
"oldValue" TEXT,
|
|
"newValue" TEXT,
|
|
"userId" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "AuditLog_evaluationId_fkey" FOREIGN KEY ("evaluationId") REFERENCES "Evaluation" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TemplateDimension_templateId_slug_key" ON "TemplateDimension"("templateId", "slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "EvaluationShare_evaluationId_userId_key" ON "EvaluationShare"("evaluationId", "userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "DimensionScore_evaluationId_dimensionId_key" ON "DimensionScore"("evaluationId", "dimensionId");
|