| [fdd776b] | 1 | import { pgTable, serial, integer, text, numeric, boolean, date, primaryKey } from "drizzle-orm/pg-core";
|
|---|
| 2 | import { usersTable } from "./users";
|
|---|
| 3 | import { componentsTable } from "./components";
|
|---|
| 4 |
|
|---|
| [1ebac59] | 5 | export const buildsTable = pgTable("build", {
|
|---|
| [fdd776b] | 6 | id: serial("id").primaryKey(),
|
|---|
| 7 | userId: integer("user_id")
|
|---|
| 8 | .notNull()
|
|---|
| 9 | .references(() => usersTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| 10 | name: text("name").notNull(),
|
|---|
| 11 | createdAt: date("created_at").notNull(),
|
|---|
| 12 | description: text("description"),
|
|---|
| 13 | totalPrice: numeric("total_price").notNull(),
|
|---|
| 14 | isApproved: boolean("is_approved").notNull(),
|
|---|
| 15 | });
|
|---|
| 16 |
|
|---|
| [1ebac59] | 17 | export const buildComponentsTable = pgTable("build_component", {
|
|---|
| [fdd776b] | 18 | buildId: integer("build_id")
|
|---|
| 19 | .notNull()
|
|---|
| [1ebac59] | 20 | .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| [fdd776b] | 21 | componentId: integer("component_id")
|
|---|
| 22 | .notNull()
|
|---|
| 23 | .references(() => componentsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| 24 | },
|
|---|
| 25 | (t) => ({
|
|---|
| 26 | pk: primaryKey({ columns: [t.buildId, t.componentId] }),
|
|---|
| 27 | }),
|
|---|
| 28 | );
|
|---|
| 29 |
|
|---|
| [1ebac59] | 30 | export const favoriteBuildsTable = pgTable("favorite_build", {
|
|---|
| [fdd776b] | 31 | buildId: integer("build_id")
|
|---|
| 32 | .notNull()
|
|---|
| [1ebac59] | 33 | .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| [fdd776b] | 34 | userId: integer("user_id")
|
|---|
| 35 | .notNull()
|
|---|
| 36 | .references(() => usersTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| 37 | },
|
|---|
| 38 | (t) => ({
|
|---|
| 39 | pk: primaryKey({ columns: [t.buildId, t.userId] }),
|
|---|
| 40 | }),
|
|---|
| 41 | );
|
|---|
| 42 |
|
|---|
| [1ebac59] | 43 | export const ratingBuildsTable = pgTable("rating_build", {
|
|---|
| [fdd776b] | 44 | buildId: integer("build_id")
|
|---|
| 45 | .notNull()
|
|---|
| [1ebac59] | 46 | .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| [fdd776b] | 47 | userId: integer("user_id")
|
|---|
| 48 | .notNull()
|
|---|
| 49 | .references(() => usersTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| 50 | value: numeric("value").notNull(),
|
|---|
| 51 | },
|
|---|
| 52 | (t) => ({
|
|---|
| 53 | pk: primaryKey({ columns: [t.buildId, t.userId] }),
|
|---|
| 54 | }),
|
|---|
| 55 | );
|
|---|
| 56 |
|
|---|
| [1ebac59] | 57 | export const reviewsTable = pgTable("review", {
|
|---|
| [fdd776b] | 58 | id: serial("id").primaryKey(),
|
|---|
| 59 |
|
|---|
| 60 | buildId: integer("build_id")
|
|---|
| 61 | .notNull()
|
|---|
| [1ebac59] | 62 | .references(() => buildsTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| [fdd776b] | 63 | userId: integer("user_id")
|
|---|
| 64 | .notNull()
|
|---|
| 65 | .references(() => usersTable.id, { onDelete: "cascade", onUpdate: "cascade" }),
|
|---|
| 66 | content: text("content").notNull(),
|
|---|
| 67 | createdAt: date("created_at").notNull(),
|
|---|
| 68 | });
|
|---|
| 69 |
|
|---|
| [1ebac59] | 70 | export type buildItem = typeof buildsTable.$inferSelect;
|
|---|
| 71 | export type buildInsert = typeof buildsTable.$inferInsert;
|
|---|
| [fdd776b] | 72 |
|
|---|
| [1ebac59] | 73 | export type buildComponentItem = typeof buildComponentsTable.$inferSelect;
|
|---|
| 74 | export type buildComponentInsert = typeof buildComponentsTable.$inferInsert;
|
|---|
| [fdd776b] | 75 |
|
|---|
| [1ebac59] | 76 | export type favoriteBuildItem = typeof favoriteBuildsTable.$inferSelect;
|
|---|
| 77 | export type favoriteBuildInsert = typeof favoriteBuildsTable.$inferInsert;
|
|---|
| [fdd776b] | 78 |
|
|---|
| [1ebac59] | 79 | export type ratingBuildItem = typeof ratingBuildsTable.$inferSelect;
|
|---|
| 80 | export type ratingBuildInsert = typeof ratingBuildsTable.$inferInsert;
|
|---|
| [fdd776b] | 81 |
|
|---|
| [1ebac59] | 82 | export type reviewItem = typeof reviewsTable.$inferSelect;
|
|---|
| 83 | export type reviewInsert = typeof reviewsTable.$inferInsert; |
|---|