|
| 1 | +-- CreateEnum |
| 2 | +CREATE TYPE "SemesterType" AS ENUM ('f', 's', 'u'); |
| 3 | + |
| 4 | +-- CreateEnum |
| 5 | +CREATE TYPE "TemplateDataType" AS ENUM ('CORE', 'OPTIONAL'); |
| 6 | + |
| 7 | +-- CreateTable |
| 8 | +CREATE TABLE "TemplateData" ( |
| 9 | + "id" UUID NOT NULL, |
| 10 | + "semester" INTEGER NOT NULL, |
| 11 | + "templateId" UUID NOT NULL, |
| 12 | + |
| 13 | + CONSTRAINT "TemplateData_pkey" PRIMARY KEY ("id") |
| 14 | +); |
| 15 | + |
| 16 | +-- CreateTable |
| 17 | +CREATE TABLE "TemplateItem" ( |
| 18 | + "id" UUID NOT NULL, |
| 19 | + "name" TEXT NOT NULL, |
| 20 | + "type" "TemplateDataType" NOT NULL DEFAULT 'CORE', |
| 21 | + "templateDataId" UUID NOT NULL, |
| 22 | + |
| 23 | + CONSTRAINT "TemplateItem_pkey" PRIMARY KEY ("id") |
| 24 | +); |
| 25 | + |
| 26 | +-- CreateTable |
| 27 | +CREATE TABLE "Template" ( |
| 28 | + "id" UUID NOT NULL, |
| 29 | + "name" TEXT, |
| 30 | + |
| 31 | + CONSTRAINT "Template_pkey" PRIMARY KEY ("id") |
| 32 | +); |
| 33 | + |
| 34 | +-- CreateTable |
| 35 | +CREATE TABLE "Profile" ( |
| 36 | + "id" UUID NOT NULL, |
| 37 | + "name" TEXT NOT NULL, |
| 38 | + "startYear" INTEGER NOT NULL, |
| 39 | + "startSemester" "SemesterType" NOT NULL, |
| 40 | + "endYear" INTEGER NOT NULL, |
| 41 | + "endSemester" "SemesterType" NOT NULL, |
| 42 | + "userId" UUID NOT NULL, |
| 43 | + |
| 44 | + CONSTRAINT "Profile_pkey" PRIMARY KEY ("id") |
| 45 | +); |
| 46 | + |
| 47 | +-- CreateTable |
| 48 | +CREATE TABLE "Plan" ( |
| 49 | + "id" UUID NOT NULL, |
| 50 | + "name" TEXT NOT NULL, |
| 51 | + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 52 | + "updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 53 | + "transferCredits" TEXT[], |
| 54 | + "userId" UUID NOT NULL, |
| 55 | + "startYear" INTEGER NOT NULL, |
| 56 | + "startSemester" "SemesterType" NOT NULL, |
| 57 | + "endYear" INTEGER NOT NULL, |
| 58 | + "endSemester" "SemesterType" NOT NULL, |
| 59 | + |
| 60 | + CONSTRAINT "Plan_pkey" PRIMARY KEY ("id") |
| 61 | +); |
| 62 | + |
| 63 | +-- CreateTable |
| 64 | +CREATE TABLE "DegreeRequirements" ( |
| 65 | + "id" UUID NOT NULL, |
| 66 | + "major" TEXT NOT NULL, |
| 67 | + "bypasses" TEXT[], |
| 68 | + "planId" UUID NOT NULL, |
| 69 | + |
| 70 | + CONSTRAINT "DegreeRequirements_pkey" PRIMARY KEY ("id") |
| 71 | +); |
| 72 | + |
| 73 | +-- CreateTable |
| 74 | +CREATE TABLE "Bypass" ( |
| 75 | + "id" UUID NOT NULL, |
| 76 | + "courseCode" TEXT NOT NULL, |
| 77 | + "requirement" TEXT NOT NULL, |
| 78 | + "hours" INTEGER NOT NULL, |
| 79 | + |
| 80 | + CONSTRAINT "Bypass_pkey" PRIMARY KEY ("id") |
| 81 | +); |
| 82 | + |
| 83 | +-- CreateTable |
| 84 | +CREATE TABLE "Course" ( |
| 85 | + "id" UUID NOT NULL, |
| 86 | + "code" TEXT NOT NULL, |
| 87 | + "color" TEXT NOT NULL DEFAULT '', |
| 88 | + "semesterId" UUID NOT NULL, |
| 89 | + "locked" BOOLEAN NOT NULL DEFAULT false, |
| 90 | + "prereqOverriden" BOOLEAN NOT NULL DEFAULT false, |
| 91 | + |
| 92 | + CONSTRAINT "Course_pkey" PRIMARY KEY ("id") |
| 93 | +); |
| 94 | + |
| 95 | +-- CreateTable |
| 96 | +CREATE TABLE "Semester" ( |
| 97 | + "id" UUID NOT NULL, |
| 98 | + "year" INTEGER NOT NULL, |
| 99 | + "semester" "SemesterType" NOT NULL, |
| 100 | + "planId" UUID NOT NULL, |
| 101 | + "color" TEXT NOT NULL DEFAULT '', |
| 102 | + "locked" BOOLEAN NOT NULL DEFAULT false, |
| 103 | + |
| 104 | + CONSTRAINT "Semester_pkey" PRIMARY KEY ("id") |
| 105 | +); |
| 106 | + |
| 107 | +-- CreateTable |
| 108 | +CREATE TABLE "Credit" ( |
| 109 | + "id" UUID NOT NULL, |
| 110 | + "courseCode" TEXT NOT NULL, |
| 111 | + "year" INTEGER NOT NULL, |
| 112 | + "semester" "SemesterType" NOT NULL, |
| 113 | + "transfer" BOOLEAN NOT NULL, |
| 114 | + "userId" UUID NOT NULL, |
| 115 | + |
| 116 | + CONSTRAINT "Credit_pkey" PRIMARY KEY ("id") |
| 117 | +); |
| 118 | + |
| 119 | +-- CreateTable |
| 120 | +CREATE TABLE "AcademicDetails" ( |
| 121 | + "id" SERIAL NOT NULL, |
| 122 | + |
| 123 | + CONSTRAINT "AcademicDetails_pkey" PRIMARY KEY ("id") |
| 124 | +); |
| 125 | + |
| 126 | +-- CreateTable |
| 127 | +CREATE TABLE "Account" ( |
| 128 | + "id" UUID NOT NULL, |
| 129 | + "type" TEXT NOT NULL, |
| 130 | + "provider" TEXT NOT NULL, |
| 131 | + "providerAccountId" TEXT NOT NULL, |
| 132 | + "refresh_token" TEXT, |
| 133 | + "access_token" TEXT, |
| 134 | + "expires_at" INTEGER, |
| 135 | + "token_type" TEXT, |
| 136 | + "scope" TEXT, |
| 137 | + "id_token" TEXT, |
| 138 | + "session_state" TEXT, |
| 139 | + "userId" UUID NOT NULL, |
| 140 | + |
| 141 | + CONSTRAINT "Account_pkey" PRIMARY KEY ("id") |
| 142 | +); |
| 143 | + |
| 144 | +-- CreateTable |
| 145 | +CREATE TABLE "Session" ( |
| 146 | + "id" UUID NOT NULL, |
| 147 | + "sessionToken" TEXT NOT NULL, |
| 148 | + "expires" TIMESTAMP(3) NOT NULL, |
| 149 | + "userId" UUID NOT NULL, |
| 150 | + |
| 151 | + CONSTRAINT "Session_pkey" PRIMARY KEY ("id") |
| 152 | +); |
| 153 | + |
| 154 | +-- CreateTable |
| 155 | +CREATE TABLE "User" ( |
| 156 | + "id" UUID NOT NULL, |
| 157 | + "email" TEXT, |
| 158 | + "emailVerified" TIMESTAMP(3), |
| 159 | + "onboardingComplete" BOOLEAN NOT NULL DEFAULT false, |
| 160 | + "seenHomeOnboardingModal" BOOLEAN NOT NULL DEFAULT false, |
| 161 | + "seenPlanOnboardingModal" BOOLEAN NOT NULL DEFAULT false, |
| 162 | + |
| 163 | + CONSTRAINT "User_pkey" PRIMARY KEY ("id") |
| 164 | +); |
| 165 | + |
| 166 | +-- CreateTable |
| 167 | +CREATE TABLE "VerificationToken" ( |
| 168 | + "id" SERIAL NOT NULL, |
| 169 | + "identifier" TEXT NOT NULL, |
| 170 | + "token" TEXT NOT NULL, |
| 171 | + "expires" TIMESTAMP(3) NOT NULL, |
| 172 | + |
| 173 | + CONSTRAINT "VerificationToken_pkey" PRIMARY KEY ("id") |
| 174 | +); |
| 175 | + |
| 176 | +-- CreateIndex |
| 177 | +CREATE UNIQUE INDEX "Profile_userId_key" ON "Profile"("userId"); |
| 178 | + |
| 179 | +-- CreateIndex |
| 180 | +CREATE UNIQUE INDEX "DegreeRequirements_planId_key" ON "DegreeRequirements"("planId"); |
| 181 | + |
| 182 | +-- CreateIndex |
| 183 | +CREATE UNIQUE INDEX "Course_semesterId_code_key" ON "Course"("semesterId", "code"); |
| 184 | + |
| 185 | +-- CreateIndex |
| 186 | +CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId"); |
| 187 | + |
| 188 | +-- CreateIndex |
| 189 | +CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken"); |
| 190 | + |
| 191 | +-- CreateIndex |
| 192 | +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); |
| 193 | + |
| 194 | +-- CreateIndex |
| 195 | +CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token"); |
| 196 | + |
| 197 | +-- CreateIndex |
| 198 | +CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token"); |
| 199 | + |
| 200 | +-- AddForeignKey |
| 201 | +ALTER TABLE "TemplateData" ADD CONSTRAINT "TemplateData_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "Template"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 202 | + |
| 203 | +-- AddForeignKey |
| 204 | +ALTER TABLE "TemplateItem" ADD CONSTRAINT "TemplateItem_templateDataId_fkey" FOREIGN KEY ("templateDataId") REFERENCES "TemplateData"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 205 | + |
| 206 | +-- AddForeignKey |
| 207 | +ALTER TABLE "Profile" ADD CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 208 | + |
| 209 | +-- AddForeignKey |
| 210 | +ALTER TABLE "Plan" ADD CONSTRAINT "Plan_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 211 | + |
| 212 | +-- AddForeignKey |
| 213 | +ALTER TABLE "DegreeRequirements" ADD CONSTRAINT "DegreeRequirements_planId_fkey" FOREIGN KEY ("planId") REFERENCES "Plan"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 214 | + |
| 215 | +-- AddForeignKey |
| 216 | +ALTER TABLE "Course" ADD CONSTRAINT "Course_semesterId_fkey" FOREIGN KEY ("semesterId") REFERENCES "Semester"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 217 | + |
| 218 | +-- AddForeignKey |
| 219 | +ALTER TABLE "Semester" ADD CONSTRAINT "Semester_planId_fkey" FOREIGN KEY ("planId") REFERENCES "Plan"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 220 | + |
| 221 | +-- AddForeignKey |
| 222 | +ALTER TABLE "Credit" ADD CONSTRAINT "Credit_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 223 | + |
| 224 | +-- AddForeignKey |
| 225 | +ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 226 | + |
| 227 | +-- AddForeignKey |
| 228 | +ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
0 commit comments