Index: database/drizzle/queries/builds.ts
===================================================================
--- database/drizzle/queries/builds.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
+++ database/drizzle/queries/builds.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
@@ -0,0 +1,279 @@
+import type { Database } from "../db";
+import {buildComponentsTable, buildsTable, favoriteBuildsTable, ratingBuildsTable, reviewsTable} from "../schema";
+import {eq, desc, and, sql, ilike} from "drizzle-orm";
+
+export async function getPendingBuilds(db: Database) {
+    const pendingBuildsList = await db
+        .select({
+            id: buildsTable.id,
+            user_id: buildsTable.userId,
+            name: buildsTable.name,
+            created_at: buildsTable.createdAt,
+            total_price: buildsTable.totalPrice
+        })
+        .from(buildsTable)
+        .where(
+            eq(buildsTable.isApproved, false)
+        );
+
+    return pendingBuildsList;
+}
+
+export async function getUserBuilds(db: Database, userId: number) {
+    const userBuildsList = await db
+        .select({
+            id: buildsTable.id,
+            user_id: buildsTable.userId,
+            name: buildsTable.name,
+            created_at: buildsTable.createdAt,
+            total_price: buildsTable.totalPrice
+        })
+        .from(buildsTable)
+        .where(
+            eq(buildsTable.userId, userId)
+        );
+
+    return userBuildsList;
+}
+
+export async function setBuildApprovalStatus(db: Database, buildId: number, isApproved: boolean){
+    const result = await db
+        .update(buildsTable)
+        .set({
+            isApproved: isApproved
+        })
+        .where(
+            eq(buildsTable.id, buildId)
+        );
+
+    return result.rowCount;
+}
+
+export async function getFavoriteBuilds(db: Database, userId: number) {
+    const favoriteBuildsList = await db
+        .select({
+            id: buildsTable.id,
+            user_id: buildsTable.userId,
+            name: buildsTable.name,
+            created_at: buildsTable.createdAt,
+            total_price: buildsTable.totalPrice
+        })
+        .from(buildsTable)
+        .innerJoin(
+            favoriteBuildsTable,
+            eq(buildsTable.id, favoriteBuildsTable.buildId)
+        )
+        .where(
+            eq(favoriteBuildsTable.userId, userId)
+        );
+
+    return favoriteBuildsList;
+}
+
+export async function getApprovedBuilds(db: Database, limit?: number, q?: string) {
+    let queryConditions = [];
+
+    if (q) {
+        queryConditions.push(
+            ilike(buildsTable.name, `%${q}%`)
+        );
+    }
+
+    const approvedBuildsList = await db
+        .select({
+            id: buildsTable.id,
+            user_id: buildsTable.userId,
+            name: buildsTable.name,
+            created_at: buildsTable.createdAt,
+            total_price: buildsTable.totalPrice
+        })
+        .from(buildsTable)
+        .where(
+            and (
+                eq(buildsTable.isApproved, true),
+                ...queryConditions
+            )
+        )
+        .orderBy(
+            desc(buildsTable.totalPrice)
+        )
+        .limit(limit || 100); // 100 placeholder
+
+    return approvedBuildsList;
+}
+
+export async function getHighestRankedBuilds(db: Database, limit? : number) {
+    const highestRankedBuildsList = await db
+        .select({
+            id: buildsTable.id,
+            user_id: buildsTable.userId,
+            name: buildsTable.name,
+            created_at: buildsTable.createdAt,
+            total_price: buildsTable.totalPrice
+        })
+        .from(buildsTable)
+        .innerJoin(
+            ratingBuildsTable,
+            eq(buildsTable.id, ratingBuildsTable.buildId)
+        )
+        .where(
+            eq(buildsTable.isApproved, true)
+        )
+        .groupBy(
+            buildsTable.id
+        )
+        .orderBy(
+            desc(sql<number>`AVG(${ratingBuildsTable.value}::float)`)
+        )
+        .limit(limit || 100); // 100 placeholder
+
+    return highestRankedBuildsList;
+}
+
+export async function getBuildDetails(db: Database, buildId: number) {
+    const buildDetails = await db
+        .select()
+        .from(buildsTable)
+        .where(
+            eq(buildsTable.id, buildId)
+        )
+        .limit(1);
+
+    return buildDetails[0] ?? null;
+}
+
+export async function toggleFavoriteBuild(db: Database, userId: number, buildId: number) {
+    const existing = await db
+        .select()
+        .from(favoriteBuildsTable)
+        .where(
+            and(
+                eq(favoriteBuildsTable.userId, userId),
+                eq(favoriteBuildsTable.buildId, buildId)
+            )
+        )
+        .limit(1);
+
+    if (existing.length) {
+        await db
+            .delete(favoriteBuildsTable)
+            .where(
+                and(
+                    eq(favoriteBuildsTable.userId, userId),
+                    eq(favoriteBuildsTable.buildId, buildId)
+                )
+            );
+
+        return { favorite: false };
+    }
+
+    await db
+        .insert(favoriteBuildsTable)
+        .values({
+            userId,
+            buildId,
+        });
+
+    return { favorite: true };
+}
+
+export async function setBuildRating(db: Database, userId: number, buildId: number, value: number) {
+    const result = await db
+        .insert(ratingBuildsTable)
+        .values({
+            userId,
+            buildId,
+            value: value.toString()
+        })
+        .onConflictDoUpdate({
+            target: [ratingBuildsTable.userId, ratingBuildsTable.buildId],
+            set: {
+                value: value.toString(),
+            },
+        });
+}
+
+export async function setBuildReview(db: Database, userId: number,  buildId: number, content: string) {
+    const existing = await db
+        .select()
+        .from(reviewsTable)
+        .where(
+            and(
+                eq(reviewsTable.userId, userId),
+                eq(reviewsTable.buildId, buildId)
+            )
+        )
+        .limit(1);
+
+    if (existing.length) {
+        const result = await db
+            .update(reviewsTable)
+            .set({
+                content: content,
+            })
+            .where(
+                and(
+                    eq(reviewsTable.userId, userId),
+                    eq(reviewsTable.buildId, buildId)
+                )
+            );
+
+        return;
+    }
+
+    const result = await db
+        .insert(reviewsTable)
+        .values({
+            userId,
+            buildId,
+            content,
+            createdAt: new Date().toISOString().split('T')[0]
+        });
+}
+
+export async function cloneBuild(db: Database, userId: number, buildId: number) {
+    const [buildToClone] = await db
+        .select()
+        .from(buildsTable)
+        .where(
+            eq(buildsTable.id, buildId)
+        )
+        .limit(1);
+
+    if (!buildToClone) return null;
+
+    const [newBuild] = await db
+        .insert(buildsTable)
+        .values({
+            userId: userId,
+            name: `${buildToClone.name} (copy)`,
+            createdAt: new Date().toISOString().split('T')[0],
+            description: buildToClone.description,
+            totalPrice: buildToClone.totalPrice,
+            isApproved: false
+        })
+        .returning({ id: buildsTable.id });
+
+    const components = await db
+        .select()
+        .from(buildComponentsTable)
+        .where(
+            eq(buildComponentsTable.buildId, buildId)
+        );
+
+    if(components.length) {
+        await db
+            .insert(buildComponentsTable)
+            .values(
+                components.map(component => ({
+                    buildId: newBuild.id,
+                    componentId: component.componentId
+                }))
+            );
+    }
+
+    return newBuild.id;
+}
+
+
+
Index: database/drizzle/queries/components.ts
===================================================================
--- database/drizzle/queries/components.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
+++ database/drizzle/queries/components.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
@@ -0,0 +1,14 @@
+import type { Database } from "../db";
+import { componentsTable, suggestionsTable } from "../schema";
+
+export async function getComponentSuggestions(db: Database) {
+
+}
+
+export async function setComponentSuggestionStatus(db: Database, suggestionId: number, status: string, adminComment: string) {
+
+}
+
+export async function getAllComponents(db: Database, componentType?: string, q?: string, page?: number, pageSize?: number) {
+
+}
Index: database/drizzle/queries/index.ts
===================================================================
--- database/drizzle/queries/index.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
+++ database/drizzle/queries/index.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
@@ -0,0 +1,3 @@
+export * from "./users";
+export * from "./builds";
+export * from "./components";
Index: database/drizzle/schema/builds.ts
===================================================================
--- database/drizzle/schema/builds.ts	(revision c30935a5f027dac0916111525d007c79078ea267)
+++ database/drizzle/schema/builds.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
@@ -3,5 +3,5 @@
 import { componentsTable } from "./components";
 
