Files
bewell-in-ua/lib/db/prisma/schema/product.prisma
2025-02-07 08:34:42 +02:00

145 lines
5.5 KiB
Plaintext

model Product {
id Int @id @default(autoincrement())
type ProductType? @default(DIETARY_SUPPLEMENT)
image String? @db.VarChar(512)
// vendor Vendor @relation(fields: [vendorId], references: [id])
// vendorId Int
locales ProductLocale[]
categoriesOnProducts CategoriesOnProducts[]
resources ProductResource[]
toStore ProductToStore[]
attribute ProductAttribute[]
ingradient ProductIngradient[]
form FormsOfRelease[]
createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3)
updatedAt DateTime? @default(dbgenerated("NULL DEFAULT NULL ON UPDATE current_timestamp(3)")) @map("updated_at") @db.Timestamp(3)
@@map("products")
}
model ProductLocale {
id Int @id @default(autoincrement())
lang Lang @default(uk)
slug String? @db.VarChar(384)
title String @db.VarChar(384)
shortTitle String? @map("short_title")
headingTitle String? @map("heading_title")
description String? @db.MediumText
content String? @db.MediumText
instruction String? @db.MediumText
product Product @relation(fields: [productId], references: [id])
productId Int @map("product_id")
meta Meta? @relation(fields: [metaId], references: [id])
metaId Int? @map("meta_id")
@@unique([productId, slug, lang])
@@map("product_locale")
}
model ProductResource {
id Int @id @default(autoincrement())
type ResourceType
mimeType String? @map("mime_type")
isFeature Boolean? @default(false)
filesize Int? @db.UnsignedInt
width Int? @db.UnsignedSmallInt
height Int? @db.UnsignedSmallInt
quality Float? @db.Float
signature String @db.Char(64)
uri String @db.VarChar(1024)
title String? @db.VarChar(255)
description String? @db.Text
meta Json? @db.Json
productId Int? @map("product_id")
product Product? @relation(fields: [productId], references: [id])
createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3)
updatedAt DateTime? @default(dbgenerated("NULL DEFAULT NULL ON UPDATE current_timestamp(3)")) @map("updated_at") @db.Timestamp(3)
@@unique([productId, signature])
@@map("product_resources")
}
model ProductIngradient {
id Int @id @default(autoincrement())
name String
altNames String? @map("alt_names")
genericName String? @map("generic_name")
activeSubstance String? @map("active_substance")
excipients String?
units Unit
amount Decimal @db.Decimal(7, 3)
product Product? @relation(fields: [productId], references: [id])
productId Int? @map("product_id")
@@map("product_ingradients")
}
model ProductAttribute {
id Int @id @default(autoincrement())
lang Lang @default(uk)
key String
text String @db.MediumText
productId Int? @map("product_id")
product Product? @relation(fields: [productId], references: [id])
@@unique([lang, key, productId])
@@map("product_attributes")
}
model ProductToStore {
id Int @id @default(autoincrement())
position Int @default(0)
published Boolean @default(false)
available Boolean @default(false)
price Decimal @default(0) @db.Decimal(7, 2)
pricePromotional Decimal @default(0) @map("price_promotional") @db.Decimal(7, 2)
productId Int @map("product_id")
storeId Int @map("store_id")
product Product @relation(fields: [productId], references: [id])
createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3)
@@unique([storeId, productId])
@@map("product_to_store")
}
// model Vendor {
// id Int @id @default(autoincrement())
// slug String? @unique @default(uuid()) @db.VarChar(255)
// label String?
// origin String?
// locale VendorLocale[]
// product Product[]
// createdAt DateTime @default(now()) @map("created_at") @db.Timestamp(3)
// updatedAt DateTime? @default(dbgenerated("NULL DEFAULT NULL ON UPDATE current_timestamp(3)")) @map("updated_at") @db.Timestamp(3)
//
// @@map("vendors")
// }
//
// model VendorLocale {
// id Int @id @default(autoincrement())
// vendor Vendor? @relation(fields: [vendorId], references: [id])
// vendorId Int? @map("vendor_id")
// lang Lang @default(uk)
// title String @db.VarChar(384)
// slug String? @db.VarChar(384)
// shortTitle String? @map("short_title")
// description String? @db.Text
// content String? @db.MediumText
// meta Meta? @relation(fields: [metaId], references: [id])
// metaId Int? @map("meta_id")
//
// @@unique([vendorId, slug, lang])
// @@map("vendor_locale")
// }
model FormsOfRelease {
id Int @id @default(autoincrement())
quantity Int @db.UnsignedSmallInt
package Package
additionalInfo String? @map("additional_info")
product Product? @relation(fields: [productId], references: [id], onDelete: Cascade)
productId Int? @map("product_id")
@@map("forms_of_release")
}