|
| 1 | +-- CreateEnum |
| 2 | +CREATE TYPE "CampusArea" AS ENUM ('EAST', 'WEST', 'NORTH', 'CENTRAL', 'COLLEGETOWN', 'SOUTH', 'NONE'); |
| 3 | + |
| 4 | +-- CreateEnum |
| 5 | +CREATE TYPE "PaymentMethod" AS ENUM ('MEAL_SWIPE', 'CASH', 'CARD', 'BRB', 'FREE'); |
| 6 | + |
| 7 | +-- CreateEnum |
| 8 | +CREATE TYPE "EateryType" AS ENUM ('DINING_ROOM', 'CAFE', 'COFFEE_SHOP', 'FOOD_COURT', 'CONVENIENCE_STORE', 'CART', 'GENERAL'); |
| 9 | + |
| 10 | +-- CreateEnum |
| 11 | +CREATE TYPE "EventType" AS ENUM ('AVAILABLE_ALL_DAY', 'BREAKFAST', 'BRUNCH', 'DINNER', 'EMPTY', 'LATE_LUNCH', 'LUNCH', 'OPEN', 'GENERAL', 'PANTS'); |
| 12 | + |
| 13 | +-- CreateTable |
| 14 | +CREATE TABLE "User" ( |
| 15 | + "id" SERIAL NOT NULL, |
| 16 | + "deviceUuid" TEXT NOT NULL, |
| 17 | + "refreshToken" TEXT NOT NULL, |
| 18 | + "favoritedItemNames" TEXT[], |
| 19 | + |
| 20 | + CONSTRAINT "User_pkey" PRIMARY KEY ("id") |
| 21 | +); |
| 22 | + |
| 23 | +-- CreateTable |
| 24 | +CREATE TABLE "FavoritedEatery" ( |
| 25 | + "userId" INTEGER NOT NULL, |
| 26 | + "eateryId" INTEGER NOT NULL, |
| 27 | + |
| 28 | + CONSTRAINT "FavoritedEatery_pkey" PRIMARY KEY ("userId","eateryId") |
| 29 | +); |
| 30 | + |
| 31 | +-- CreateTable |
| 32 | +CREATE TABLE "FCMToken" ( |
| 33 | + "id" SERIAL NOT NULL, |
| 34 | + "token" TEXT NOT NULL, |
| 35 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 36 | + "userId" INTEGER NOT NULL, |
| 37 | + |
| 38 | + CONSTRAINT "FCMToken_pkey" PRIMARY KEY ("id") |
| 39 | +); |
| 40 | + |
| 41 | +-- CreateTable |
| 42 | +CREATE TABLE "Report" ( |
| 43 | + "id" SERIAL NOT NULL, |
| 44 | + "netid" TEXT, |
| 45 | + "content" TEXT NOT NULL, |
| 46 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 47 | + "userId" INTEGER NOT NULL, |
| 48 | + "eateryId" INTEGER, |
| 49 | + |
| 50 | + CONSTRAINT "Report_pkey" PRIMARY KEY ("id") |
| 51 | +); |
| 52 | + |
| 53 | +-- CreateTable |
| 54 | +CREATE TABLE "Eatery" ( |
| 55 | + "id" SERIAL NOT NULL, |
| 56 | + "cornellId" INTEGER, |
| 57 | + "announcements" TEXT[], |
| 58 | + "name" TEXT NOT NULL, |
| 59 | + "shortName" TEXT NOT NULL, |
| 60 | + "about" TEXT NOT NULL, |
| 61 | + "shortAbout" TEXT NOT NULL, |
| 62 | + "cornellDining" BOOLEAN NOT NULL, |
| 63 | + "menuSummary" TEXT NOT NULL, |
| 64 | + "imageUrl" TEXT NOT NULL, |
| 65 | + "campusArea" "CampusArea" NOT NULL, |
| 66 | + "onlineOrderUrl" TEXT, |
| 67 | + "contactPhone" TEXT, |
| 68 | + "contactEmail" TEXT, |
| 69 | + "latitude" DOUBLE PRECISION NOT NULL, |
| 70 | + "longitude" DOUBLE PRECISION NOT NULL, |
| 71 | + "location" TEXT NOT NULL, |
| 72 | + "paymentMethods" "PaymentMethod"[], |
| 73 | + "eateryTypes" "EateryType"[], |
| 74 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 75 | + |
| 76 | + CONSTRAINT "Eatery_pkey" PRIMARY KEY ("id") |
| 77 | +); |
| 78 | + |
| 79 | +-- CreateTable |
| 80 | +CREATE TABLE "Event" ( |
| 81 | + "id" SERIAL NOT NULL, |
| 82 | + "type" "EventType" NOT NULL, |
| 83 | + "startTimestamp" TIMESTAMP(3) NOT NULL, |
| 84 | + "endTimestamp" TIMESTAMP(3) NOT NULL, |
| 85 | + "upvotes" INTEGER NOT NULL DEFAULT 0, |
| 86 | + "downvotes" INTEGER NOT NULL DEFAULT 0, |
| 87 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 88 | + "eateryId" INTEGER NOT NULL, |
| 89 | + |
| 90 | + CONSTRAINT "Event_pkey" PRIMARY KEY ("id") |
| 91 | +); |
| 92 | + |
| 93 | +-- CreateTable |
| 94 | +CREATE TABLE "UserEventVote" ( |
| 95 | + "upvoted" BOOLEAN NOT NULL, |
| 96 | + "userId" INTEGER NOT NULL, |
| 97 | + "eventId" INTEGER NOT NULL, |
| 98 | + |
| 99 | + CONSTRAINT "UserEventVote_pkey" PRIMARY KEY ("userId","eventId") |
| 100 | +); |
| 101 | + |
| 102 | +-- CreateTable |
| 103 | +CREATE TABLE "Category" ( |
| 104 | + "id" SERIAL NOT NULL, |
| 105 | + "name" TEXT NOT NULL, |
| 106 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 107 | + "eventId" INTEGER NOT NULL, |
| 108 | + |
| 109 | + CONSTRAINT "Category_pkey" PRIMARY KEY ("id") |
| 110 | +); |
| 111 | + |
| 112 | +-- CreateTable |
| 113 | +CREATE TABLE "Item" ( |
| 114 | + "id" SERIAL NOT NULL, |
| 115 | + "name" TEXT NOT NULL, |
| 116 | + "basePrice" DECIMAL(65,30), |
| 117 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 118 | + "categoryId" INTEGER NOT NULL, |
| 119 | + |
| 120 | + CONSTRAINT "Item_pkey" PRIMARY KEY ("id") |
| 121 | +); |
| 122 | + |
| 123 | +-- CreateTable |
| 124 | +CREATE TABLE "DietaryPreference" ( |
| 125 | + "name" TEXT NOT NULL, |
| 126 | + |
| 127 | + CONSTRAINT "DietaryPreference_pkey" PRIMARY KEY ("name") |
| 128 | +); |
| 129 | + |
| 130 | +-- CreateTable |
| 131 | +CREATE TABLE "Allergen" ( |
| 132 | + "name" TEXT NOT NULL, |
| 133 | + |
| 134 | + CONSTRAINT "Allergen_pkey" PRIMARY KEY ("name") |
| 135 | +); |
| 136 | + |
| 137 | +-- CreateTable |
| 138 | +CREATE TABLE "_DietaryPreferenceToItem" ( |
| 139 | + "A" TEXT NOT NULL, |
| 140 | + "B" INTEGER NOT NULL, |
| 141 | + |
| 142 | + CONSTRAINT "_DietaryPreferenceToItem_AB_pkey" PRIMARY KEY ("A","B") |
| 143 | +); |
| 144 | + |
| 145 | +-- CreateTable |
| 146 | +CREATE TABLE "_AllergenToItem" ( |
| 147 | + "A" TEXT NOT NULL, |
| 148 | + "B" INTEGER NOT NULL, |
| 149 | + |
| 150 | + CONSTRAINT "_AllergenToItem_AB_pkey" PRIMARY KEY ("A","B") |
| 151 | +); |
| 152 | + |
| 153 | +-- CreateIndex |
| 154 | +CREATE UNIQUE INDEX "User_deviceUuid_key" ON "User"("deviceUuid"); |
| 155 | + |
| 156 | +-- CreateIndex |
| 157 | +CREATE UNIQUE INDEX "User_refreshToken_key" ON "User"("refreshToken"); |
| 158 | + |
| 159 | +-- CreateIndex |
| 160 | +CREATE INDEX "User_favoritedItemNames_idx" ON "User" USING GIN ("favoritedItemNames"); |
| 161 | + |
| 162 | +-- CreateIndex |
| 163 | +CREATE UNIQUE INDEX "FCMToken_token_key" ON "FCMToken"("token"); |
| 164 | + |
| 165 | +-- CreateIndex |
| 166 | +CREATE INDEX "FCMToken_userId_idx" ON "FCMToken"("userId"); |
| 167 | + |
| 168 | +-- CreateIndex |
| 169 | +CREATE INDEX "Report_eateryId_idx" ON "Report"("eateryId"); |
| 170 | + |
| 171 | +-- CreateIndex |
| 172 | +CREATE INDEX "Report_userId_idx" ON "Report"("userId"); |
| 173 | + |
| 174 | +-- CreateIndex |
| 175 | +CREATE UNIQUE INDEX "Eatery_cornellId_key" ON "Eatery"("cornellId"); |
| 176 | + |
| 177 | +-- CreateIndex |
| 178 | +CREATE INDEX "Event_eateryId_startTimestamp_endTimestamp_idx" ON "Event"("eateryId", "startTimestamp", "endTimestamp"); |
| 179 | + |
| 180 | +-- CreateIndex |
| 181 | +CREATE INDEX "UserEventVote_eventId_idx" ON "UserEventVote"("eventId"); |
| 182 | + |
| 183 | +-- CreateIndex |
| 184 | +CREATE INDEX "Category_eventId_idx" ON "Category"("eventId"); |
| 185 | + |
| 186 | +-- CreateIndex |
| 187 | +CREATE INDEX "Item_categoryId_idx" ON "Item"("categoryId"); |
| 188 | + |
| 189 | +-- CreateIndex |
| 190 | +CREATE INDEX "Item_name_idx" ON "Item"("name"); |
| 191 | + |
| 192 | +-- CreateIndex |
| 193 | +CREATE UNIQUE INDEX "DietaryPreference_name_key" ON "DietaryPreference"("name"); |
| 194 | + |
| 195 | +-- CreateIndex |
| 196 | +CREATE UNIQUE INDEX "Allergen_name_key" ON "Allergen"("name"); |
| 197 | + |
| 198 | +-- CreateIndex |
| 199 | +CREATE INDEX "_DietaryPreferenceToItem_B_index" ON "_DietaryPreferenceToItem"("B"); |
| 200 | + |
| 201 | +-- CreateIndex |
| 202 | +CREATE INDEX "_AllergenToItem_B_index" ON "_AllergenToItem"("B"); |
| 203 | + |
| 204 | +-- AddForeignKey |
| 205 | +ALTER TABLE "FavoritedEatery" ADD CONSTRAINT "FavoritedEatery_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 206 | + |
| 207 | +-- AddForeignKey |
| 208 | +ALTER TABLE "FavoritedEatery" ADD CONSTRAINT "FavoritedEatery_eateryId_fkey" FOREIGN KEY ("eateryId") REFERENCES "Eatery"("id") ON DELETE RESTRICT ON UPDATE CASCADE; |
| 209 | + |
| 210 | +-- AddForeignKey |
| 211 | +ALTER TABLE "FCMToken" ADD CONSTRAINT "FCMToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 212 | + |
| 213 | +-- AddForeignKey |
| 214 | +ALTER TABLE "Report" ADD CONSTRAINT "Report_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 215 | + |
| 216 | +-- AddForeignKey |
| 217 | +ALTER TABLE "Report" ADD CONSTRAINT "Report_eateryId_fkey" FOREIGN KEY ("eateryId") REFERENCES "Eatery"("id") ON DELETE SET NULL ON UPDATE CASCADE; |
| 218 | + |
| 219 | +-- AddForeignKey |
| 220 | +ALTER TABLE "Event" ADD CONSTRAINT "Event_eateryId_fkey" FOREIGN KEY ("eateryId") REFERENCES "Eatery"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 221 | + |
| 222 | +-- AddForeignKey |
| 223 | +ALTER TABLE "UserEventVote" ADD CONSTRAINT "UserEventVote_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 224 | + |
| 225 | +-- AddForeignKey |
| 226 | +ALTER TABLE "UserEventVote" ADD CONSTRAINT "UserEventVote_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 227 | + |
| 228 | +-- AddForeignKey |
| 229 | +ALTER TABLE "Category" ADD CONSTRAINT "Category_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 230 | + |
| 231 | +-- AddForeignKey |
| 232 | +ALTER TABLE "Item" ADD CONSTRAINT "Item_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "Category"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 233 | + |
| 234 | +-- AddForeignKey |
| 235 | +ALTER TABLE "_DietaryPreferenceToItem" ADD CONSTRAINT "_DietaryPreferenceToItem_A_fkey" FOREIGN KEY ("A") REFERENCES "DietaryPreference"("name") ON DELETE CASCADE ON UPDATE CASCADE; |
| 236 | + |
| 237 | +-- AddForeignKey |
| 238 | +ALTER TABLE "_DietaryPreferenceToItem" ADD CONSTRAINT "_DietaryPreferenceToItem_B_fkey" FOREIGN KEY ("B") REFERENCES "Item"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
| 239 | + |
| 240 | +-- AddForeignKey |
| 241 | +ALTER TABLE "_AllergenToItem" ADD CONSTRAINT "_AllergenToItem_A_fkey" FOREIGN KEY ("A") REFERENCES "Allergen"("name") ON DELETE CASCADE ON UPDATE CASCADE; |
| 242 | + |
| 243 | +-- AddForeignKey |
| 244 | +ALTER TABLE "_AllergenToItem" ADD CONSTRAINT "_AllergenToItem_B_fkey" FOREIGN KEY ("B") REFERENCES "Item"("id") ON DELETE CASCADE ON UPDATE CASCADE; |
0 commit comments