mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 15:26:33 +00:00
- Reorganized Prisma schema structure with simplified models and relations - Removed zod-prisma-types generator as it's no longer needed - Consolidated problem content types into a single ProblemLocalization model - Simplified testcase and template structures - Removed unused prisma types file
245 lines
7.5 KiB
SQL
245 lines
7.5 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "Role" AS ENUM ('ADMIN', 'GUEST');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "Difficulty" AS ENUM ('EASY', 'MEDIUM', 'HARD');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "Locale" AS ENUM ('en', 'zh');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "Language" AS ENUM ('c', 'cpp');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "Protocol" AS ENUM ('ws', 'wss');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "Status" AS ENUM ('PD', 'QD', 'CP', 'CE', 'CS', 'RU', 'TLE', 'MLE', 'RE', 'AC', 'WA', 'SE');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "ProblemContentType" AS ENUM ('TITLE', 'DESCRIPTION', 'SOLUTION');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"email" TEXT NOT NULL,
|
|
"emailVerified" TIMESTAMP(3),
|
|
"image" TEXT,
|
|
"role" "Role" NOT NULL DEFAULT 'GUEST',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Problem" (
|
|
"id" TEXT NOT NULL,
|
|
"displayId" INTEGER NOT NULL,
|
|
"difficulty" "Difficulty" NOT NULL DEFAULT 'EASY',
|
|
"isPublished" BOOLEAN NOT NULL DEFAULT false,
|
|
"timeLimit" INTEGER NOT NULL DEFAULT 1000,
|
|
"memoryLimit" INTEGER NOT NULL DEFAULT 134217728,
|
|
"userId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Problem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ProblemLocalization" (
|
|
"problemId" TEXT NOT NULL,
|
|
"locale" "Locale" NOT NULL,
|
|
"type" "ProblemContentType" NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "ProblemLocalization_pkey" PRIMARY KEY ("problemId","locale","type")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Template" (
|
|
"problemId" TEXT NOT NULL,
|
|
"language" "Language" NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Template_pkey" PRIMARY KEY ("problemId","language")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Submission" (
|
|
"id" TEXT NOT NULL,
|
|
"language" "Language" NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"status" "Status" NOT NULL,
|
|
"message" TEXT,
|
|
"timeUsage" INTEGER,
|
|
"memoryUsage" INTEGER,
|
|
"userId" TEXT NOT NULL,
|
|
"problemId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Submission_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Testcase" (
|
|
"id" TEXT NOT NULL,
|
|
"expectedOutput" TEXT NOT NULL,
|
|
"problemId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Testcase_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TestcaseInput" (
|
|
"id" TEXT NOT NULL,
|
|
"index" INTEGER NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"value" TEXT NOT NULL,
|
|
"testcaseId" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "TestcaseInput_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TestcaseResult" (
|
|
"id" TEXT NOT NULL,
|
|
"isCorrect" BOOLEAN NOT NULL,
|
|
"output" TEXT NOT NULL,
|
|
"timeUsage" INTEGER,
|
|
"memoryUsage" INTEGER,
|
|
"submissionId" TEXT NOT NULL,
|
|
"testcaseId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "TestcaseResult_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "DockerConfig" (
|
|
"language" "Language" NOT NULL,
|
|
"image" TEXT NOT NULL,
|
|
"tag" TEXT NOT NULL,
|
|
"workingDir" TEXT NOT NULL,
|
|
"compileOutputLimit" INTEGER NOT NULL DEFAULT 1048576,
|
|
"runOutputLimit" INTEGER NOT NULL DEFAULT 1048576,
|
|
|
|
CONSTRAINT "DockerConfig_pkey" PRIMARY KEY ("language")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "LanguageServerConfig" (
|
|
"language" "Language" NOT NULL,
|
|
"protocol" "Protocol" NOT NULL,
|
|
"hostname" TEXT NOT NULL,
|
|
"port" INTEGER,
|
|
"path" TEXT,
|
|
|
|
CONSTRAINT "LanguageServerConfig_pkey" PRIMARY KEY ("language")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Account" (
|
|
"userId" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"provider" TEXT NOT NULL,
|
|
"providerAccountId" TEXT NOT NULL,
|
|
"refresh_token" TEXT,
|
|
"access_token" TEXT,
|
|
"expires_at" INTEGER,
|
|
"token_type" TEXT,
|
|
"scope" TEXT,
|
|
"id_token" TEXT,
|
|
"session_state" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Account_pkey" PRIMARY KEY ("provider","providerAccountId")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Session" (
|
|
"sessionToken" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"expires" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "VerificationToken" (
|
|
"identifier" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"expires" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "VerificationToken_pkey" PRIMARY KEY ("identifier","token")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Authenticator" (
|
|
"credentialID" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"providerAccountId" TEXT NOT NULL,
|
|
"credentialPublicKey" TEXT NOT NULL,
|
|
"counter" INTEGER NOT NULL,
|
|
"credentialDeviceType" TEXT NOT NULL,
|
|
"credentialBackedUp" BOOLEAN NOT NULL,
|
|
"transports" TEXT,
|
|
|
|
CONSTRAINT "Authenticator_pkey" PRIMARY KEY ("userId","credentialID")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Problem_displayId_key" ON "Problem"("displayId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Authenticator_credentialID_key" ON "Authenticator"("credentialID");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Problem" ADD CONSTRAINT "Problem_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ProblemLocalization" ADD CONSTRAINT "ProblemLocalization_problemId_fkey" FOREIGN KEY ("problemId") REFERENCES "Problem"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Template" ADD CONSTRAINT "Template_problemId_fkey" FOREIGN KEY ("problemId") REFERENCES "Problem"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Submission" ADD CONSTRAINT "Submission_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Submission" ADD CONSTRAINT "Submission_problemId_fkey" FOREIGN KEY ("problemId") REFERENCES "Problem"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Testcase" ADD CONSTRAINT "Testcase_problemId_fkey" FOREIGN KEY ("problemId") REFERENCES "Problem"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TestcaseInput" ADD CONSTRAINT "TestcaseInput_testcaseId_fkey" FOREIGN KEY ("testcaseId") REFERENCES "Testcase"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TestcaseResult" ADD CONSTRAINT "TestcaseResult_submissionId_fkey" FOREIGN KEY ("submissionId") REFERENCES "Submission"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TestcaseResult" ADD CONSTRAINT "TestcaseResult_testcaseId_fkey" FOREIGN KEY ("testcaseId") REFERENCES "Testcase"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Authenticator" ADD CONSTRAINT "Authenticator_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|