Skip to content

Commit 508902c

Browse files
committed
Update scripts in packages, generate initial drizzle migration
1 parent 5e3021e commit 508902c

File tree

6 files changed

+765
-6
lines changed

6 files changed

+765
-6
lines changed

api/drizzle/0000_third_nekra.sql

+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
CREATE TABLE IF NOT EXISTS "planner" (
2+
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "planner_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
3+
"user_id" integer NOT NULL,
4+
"name" text NOT NULL,
5+
"years" jsonb[] NOT NULL
6+
);
7+
--> statement-breakpoint
8+
CREATE TABLE IF NOT EXISTS "report" (
9+
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "report_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
10+
"review_id" integer NOT NULL,
11+
"reason" text NOT NULL,
12+
"created_at" timestamp DEFAULT now() NOT NULL
13+
);
14+
--> statement-breakpoint
15+
CREATE TABLE IF NOT EXISTS "review" (
16+
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "review_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
17+
"professor_id" text NOT NULL,
18+
"course_id" text NOT NULL,
19+
"user_id" integer NOT NULL,
20+
"anonymous" boolean NOT NULL,
21+
"content" text,
22+
"rating" integer NOT NULL,
23+
"difficulty" integer NOT NULL,
24+
"grade_received" text NOT NULL,
25+
"created_at" timestamp DEFAULT now() NOT NULL,
26+
"updated_at" timestamp DEFAULT now(),
27+
"for_credit" boolean NOT NULL,
28+
"quarter" text NOT NULL,
29+
"take_again" boolean NOT NULL,
30+
"textbook" boolean NOT NULL,
31+
"attendance" boolean NOT NULL,
32+
"tags" text[],
33+
"verified" boolean DEFAULT false NOT NULL,
34+
CONSTRAINT "unique_review" UNIQUE("user_id","professor_id","course_id"),
35+
CONSTRAINT "rating_check" CHECK ("review"."rating" >= 1 AND "review"."rating" <= 5),
36+
CONSTRAINT "difficulty_check" CHECK ("review"."difficulty" >= 1 AND "review"."difficulty" <= 5)
37+
);
38+
--> statement-breakpoint
39+
CREATE TABLE IF NOT EXISTS "saved_course" (
40+
"user_id" integer NOT NULL,
41+
"course_id" text NOT NULL,
42+
CONSTRAINT "saved_course_user_id_course_id_pk" PRIMARY KEY("user_id","course_id")
43+
);
44+
--> statement-breakpoint
45+
CREATE TABLE IF NOT EXISTS "session" (
46+
"sid" text PRIMARY KEY NOT NULL,
47+
"sess" jsonb NOT NULL,
48+
"expire" timestamp NOT NULL
49+
);
50+
--> statement-breakpoint
51+
CREATE TABLE IF NOT EXISTS "transferred_course" (
52+
"user_id" integer,
53+
"course_name" text,
54+
"units" real
55+
);
56+
--> statement-breakpoint
57+
CREATE TABLE IF NOT EXISTS "user" (
58+
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "user_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
59+
"google_id" text NOT NULL,
60+
"name" text NOT NULL,
61+
"email" text NOT NULL,
62+
"picture" text NOT NULL,
63+
"theme" text,
64+
"last_roadmap_edit_at" timestamp,
65+
CONSTRAINT "unique_google_id" UNIQUE("google_id")
66+
);
67+
--> statement-breakpoint
68+
CREATE TABLE IF NOT EXISTS "vote" (
69+
"review_id" integer NOT NULL,
70+
"user_id" integer NOT NULL,
71+
"vote" integer NOT NULL,
72+
CONSTRAINT "vote_review_id_user_id_pk" PRIMARY KEY("review_id","user_id"),
73+
CONSTRAINT "votes_vote_check" CHECK ("vote"."vote" = 1 OR "vote"."vote" = -1)
74+
);
75+
--> statement-breakpoint
76+
DO $$ BEGIN
77+
ALTER TABLE "planner" ADD CONSTRAINT "planner_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
78+
EXCEPTION
79+
WHEN duplicate_object THEN null;
80+
END $$;
81+
--> statement-breakpoint
82+
DO $$ BEGIN
83+
ALTER TABLE "report" ADD CONSTRAINT "report_review_id_review_id_fk" FOREIGN KEY ("review_id") REFERENCES "public"."review"("id") ON DELETE cascade ON UPDATE no action;
84+
EXCEPTION
85+
WHEN duplicate_object THEN null;
86+
END $$;
87+
--> statement-breakpoint
88+
DO $$ BEGIN
89+
ALTER TABLE "review" ADD CONSTRAINT "review_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
90+
EXCEPTION
91+
WHEN duplicate_object THEN null;
92+
END $$;
93+
--> statement-breakpoint
94+
DO $$ BEGIN
95+
ALTER TABLE "saved_course" ADD CONSTRAINT "saved_course_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
96+
EXCEPTION
97+
WHEN duplicate_object THEN null;
98+
END $$;
99+
--> statement-breakpoint
100+
DO $$ BEGIN
101+
ALTER TABLE "transferred_course" ADD CONSTRAINT "transferred_course_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
102+
EXCEPTION
103+
WHEN duplicate_object THEN null;
104+
END $$;
105+
--> statement-breakpoint
106+
DO $$ BEGIN
107+
ALTER TABLE "vote" ADD CONSTRAINT "vote_review_id_review_id_fk" FOREIGN KEY ("review_id") REFERENCES "public"."review"("id") ON DELETE cascade ON UPDATE no action;
108+
EXCEPTION
109+
WHEN duplicate_object THEN null;
110+
END $$;
111+
--> statement-breakpoint
112+
DO $$ BEGIN
113+
ALTER TABLE "vote" ADD CONSTRAINT "vote_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE no action ON UPDATE no action;
114+
EXCEPTION
115+
WHEN duplicate_object THEN null;
116+
END $$;
117+
--> statement-breakpoint
118+
CREATE INDEX IF NOT EXISTS "planners_user_id_idx" ON "planner" USING btree ("user_id");--> statement-breakpoint
119+
CREATE INDEX IF NOT EXISTS "reports_review_id_idx" ON "report" USING btree ("review_id");--> statement-breakpoint
120+
CREATE INDEX IF NOT EXISTS "reviews_professor_id_idx" ON "review" USING btree ("professor_id");--> statement-breakpoint
121+
CREATE INDEX IF NOT EXISTS "reviews_course_id_idx" ON "review" USING btree ("course_id");--> statement-breakpoint
122+
CREATE INDEX IF NOT EXISTS "transferred_courses_user_id_idx" ON "transferred_course" USING btree ("user_id");--> statement-breakpoint
123+
CREATE INDEX IF NOT EXISTS "votes_user_id_idx" ON "vote" USING btree ("user_id");

0 commit comments

Comments
 (0)