export const Product = pgTable("product", {
id: uuid("id").primaryKey().defaultRandom(),
title: varchar("title", { length: 128 }).notNull(),
description: varchar("description", { length: 1024 }),
// the product "owns" the Media in thumbnail
thumbnailId: uuid("thumbnail_id").references(() => Media.id),
})
export const Media = pgTable("media", {
id: uuid("id").primaryKey().defaultRandom(),
url: varchar("url", { length: 512 }).notNull(),
// needs to reference productId to correctly implement a one-to-many relation
productId: uuid("product_id").references(() => Product.id),
})
export const ProductRelations = relations(Product, ({ one, many }) => ({
thumbnail: one(Media, {
fields: [Product.thumbnailId],
references: [Media.id],
}),
images: many(Media),
}))
export const MediaRelations = relations(Media, ({ one, many }) => ({
productThumbnail: one(Product),
productImages: one(Product, {
fields: [Media.productId],
references: [Product.id],
}),
}))
export const Product = pgTable("product", {
id: uuid("id").primaryKey().defaultRandom(),
title: varchar("title", { length: 128 }).notNull(),
description: varchar("description", { length: 1024 }),
// the product "owns" the Media in thumbnail
thumbnailId: uuid("thumbnail_id").references(() => Media.id),
})
export const Media = pgTable("media", {
id: uuid("id").primaryKey().defaultRandom(),
url: varchar("url", { length: 512 }).notNull(),
// needs to reference productId to correctly implement a one-to-many relation
productId: uuid("product_id").references(() => Product.id),
})
export const ProductRelations = relations(Product, ({ one, many }) => ({
thumbnail: one(Media, {
fields: [Product.thumbnailId],
references: [Media.id],
}),
images: many(Media),
}))
export const MediaRelations = relations(Media, ({ one, many }) => ({
productThumbnail: one(Product),
productImages: one(Product, {
fields: [Media.productId],
references: [Product.id],
}),
}))