source: database/migrations/0000_fancy_mojo.sql@ 80f6cdb

main
Last change on this file since 80f6cdb was 9137793, checked in by Tome <gjorgievtome@…>, 7 months ago

Fix migration and db seeding

  • Property mode set to 100644
File size: 12.5 KB
Line 
1CREATE TABLE "build_component" (
2 "build_id" integer NOT NULL,
3 "component_id" integer NOT NULL,
4 CONSTRAINT "build_component_build_id_component_id_pk" PRIMARY KEY("build_id","component_id")
5);
6--> statement-breakpoint
7CREATE TABLE "build" (
8 "id" serial PRIMARY KEY NOT NULL,
9 "user_id" integer NOT NULL,
10 "name" text NOT NULL,
11 "created_at" date NOT NULL,
12 "description" text,
13 "total_price" numeric NOT NULL,
14 "is_approved" boolean NOT NULL
15);
16--> statement-breakpoint
17CREATE TABLE "favorite_build" (
18 "build_id" integer NOT NULL,
19 "user_id" integer NOT NULL,
20 CONSTRAINT "favorite_build_build_id_user_id_pk" PRIMARY KEY("build_id","user_id")
21);
22--> statement-breakpoint
23CREATE TABLE "rating_build" (
24 "build_id" integer NOT NULL,
25 "user_id" integer NOT NULL,
26 "value" numeric NOT NULL,
27 CONSTRAINT "rating_build_build_id_user_id_pk" PRIMARY KEY("build_id","user_id"),
28 CONSTRAINT "check_value" CHECK ("rating_build"."value" BETWEEN 1 AND 5)
29);
30--> statement-breakpoint
31CREATE TABLE "review" (
32 "id" serial PRIMARY KEY NOT NULL,
33 "build_id" integer NOT NULL,
34 "user_id" integer NOT NULL,
35 "content" text NOT NULL,
36 "created_at" date NOT NULL,
37 CONSTRAINT "review_build_id_user_id_unique" UNIQUE("build_id","user_id")
38);
39--> statement-breakpoint
40CREATE TABLE "cpu" (
41 "component_id" integer PRIMARY KEY NOT NULL,
42 "socket" text NOT NULL,
43 "cores" integer NOT NULL,
44 "threads" integer NOT NULL,
45 "base_clock" numeric NOT NULL,
46 "boost_clock" numeric,
47 "tdp" numeric NOT NULL
48);
49--> statement-breakpoint
50CREATE TABLE "gpu" (
51 "component_id" integer PRIMARY KEY NOT NULL,
52 "vram" numeric NOT NULL,
53 "tdp" numeric NOT NULL,
54 "base_clock" numeric,
55 "boost_clock" numeric,
56 "chipset" text NOT NULL,
57 "length" numeric NOT NULL
58);
59--> statement-breakpoint
60CREATE TABLE "cables" (
61 "component_id" integer PRIMARY KEY NOT NULL,
62 "length_cm" numeric NOT NULL,
63 "type" text NOT NULL
64);
65--> statement-breakpoint
66CREATE TABLE "case_mobo_form_factors" (
67 "case_id" integer NOT NULL,
68 "form_factor" text NOT NULL,
69 CONSTRAINT "case_mobo_form_factors_case_id_form_factor_pk" PRIMARY KEY("case_id","form_factor")
70);
71--> statement-breakpoint
72CREATE TABLE "case_ps_form_factors" (
73 "case_id" integer NOT NULL,
74 "form_factor" text NOT NULL,
75 CONSTRAINT "case_ps_form_factors_case_id_form_factor_pk" PRIMARY KEY("case_id","form_factor")
76);
77--> statement-breakpoint
78CREATE TABLE "case_storage_form_factors" (
79 "case_id" integer NOT NULL,
80 "form_factor" text NOT NULL,
81 "num_slots" integer NOT NULL,
82 CONSTRAINT "case_storage_form_factors_case_id_form_factor_pk" PRIMARY KEY("case_id","form_factor")
83);
84--> statement-breakpoint
85CREATE TABLE "components" (
86 "id" serial PRIMARY KEY NOT NULL,
87 "name" text NOT NULL,
88 "brand" text NOT NULL,
89 "price" numeric NOT NULL,
90 "img_url" text,
91 "type" text NOT NULL,
92 CONSTRAINT "check_type" CHECK ("components"."type" in
93 ('cpu', 'gpu', 'memory', 'storage', 'power_supply', 'motherboard', 'case', 'cooler', 'memory_card', 'optical_drive', 'sound_card', 'cables', 'network_adapter', 'network_card'))
94);
95--> statement-breakpoint
96CREATE TABLE "cooler_cpu_sockets" (
97 "cooler_id" integer NOT NULL,
98 "socket" text NOT NULL,
99 CONSTRAINT "cooler_cpu_sockets_cooler_id_socket_pk" PRIMARY KEY("cooler_id","socket")
100);
101--> statement-breakpoint
102CREATE TABLE "cooler" (
103 "component_id" integer PRIMARY KEY NOT NULL,
104 "type" text NOT NULL,
105 "height" numeric NOT NULL,
106 "max_tdp_supported" numeric NOT NULL
107);
108--> statement-breakpoint
109CREATE TABLE "memory_card" (
110 "component_id" integer PRIMARY KEY NOT NULL,
111 "num_slots" integer NOT NULL,
112 "interface" text NOT NULL
113);
114--> statement-breakpoint
115CREATE TABLE "memory" (
116 "component_id" integer PRIMARY KEY NOT NULL,
117 "type" text NOT NULL,
118 "speed" numeric NOT NULL,
119 "capacity" numeric NOT NULL,
120 "modules" integer NOT NULL
121);
122--> statement-breakpoint
123CREATE TABLE "motherboard" (
124 "component_id" integer PRIMARY KEY NOT NULL,
125 "socket" text NOT NULL,
126 "chipset" text NOT NULL,
127 "form_factor" text NOT NULL,
128 "ram_type" text NOT NULL,
129 "num_ram_slots" integer NOT NULL,
130 "max_ram_capacity" numeric NOT NULL,
131 "pci_express_slots" numeric NOT NULL
132);
133--> statement-breakpoint
134CREATE TABLE "network_adapter" (
135 "component_id" integer PRIMARY KEY NOT NULL,
136 "wifi_version" text NOT NULL,
137 "interface" text NOT NULL,
138 "num_antennas" integer NOT NULL
139);
140--> statement-breakpoint
141CREATE TABLE "network_card" (
142 "component_id" integer PRIMARY KEY NOT NULL,
143 "num_ports" integer NOT NULL,
144 "speed" numeric NOT NULL,
145 "interface" text NOT NULL
146);
147--> statement-breakpoint
148CREATE TABLE "optical_drive" (
149 "component_id" integer PRIMARY KEY NOT NULL,
150 "form_factor" text NOT NULL,
151 "type" text NOT NULL,
152 "interface" text NOT NULL,
153 "write_speed" numeric NOT NULL,
154 "read_speed" numeric NOT NULL
155);
156--> statement-breakpoint
157CREATE TABLE "pc_case" (
158 "component_id" integer PRIMARY KEY NOT NULL,
159 "cooler_max_height" numeric NOT NULL,
160 "gpu_max_length" numeric NOT NULL
161);
162--> statement-breakpoint
163CREATE TABLE "power_supply" (
164 "component_id" integer PRIMARY KEY NOT NULL,
165 "type" text NOT NULL,
166 "wattage" numeric NOT NULL,
167 "form_factor" text NOT NULL
168);
169--> statement-breakpoint
170CREATE TABLE "sound_card" (
171 "component_id" integer PRIMARY KEY NOT NULL,
172 "sample_rate" numeric NOT NULL,
173 "bit_depth" numeric NOT NULL,
174 "chipset" text NOT NULL,
175 "interface" text NOT NULL,
176 "channel" text NOT NULL
177);
178--> statement-breakpoint
179CREATE TABLE "storage" (
180 "component_id" integer PRIMARY KEY NOT NULL,
181 "type" text NOT NULL,
182 "capacity" numeric NOT NULL,
183 "form_factor" text NOT NULL
184);
185--> statement-breakpoint
186CREATE TABLE "admins" (
187 "user_id" integer PRIMARY KEY NOT NULL
188);
189--> statement-breakpoint
190CREATE TABLE "suggestions" (
191 "id" serial PRIMARY KEY NOT NULL,
192 "user_id" integer NOT NULL,
193 "admin_id" integer,
194 "link" text NOT NULL,
195 "admin_comment" text,
196 "description" text,
197 "status" text DEFAULT 'pending' NOT NULL,
198 "component_type" text NOT NULL,
199 CONSTRAINT "check_status" CHECK ("suggestions"."status" in ('pending', 'approved', 'rejected')),
200 CONSTRAINT "check_type" CHECK ("suggestions"."component_type" in
201 ('cpu', 'gpu', 'memory', 'storage', 'power_supply', 'motherboard', 'case', 'cooler', 'memory_card', 'optical_drive', 'sound_card', 'cables', 'network_adapter', 'network_card'))
202);
203--> statement-breakpoint
204CREATE TABLE "users" (
205 "id" serial PRIMARY KEY NOT NULL,
206 "username" text NOT NULL,
207 "password" text NOT NULL,
208 "email" text NOT NULL,
209 CONSTRAINT "users_username_unique" UNIQUE("username"),
210 CONSTRAINT "users_email_unique" UNIQUE("email")
211);
212--> statement-breakpoint
213ALTER TABLE "build_component" ADD CONSTRAINT "build_component_build_id_build_id_fk" FOREIGN KEY ("build_id") REFERENCES "public"."build"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
214ALTER TABLE "build_component" ADD CONSTRAINT "build_component_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
215ALTER TABLE "build" ADD CONSTRAINT "build_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
216ALTER TABLE "favorite_build" ADD CONSTRAINT "favorite_build_build_id_build_id_fk" FOREIGN KEY ("build_id") REFERENCES "public"."build"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
217ALTER TABLE "favorite_build" ADD CONSTRAINT "favorite_build_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
218ALTER TABLE "rating_build" ADD CONSTRAINT "rating_build_build_id_build_id_fk" FOREIGN KEY ("build_id") REFERENCES "public"."build"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
219ALTER TABLE "rating_build" ADD CONSTRAINT "rating_build_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
220ALTER TABLE "review" ADD CONSTRAINT "review_build_id_build_id_fk" FOREIGN KEY ("build_id") REFERENCES "public"."build"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
221ALTER TABLE "review" ADD CONSTRAINT "review_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
222ALTER TABLE "cpu" ADD CONSTRAINT "cpu_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
223ALTER TABLE "gpu" ADD CONSTRAINT "gpu_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
224ALTER TABLE "cables" ADD CONSTRAINT "cables_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
225ALTER TABLE "case_mobo_form_factors" ADD CONSTRAINT "case_mobo_form_factors_case_id_pc_case_component_id_fk" FOREIGN KEY ("case_id") REFERENCES "public"."pc_case"("component_id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
226ALTER TABLE "case_ps_form_factors" ADD CONSTRAINT "case_ps_form_factors_case_id_pc_case_component_id_fk" FOREIGN KEY ("case_id") REFERENCES "public"."pc_case"("component_id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
227ALTER TABLE "case_storage_form_factors" ADD CONSTRAINT "case_storage_form_factors_case_id_pc_case_component_id_fk" FOREIGN KEY ("case_id") REFERENCES "public"."pc_case"("component_id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
228ALTER TABLE "cooler_cpu_sockets" ADD CONSTRAINT "cooler_cpu_sockets_cooler_id_cooler_component_id_fk" FOREIGN KEY ("cooler_id") REFERENCES "public"."cooler"("component_id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
229ALTER TABLE "cooler" ADD CONSTRAINT "cooler_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
230ALTER TABLE "memory_card" ADD CONSTRAINT "memory_card_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
231ALTER TABLE "memory" ADD CONSTRAINT "memory_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
232ALTER TABLE "motherboard" ADD CONSTRAINT "motherboard_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
233ALTER TABLE "network_adapter" ADD CONSTRAINT "network_adapter_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
234ALTER TABLE "network_card" ADD CONSTRAINT "network_card_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
235ALTER TABLE "optical_drive" ADD CONSTRAINT "optical_drive_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
236ALTER TABLE "pc_case" ADD CONSTRAINT "pc_case_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
237ALTER TABLE "power_supply" ADD CONSTRAINT "power_supply_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
238ALTER TABLE "sound_card" ADD CONSTRAINT "sound_card_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
239ALTER TABLE "storage" ADD CONSTRAINT "storage_component_id_components_id_fk" FOREIGN KEY ("component_id") REFERENCES "public"."components"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
240ALTER TABLE "admins" ADD CONSTRAINT "admins_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
241ALTER TABLE "suggestions" ADD CONSTRAINT "suggestions_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE cascade;--> statement-breakpoint
242ALTER TABLE "suggestions" ADD CONSTRAINT "suggestions_admin_id_admins_user_id_fk" FOREIGN KEY ("admin_id") REFERENCES "public"."admins"("user_id") ON DELETE set null ON UPDATE cascade;
Note: See TracBrowser for help on using the repository browser.