Skip to content

Commit e807796

Browse files
Adding init migration
1 parent f68f676 commit e807796

3 files changed

Lines changed: 248 additions & 1 deletion

File tree

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,4 @@ networks:
2727

2828
configs:
2929
firebase_service_account:
30-
file: ./firebase-service.account.json
30+
file: ./firebase-service-account.json
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
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;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Please do not edit this file manually
2+
# It should be added in your version-control system (e.g., Git)
3+
provider = "postgresql"

0 commit comments

Comments
 (0)