mirror of
https://github.com/massbug/judge4c.git
synced 2026-05-20 13:18:52 +00:00
116 lines
4.1 KiB
SQL
116 lines
4.1 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "CourseEnrollmentRole" AS ENUM ('STUDENT', 'TA');
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "Submission" ADD COLUMN "assignmentId" TEXT;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Course" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"archived" BOOLEAN NOT NULL DEFAULT false,
|
|
"teacherId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Course_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CourseEnrollment" (
|
|
"id" TEXT NOT NULL,
|
|
"role" "CourseEnrollmentRole" NOT NULL DEFAULT 'STUDENT',
|
|
"courseId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "CourseEnrollment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Assignment" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"opensAt" TIMESTAMP(3),
|
|
"dueAt" TIMESTAMP(3),
|
|
"published" BOOLEAN NOT NULL DEFAULT false,
|
|
"courseId" TEXT NOT NULL,
|
|
"createdById" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Assignment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AssignmentProblem" (
|
|
"assignmentId" TEXT NOT NULL,
|
|
"problemId" TEXT NOT NULL,
|
|
"maxPoints" INTEGER NOT NULL DEFAULT 100,
|
|
"order" INTEGER,
|
|
|
|
CONSTRAINT "AssignmentProblem_pkey" PRIMARY KEY ("assignmentId","problemId")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Course_teacherId_idx" ON "Course"("teacherId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CourseEnrollment_courseId_idx" ON "CourseEnrollment"("courseId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CourseEnrollment_userId_idx" ON "CourseEnrollment"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "CourseEnrollment_courseId_userId_key" ON "CourseEnrollment"("courseId", "userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Assignment_courseId_idx" ON "Assignment"("courseId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Assignment_createdById_idx" ON "Assignment"("createdById");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AssignmentProblem_assignmentId_idx" ON "AssignmentProblem"("assignmentId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AssignmentProblem_problemId_idx" ON "AssignmentProblem"("problemId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Submission_assignmentId_userId_problemId_idx" ON "Submission"("assignmentId", "userId", "problemId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Submission_assignmentId_problemId_status_idx" ON "Submission"("assignmentId", "problemId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Submission_userId_problemId_idx" ON "Submission"("userId", "problemId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Submission_createdAt_idx" ON "Submission"("createdAt");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Submission" ADD CONSTRAINT "Submission_assignmentId_fkey" FOREIGN KEY ("assignmentId") REFERENCES "Assignment"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Course" ADD CONSTRAINT "Course_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CourseEnrollment" ADD CONSTRAINT "CourseEnrollment_courseId_fkey" FOREIGN KEY ("courseId") REFERENCES "Course"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CourseEnrollment" ADD CONSTRAINT "CourseEnrollment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_courseId_fkey" FOREIGN KEY ("courseId") REFERENCES "Course"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "AssignmentProblem" ADD CONSTRAINT "AssignmentProblem_assignmentId_fkey" FOREIGN KEY ("assignmentId") REFERENCES "Assignment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "AssignmentProblem" ADD CONSTRAINT "AssignmentProblem_problemId_fkey" FOREIGN KEY ("problemId") REFERENCES "Problem"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|