Index: database/drizzle/schema/components.ts
===================================================================
--- database/drizzle/schema/components.ts	(revision ea09e98c1561d7948b3e6612bff5f2269a697451)
+++ database/drizzle/schema/components.ts	(revision 5c079f432415969a7d4412041342169cae7c70bf)
@@ -26,5 +26,5 @@
     baseClock: numeric("base_clock").notNull(),
     boostClock: numeric("boost_clock"),
-    tdp: numeric("tdp").notNull(),
+    tdp: numeric("tdp").notNull()
 });
 
@@ -38,5 +38,5 @@
     boostClock: numeric("boost_clock"),
     chipset: text("chipset").notNull(),
-    length: numeric("length").notNull(),
+    length: numeric("length").notNull()
 });
 
@@ -48,5 +48,5 @@
     speed: numeric("speed").notNull(),
     capacity: numeric("capacity").notNull(),
-    modules: integer("modules").notNull(),
+    modules: integer("modules").notNull()
 });
 
@@ -57,5 +57,5 @@
     type: text("type").notNull(),
     wattage: numeric("wattage").notNull(),
-    formFactor: text("form_factor").notNull(),
+    formFactor: text("form_factor").notNull()
 });
 
@@ -65,5 +65,5 @@
         .references(() => componentsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
     coolerMaxHeight: numeric("cooler_max_height").notNull(),
-    gpuMaxLength: numeric("gpu_max_length").notNull(),
+    gpuMaxLength: numeric("gpu_max_length").notNull()
 });
 
@@ -74,8 +74,8 @@
             .references(() => pcCasesTable.componentId, {onDelete: "cascade", onUpdate: "cascade" }),
         formFactor: text("form_factor").notNull(),
-        numSlots: integer("num_slots").notNull(),
-    },
-    (t) => ({
-        pk: primaryKey({ columns: [t.caseId, t.formFactor] }),
+        numSlots: integer("num_slots").notNull()
+    },
+    (t) => ({
+        pk: primaryKey({ columns: [t.caseId, t.formFactor] })
     }),
 );
@@ -85,8 +85,8 @@
             .notNull()
             .references(() => pcCasesTable.componentId, { onDelete: "cascade", onUpdate: "cascade"}),
-        formFactor: text("form_factor").notNull(),
-    },
-    (t) => ({
-        pk: primaryKey({ columns: [t.caseId, t.formFactor] }),
+        formFactor: text("form_factor").notNull()
+    },
+    (t) => ({
+        pk: primaryKey({ columns: [t.caseId, t.formFactor] })
     }),
 );
@@ -96,8 +96,8 @@
             .notNull()
             .references(() => pcCasesTable.componentId, { onDelete: "cascade", onUpdate: "cascade"}),
-        formFactor: text("form_factor").notNull(),
-    },
-    (t) => ({
-        pk: primaryKey({ columns: [t.caseId, t.formFactor] }),
+        formFactor: text("form_factor").notNull()
+    },
+    (t) => ({
+        pk: primaryKey({ columns: [t.caseId, t.formFactor] })
     }),
 );
@@ -109,5 +109,5 @@
     type: text("type").notNull(),
     height: numeric("height").notNull(),
-    maxTdpSupported: numeric("max_tdp_supported").notNull(),
+    maxTdpSupported: numeric("max_tdp_supported").notNull()
 });
 
@@ -117,8 +117,8 @@
             .notNull()
             .references(() => coolersTable.componentId, { onDelete: "cascade", onUpdate: "cascade" }),
-        socket: text("socket").notNull(),
-    },
-    (t) => ({
-        pk: primaryKey({ columns: [t.coolerId, t.socket] }),
+        socket: text("socket").notNull()
+    },
+    (t) => ({
+        pk: primaryKey({ columns: [t.coolerId, t.socket] })
     })
 );
@@ -135,4 +135,5 @@
     numRamSlots: integer("num_ram_slots").notNull(),
     maxRamCapacity: numeric("max_ram_capacity").notNull(),
+    pciExpressSlots: numeric("pci_express_slots").notNull()
 });
 
@@ -143,5 +144,5 @@
     type: text("type").notNull(),
     capacity: numeric("capacity").notNull(),
-    formFactor: text("form_factor").notNull(),
+    formFactor: text("form_factor").notNull()
 });
 
@@ -152,5 +153,5 @@
         .references(() => componentsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
     numSlots: integer("num_slots").notNull(),
-    interface: text("interface").notNull(),
+    interface: text("interface").notNull()
 });
 
@@ -163,5 +164,5 @@
     interface: text("interface").notNull(),
     writeSpeed: numeric("write_speed").notNull(),
-    readSpeed: numeric("read_speed").notNull(),
+    readSpeed: numeric("read_speed").notNull()
 });
 
@@ -174,5 +175,5 @@
     chipset: text("chipset").notNull(),
     interface: text("interface").notNull(),
-    channel: text("channel").notNull(),
+    channel: text("channel").notNull()
 });
 
@@ -182,5 +183,5 @@
         .references(() => componentsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
     lengthCm: numeric("length_cm").notNull(),
-    type: text("type").notNull(),
+    type: text("type").notNull()
 });
 
@@ -191,5 +192,5 @@
     wifiVersion: text("wifi_version").notNull(),
     interface: text("interface").notNull(),
-    numAntennas: integer("num_antennas").notNull(),
+    numAntennas: integer("num_antennas").notNull()
 });
 
@@ -200,5 +201,5 @@
     numPorts: integer("num_ports").notNull(),
     speed: numeric("speed").notNull(),
-    interface: text("interface").notNull(),
+    interface: text("interface").notNull()
 });
 
