added tons of features
This commit is contained in:
141
lib/db/prisma/schema/product.prisma
Normal file
141
lib/db/prisma/schema/product.prisma
Normal file
@@ -0,0 +1,141 @@
|
||||
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")
|
||||
filesize Int? @db.UnsignedInt
|
||||
width Int? @db.UnsignedSmallInt
|
||||
height Int? @db.UnsignedSmallInt
|
||||
quality Int? @db.UnsignedTinyInt
|
||||
signature String? @db.Char(64)
|
||||
uri String @db.Text
|
||||
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)
|
||||
|
||||
@@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])
|
||||
|
||||
@@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")
|
||||
}
|
||||
Reference in New Issue
Block a user