-export const buildTable = pgTable("build", {
+export const buildsTable = pgTable("build", {
     id: serial("id").primaryKey(),
     userId: integer("user_id")
@@ -15,8 +15,8 @@
 });
 
-export const buildComponentTable = pgTable("build_component", {
+export const buildComponentsTable = pgTable("build_component", {
         buildId: integer("build_id")
             .notNull()
-            .references(() => buildTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
+            .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
         componentId: integer("component_id")
             .notNull()
@@ -28,8 +28,8 @@
 );
 
-export const favoriteBuildTable = pgTable("favorite_build", {
+export const favoriteBuildsTable = pgTable("favorite_build", {
         buildId: integer("build_id")
             .notNull()
-            .references(() => buildTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
+            .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
         userId: integer("user_id")
             .notNull()
@@ -41,8 +41,8 @@
 );
 
-export const ratingBuildTable = pgTable("rating_build", {
+export const ratingBuildsTable = pgTable("rating_build", {
         buildId: integer("build_id")
             .notNull()
-            .references(() => buildTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
+            .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
         userId: integer("user_id")
             .notNull()
@@ -55,10 +55,10 @@
 );
 
-export const reviewTable = pgTable("review", {
+export const reviewsTable = pgTable("review", {
     id: serial("id").primaryKey(),
 
     buildId: integer("build_id")
         .notNull()
-        .references(() => buildTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
+        .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
     userId: integer("user_id")
         .notNull()
@@ -68,16 +68,16 @@
 });
 
-export type buildItem = typeof buildTable.$inferSelect;
-export type buildInsert = typeof buildTable.$inferInsert;
+export type buildItem = typeof buildsTable.$inferSelect;
+export type buildInsert = typeof buildsTable.$inferInsert;
 
-export type buildComponentItem = typeof buildComponentTable.$inferSelect;
-export type buildComponentInsert = typeof buildComponentTable.$inferInsert;
+export type buildComponentItem = typeof buildComponentsTable.$inferSelect;
+export type buildComponentInsert = typeof buildComponentsTable.$inferInsert;
 
-export type favoriteBuildItem = typeof favoriteBuildTable.$inferSelect;
-export type favoriteBuildInsert = typeof favoriteBuildTable.$inferInsert;
+export type favoriteBuildItem = typeof favoriteBuildsTable.$inferSelect;
+export type favoriteBuildInsert = typeof favoriteBuildsTable.$inferInsert;
 
-export type ratingBuildItem = typeof ratingBuildTable.$inferSelect;
-export type ratingBuildInsert = typeof ratingBuildTable.$inferInsert;
+export type ratingBuildItem = typeof ratingBuildsTable.$inferSelect;
+export type ratingBuildInsert = typeof ratingBuildsTable.$inferInsert;
 
-export type reviewItem = typeof reviewTable.$inferSelect;
-export type reviewInsert = typeof reviewTable.$inferInsert;
+export type reviewItem = typeof reviewsTable.$inferSelect;
+export type reviewInsert = typeof reviewsTable.$inferInsert;
Index: database/drizzle/schema/components.ts
===================================================================
--- database/drizzle/schema/components.ts	(revision c30935a5f027dac0916111525d007c79078ea267)
+++ database/drizzle/schema/components.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
@@ -53,5 +53,5 @@
 });
 
-export const pcCaseTable = pgTable("pc_case", {
+export const pcCasesTable = pgTable("pc_case", {
     componentId: integer("component_id")
         .primaryKey()
@@ -65,6 +65,7 @@
         caseId: integer("case_id")
             .notNull()
-            .references(() => pcCaseTable.componentId, {onDelete: "cascade", onUpdate: "cascade" }),
+            .references(() => pcCasesTable.componentId, {onDelete: "cascade", onUpdate: "cascade" }),
         formFactor: text("form_factor").notNull(),
+        num_slots: integer("num_slots").notNull(),
     },
     (t) => ({
@@ -76,5 +77,5 @@
         caseId: integer("case_id")
             .notNull()
-            .references(() => pcCaseTable.componentId, { onDelete: "cascade", onUpdate: "cascade"}),
+            .references(() => pcCasesTable.componentId, { onDelete: "cascade", onUpdate: "cascade"}),
         formFactor: text("form_factor").notNull(),
     },
@@ -87,5 +88,5 @@
         caseId: integer("case_id")
             .notNull()
-            .references(() => pcCaseTable.componentId, { onDelete: "cascade", onUpdate: "cascade"}),
+            .references(() => pcCasesTable.componentId, { onDelete: "cascade", onUpdate: "cascade"}),
         formFactor: text("form_factor").notNull(),
     },
@@ -95,5 +96,5 @@
 );
 
-export const coolerTable = pgTable("cooler", {
+export const coolersTable = pgTable("cooler", {
     componentId: integer("component_id")
         .primaryKey()
@@ -108,5 +109,5 @@
         cooler_id: integer("cooler_id")
             .notNull()
-            .references(() => coolerTable.componentId, { onDelete: "cascade", onUpdate: "cascade" }),
+            .references(() => coolersTable.componentId, { onDelete: "cascade", onUpdate: "cascade" }),
         socket: text("socket").notNull(),
     },
@@ -116,5 +117,5 @@
 );
 
-export const motherboardTable = pgTable("motherboard", {
+export const motherboardsTable = pgTable("motherboard", {
     componentId: integer("component_id")
         .primaryKey()
@@ -139,5 +140,5 @@
 
 // Other Components
-export const memoryCardTable = pgTable("memory_card", {
+export const memoryCardsTable = pgTable("memory_card", {
     componentId: integer("component_id")
         .primaryKey()
@@ -147,5 +148,5 @@
 });
 
-export const opticalDriveTable = pgTable("optical_drive", {
+export const opticalDrivesTable = pgTable("optical_drive", {
     componentId: integer("component_id")
         .primaryKey()
@@ -158,5 +159,5 @@
 });
 
-export const soundCardTable = pgTable("sound_card", {
+export const soundCardsTable = pgTable("sound_card", {
     componentId: integer("component_id")
         .primaryKey()
@@ -166,17 +167,6 @@
     chipset: text("chipset").notNull(),
     interface: text("interface").notNull(),
-});
-
-// SoundCard multi-values
-export const soundCardChannelsTable = pgTable("sound_card_channels", {
-        soundCardId: integer("sound_card_id")
-            .notNull()
-            .references(() => soundCardTable.componentId, { onDelete: "cascade", onUpdate: "cascade" }),
-        channel: text("channel").notNull(),
-    },
-    (t) => ({
-        pk: primaryKey({ columns: [t.soundCardId, t.channel] }),
-    })
-);
+    channel: text("channel").notNull(),
+});
 
 export const cablesTable = pgTable("cables", {
@@ -188,5 +178,5 @@
 });
 
-export const networkAdapterTable = pgTable("network_adapter", {
+export const networkAdaptersTable = pgTable("network_adapter", {
     componentId: integer("component_id")
         .primaryKey()
@@ -197,5 +187,5 @@
 });
 
-export const networkCardTable = pgTable("network_card", {
+export const networkCardsTable = pgTable("network_card", {
     componentId: integer("component_id")
         .primaryKey()
@@ -221,6 +211,6 @@
 export type powerSupplyInsert = typeof powerSupplyTable.$inferInsert;
 
-export type caseItem = typeof pcCaseTable.$inferSelect;
-export type caseInsert = typeof pcCaseTable.$inferInsert;
+export type caseItem = typeof pcCasesTable.$inferSelect;
+export type caseInsert = typeof pcCasesTable.$inferInsert;
 
 export type caseStorageFormFactorsItem = typeof caseStorageFormFactorsTable.$inferSelect;
@@ -233,35 +223,32 @@
 export type caseMoboFormFactorsInsert = typeof caseMoboFormFactorsTable.$inferInsert;
 
-export type coolerItem = typeof coolerTable.$inferSelect;
-export type coolerInsert = typeof coolerTable.$inferInsert;
+export type coolerItem = typeof coolersTable.$inferSelect;
+export type coolerInsert = typeof coolersTable.$inferInsert;
 
 export type coolerCPUSocketsItem = typeof coolerCPUSocketsTable.$inferSelect;
 export type coolerCPUSocketsInsert = typeof coolerCPUSocketsTable.$inferInsert;
 
-export type motherboardItem = typeof motherboardTable.$inferSelect;
-export type motherboardInsert = typeof motherboardTable.$inferInsert;
+export type motherboardItem = typeof motherboardsTable.$inferSelect;
+export type motherboardInsert = typeof motherboardsTable.$inferInsert;
 
 export type storageItem = typeof storageTable.$inferSelect;
 export type storageInsert = typeof storageTable.$inferInsert
 
-export type memoryCardItem = typeof memoryCardTable.$inferSelect;
-export type memoryCardInsert = typeof memoryCardTable.$inferInsert;
-
-export type opticalDriveItem = typeof opticalDriveTable.$inferSelect;
-export type opticalDriveInsert = typeof opticalDriveTable.$inferInsert;
-
-export type soundCardItem = typeof soundCardTable.$inferSelect;
-export type soundCardInsert = typeof soundCardTable.$inferInsert;
-
-export type soundCardChannelsItem = typeof soundCardChannelsTable.$inferSelect;
-export type soundCardChannelsInsert = typeof soundCardChannelsTable.$inferInsert;
+export type memoryCardItem = typeof memoryCardsTable.$inferSelect;
+export type memoryCardInsert = typeof memoryCardsTable.$inferInsert;
+
+export type opticalDriveItem = typeof opticalDrivesTable.$inferSelect;
+export type opticalDriveInsert = typeof opticalDrivesTable.$inferInsert;
+
+export type soundCardItem = typeof soundCardsTable.$inferSelect;
+export type soundCardInsert = typeof soundCardsTable.$inferInsert;
 
 export type cablesItem = typeof cablesTable.$inferSelect;
 export type cablesInsert = typeof cablesTable.$inferInsert;
 
-export type networkAdapterItem = typeof networkAdapterTable.$inferSelect;
-export type networkAdapterInsert = typeof networkAdapterTable.$inferInsert;
-
-export type networkCardItem = typeof networkCardTable.$inferSelect;
-export type networkCardInsert = typeof networkCardTable.$inferInsert;
-
+export type networkAdapterItem = typeof networkAdaptersTable.$inferSelect;
+export type networkAdapterInsert = typeof networkAdaptersTable.$inferInsert;
+
+export type networkCardItem = typeof networkCardsTable.$inferSelect;
+export type networkCardInsert = typeof networkCardsTable.$inferInsert;
+
Index: database/drizzle/schema/relations.ts
===================================================================
--- database/drizzle/schema/relations.ts	(revision c30935a5f027dac0916111525d007c79078ea267)
+++ database/drizzle/schema/relations.ts	(revision 1ebac59c4e102e653ac1aa7c4322403d97397ecc)
@@ -7,28 +7,27 @@
     memoryTable,
     powerSupplyTable,
-    pcCaseTable,
+    pcCasesTable,
     caseStorageFormFactorsTable,
     casePsFormFactorsTable,
     caseMoboFormFactorsTable,
-    coolerTable,
+    coolersTable,
     coolerCPUSocketsTable,
-    motherboardTable,
+    motherboardsTable,
     storageTable,
-    memoryCardTable,
-    opticalDriveTable,
-    soundCardTable,
-    soundCardChannelsTable,
+    memoryCardsTable,
+    opticalDrivesTable,
+    soundCardsTable,
     cablesTable,
-    networkAdapterTable,
-    networkCardTable,
+    networkAdaptersTable,
+    networkCardsTable,
 
 } from "./components";
 
 import {
-    buildTable,
-    buildComponentTable,
-    favoriteBuildTable,
-    ratingBuildTable,
-    reviewTable
+    buildsTable,
+    buildComponentsTable,
+    favoriteBuildsTable,
+    ratingBuildsTable,
+    reviewsTable
 } from "./builds"
 
@@ -40,8 +39,8 @@
 
 export const usersRelations = relations(usersTable, ({ many, one }) => ({
-    builds: many(buildTable),
-    reviews: many(reviewTable),
-    favorites: many(favoriteBuildTable),
-    ratings: many(ratingBuildTable),
+    builds: many(buildsTable),
+    reviews: many(reviewsTable),
+    favorites: many(favoriteBuildsTable),
+    ratings: many(ratingBuildsTable),
     suggestions: many(suggestionsTable),
     adminProfile: one(adminsTable, {
@@ -70,61 +69,61 @@
 }));
 
-export const buildRelations = relations(buildTable, ({ one, many }) => ({
+export const buildRelations = relations(buildsTable, ({ one, many }) => ({
     owner: one(usersTable, {
-        fields: [buildTable.userId],
-        references: [usersTable.id],
-    }),
-    buildComponents: many(buildComponentTable),
-    favorites: many(favoriteBuildTable),
-    ratings: many(ratingBuildTable),
-    reviews: many(reviewTable),
-}));
-
-export const buildComponentRelations = relations(buildComponentTable, ({ one }) => ({
-    build: one(buildTable, {
-        fields: [buildComponentTable.buildId],
-        references: [buildTable.id],
-    }),
-    component: one(componentsTable, {
-        fields: [buildComponentTable.componentId],
-        references: [componentsTable.id],
-    }),
-}));
-
-export const favoriteBuildRelations = relations(favoriteBuildTable, ({ one }) => ({
+        fields: [buildsTable.userId],
+        references: [usersTable.id],
+    }),
+    buildComponents: many(buildComponentsTable),
+    favorites: many(favoriteBuildsTable),
+    ratings: many(ratingBuildsTable),
+    reviews: many(reviewsTable),
+}));
+
+export const buildComponentRelations = relations(buildComponentsTable, ({ one }) => ({
+    build: one(buildsTable, {
+        fields: [buildComponentsTable.buildId],
+        references: [buildsTable.id],
+    }),
+    component: one(componentsTable, {
+        fields: [buildComponentsTable.componentId],
+        references: [componentsTable.id],
+    }),
+}));
+
+export const favoriteBuildRelations = relations(favoriteBuildsTable, ({ one }) => ({
     user: one(usersTable, {
-        fields: [favoriteBuildTable.userId],
-        references: [usersTable.id],
-    }),
-    build: one(buildTable, {
-        fields: [favoriteBuildTable.buildId],
-        references: [buildTable.id],
-    }),
-}));
-
-export const ratingBuildRelations = relations(ratingBuildTable, ({ one }) => ({
+        fields: [favoriteBuildsTable.userId],
+        references: [usersTable.id],
+    }),
+    build: one(buildsTable, {
+        fields: [favoriteBuildsTable.buildId],
+        references: [buildsTable.id],
+    }),
+}));
+
+export const ratingBuildRelations = relations(ratingBuildsTable, ({ one }) => ({
     user: one(usersTable, {
-        fields: [ratingBuildTable.userId],
-        references: [usersTable.id],
-    }),
-    build: one(buildTable, {
-        fields: [ratingBuildTable.buildId],
-        references: [buildTable.id],
-    }),
-}));
-
-export const reviewRelations = relations(reviewTable, ({ one }) => ({
+        fields: [ratingBuildsTable.userId],
+        references: [usersTable.id],
+    }),
+    build: one(buildsTable, {
+        fields: [ratingBuildsTable.buildId],
+        references: [buildsTable.id],
+    }),
+}));
+
+export const reviewRelations = relations(reviewsTable, ({ one }) => ({
     author: one(usersTable, {
-        fields: [reviewTable.userId],
-        references: [usersTable.id],
-    }),
-    build: one(buildTable, {
-        fields: [reviewTable.buildId],
-        references: [buildTable.id],
+        fields: [reviewsTable.userId],
+        references: [usersTable.id],
+    }),
+    build: one(buildsTable, {
+        fields: [reviewsTable.buildId],
+        references: [buildsTable.id],
     }),
 }));
 
 export const componentsRelations = relations(componentsTable, ({ many, one }) => ({
-    buildComponents: many(buildComponentTable),
+    buildComponents: many(buildComponentsTable),
 
     cpu: one(CPUTable, {
@@ -144,15 +143,15 @@
         references: [powerSupplyTable.componentId]
     }),
-    pcCase: one(pcCaseTable, {
-        fields: [componentsTable.id],
-        references: [pcCaseTable.componentId]
-    }),
-    cooler: one(coolerTable, {
-        fields: [componentsTable.id],
-        references: [coolerTable.componentId]
-    }),
-    motherboard: one(motherboardTable, {
-        fields: [componentsTable.id],
-        references: [motherboardTable.componentId]
+    pcCase: one(pcCasesTable, {
+        fields: [componentsTable.id],
+        references: [pcCasesTable.componentId]
+    }),
+    cooler: one(coolersTable, {
+        fields: [componentsTable.id],
+        references: [coolersTable.componentId]
+    }),
+    motherboard: one(motherboardsTable, {
+        fields: [componentsTable.id],
+        references: [motherboardsTable.componentId]
     }),
     storage: one(storageTable, {
@@ -160,15 +159,15 @@
         references: [storageTable.componentId]
     }),
-    memoryCard: one(memoryCardTable, {
-        fields: [componentsTable.id],
-        references: [memoryCardTable.componentId]
-    }),
-    opticalDrive: one(opticalDriveTable, {
-        fields: [componentsTable.id],
-        references: [opticalDriveTable.componentId]
-    }),
-    soundCard: one(soundCardTable, {
-        fields: [componentsTable.id],
-        references: [soundCardTable.componentId]
+    memoryCard: one(memoryCardsTable, {
+        fields: [componentsTable.id],
+        references: [memoryCardsTable.componentId]
+    }),
+    opticalDrive: one(opticalDrivesTable, {
+        fields: [componentsTable.id],
+        references: [opticalDrivesTable.componentId]
+    }),
+    soundCard: one(soundCardsTable, {
+        fields: [componentsTable.id],
+        references: [soundCardsTable.componentId]
     }),
     cables: one(cablesTable, {
@@ -176,11 +175,11 @@
         references: [cablesTable.componentId]
     }),
-    networkAdapter: one(networkAdapterTable, {
-        fields: [componentsTable.id],
-        references: [networkAdapterTable.componentId]
-    }),
-    networkCard: one(networkCardTable, {
-        fields: [componentsTable.id],
-        references: [networkCardTable.componentId]
+    networkAdapter: one(networkAdaptersTable, {
+        fields: [componentsTable.id],
+        references: [networkAdaptersTable.componentId]
+    }),
+    networkCard: one(networkCardsTable, {
+        fields: [componentsTable.id],
+        references: [networkCardsTable.componentId]
     }),
 }));
@@ -214,7 +213,7 @@
 }));
 
-export const motherboardRelations = relations(motherboardTable, ({ one }) => ({
-    component: one(componentsTable, {
-        fields: [motherboardTable.componentId],
+export const motherboardRelations = relations(motherboardsTable, ({ one }) => ({
+    component: one(componentsTable, {
+        fields: [motherboardsTable.componentId],
         references: [componentsTable.id],
     }),
@@ -228,14 +227,14 @@
 }));
 
-export const memoryCardRelations = relations(memoryCardTable, ({ one }) => ({
-    component: one(componentsTable, {
-        fields: [memoryCardTable.componentId],
-        references: [componentsTable.id],
-    }),
-}));
-
-export const opticalDriveRelations = relations(opticalDriveTable, ({ one }) => ({
-    component: one(componentsTable, {
-        fields: [opticalDriveTable.componentId],
+export const memoryCardRelations = relations(memoryCardsTable, ({ one }) => ({
+    component: one(componentsTable, {
+        fields: [memoryCardsTable.componentId],
+        references: [componentsTable.id],
+    }),
+}));
+
+export const opticalDriveRelations = relations(opticalDrivesTable, ({ one }) => ({
+    component: one(componentsTable, {
+        fields: [opticalDrivesTable.componentId],
         references: [componentsTable.id],
     }),
@@ -249,21 +248,21 @@
 }));
 
-export const networkAdapterRelations = relations(networkAdapterTable, ({ one }) => ({
-    component: one(componentsTable, {
-        fields: [networkAdapterTable.componentId],
-        references: [componentsTable.id],
-    }),
-}));
-
-export const networkCardRelations = relations(networkCardTable, ({ one }) => ({
-    component: one(componentsTable, {
-        fields: [networkCardTable.componentId],
-        references: [componentsTable.id],
-    }),
-}));
-
-export const pcCaseRelations = relations(pcCaseTable, ({ one, many }) => ({
-    component: one(componentsTable, {
-        fields: [pcCaseTable.componentId],
+export const networkAdapterRelations = relations(networkAdaptersTable, ({ one }) => ({
+    component: one(componentsTable, {
+        fields: [networkAdaptersTable.componentId],
+        references: [componentsTable.id],
+    }),
+}));
+
+export const networkCardRelations = relations(networkCardsTable, ({ one }) => ({
+    component: one(componentsTable, {
+        fields: [networkCardsTable.componentId],
+        references: [componentsTable.id],
+    }),
+}));
+
+export const pcCaseRelations = relations(pcCasesTable, ({ one, many }) => ({
+    component: one(componentsTable, {
+        fields: [pcCasesTable.componentId],
         references: [componentsTable.id],
     }),
@@ -274,27 +273,27 @@
 
 export const caseStorageFormFactorsRelations = relations(caseStorageFormFactorsTable, ({ one }) => ({
-    pcCase: one(pcCaseTable, {
+    pcCase: one(pcCasesTable, {
         fields: [caseStorageFormFactorsTable.caseId],
-        references: [pcCaseTable.componentId],
+        references: [pcCasesTable.componentId],
     }),
 }));
 
 export const casePsFormFactorsRelations = relations(casePsFormFactorsTable, ({ one }) => ({
-    pcCase: one(pcCaseTable, {
+    pcCase: one(pcCasesTable, {
         fields: [casePsFormFactorsTable.caseId],
-        references: [pcCaseTable.componentId],
+        references: [pcCasesTable.componentId],
     }),
 }));
 
 export const caseMoboFormFactorsRelations = relations(caseMoboFormFactorsTable, ({ one }) => ({
-    pcCase: one(pcCaseTable, {
+    pcCase: one(pcCasesTable, {
         fields: [caseMoboFormFactorsTable.caseId],
-        references: [pcCaseTable.componentId],
-    }),
-}));
-
-export const coolerRelations = relations(coolerTable, ({ one, many }) => ({
-    component: one(componentsTable, {
-        fields: [coolerTable.componentId],
+        references: [pcCasesTable.componentId],
+    }),
+}));
+
+export const coolerRelations = relations(coolersTable, ({ one, many }) => ({
+    component: one(componentsTable, {
+        fields: [coolersTable.componentId],
         references: [componentsTable.id],
     }),
@@ -303,22 +302,14 @@
 
 export const coolerCpuSocketsRelations = relations(coolerCPUSocketsTable, ({ one }) => ({
-    cooler: one(coolerTable, {
+    cooler: one(coolersTable, {
         fields: [coolerCPUSocketsTable.cooler_id],
-        references: [coolerTable.componentId],
-    }),
-}));
-
-export const soundCardRelations = relations(soundCardTable, ({ one, many }) => ({
-    component: one(componentsTable, {
-        fields: [soundCardTable.componentId],
-        references: [componentsTable.id],
-    }),
-    channels: many(soundCardChannelsTable),
-}));
-
-export const soundCardChannelsRelations = relations(soundCardChannelsTable, ({ one }) => ({
-    soundCard: one(soundCardTable, {
-        fields: [soundCardChannelsTable.soundCardId],
-        references: [soundCardTable.componentId],
-    }),
-}));
+        references: [coolersTable.componentId],
+    }),
+}));
+
+export const soundCardRelations = relations(soundCardsTable, ({ one, many }) => ({
+    component: one(componentsTable, {
+        fields: [soundCardsTable.componentId],
+        references: [componentsTable.id],
+    }),
+}));
