Persist user carts in database

This commit is contained in:
Ruslan Bakiev
2026-04-04 09:08:42 +07:00
parent 6ea9d4e5b7
commit b01b2421b5
4 changed files with 338 additions and 0 deletions

View File

@@ -70,6 +70,7 @@ model User {
sentInvitations Invitation[] @relation("InvitationManager")
acceptedInvitations Invitation[] @relation("InvitationAcceptor")
messengerConnections MessengerConnection[]
cart Cart?
clientOrders Order[] @relation("OrderClient")
managerOrders Order[] @relation("OrderManager")
orderStatusEvents OrderStatusEvent[]
@@ -91,6 +92,7 @@ model DeliveryAddress {
unrestrictedValue String?
fiasId String?
defaultForUsers User[] @relation("UserDefaultDeliveryAddress")
carts Cart[]
orders Order[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -179,11 +181,43 @@ model Product {
isCustomizable Boolean @default(false)
isActive Boolean @default(true)
inventory ProductStock[]
cartItems CartItem[]
orderItems OrderItem[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Cart {
id String @id @default(cuid())
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
deliveryAddressId String?
deliveryAddress DeliveryAddress? @relation(fields: [deliveryAddressId], references: [id], onDelete: SetNull)
items CartItem[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([deliveryAddressId])
}
model CartItem {
id String @id @default(cuid())
cartId String
cart Cart @relation(fields: [cartId], references: [id], onDelete: Cascade)
productId String
product Product @relation(fields: [productId], references: [id], onDelete: Cascade)
productName String
sku String
isCustomizable Boolean @default(false)
quantity Decimal @db.Decimal(14, 3)
parameters Json
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([cartId, productId])
@@index([productId])
}
model Warehouse {
id String @id @default(cuid())
code String @unique