Add delivery addresses to profile and order flow

This commit is contained in:
Ruslan Bakiev
2026-04-03 10:25:19 +07:00
parent 3ee14d508c
commit f7fb45618d
4 changed files with 278 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
-- AlterTable
ALTER TABLE "User" ADD COLUMN "defaultDeliveryAddressId" TEXT;
-- AlterTable
ALTER TABLE "Order" ADD COLUMN "deliveryAddress" TEXT,
ADD COLUMN "deliveryAddressId" TEXT;
-- CreateTable
CREATE TABLE "DeliveryAddress" (
"id" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"label" TEXT,
"address" TEXT NOT NULL,
"unrestrictedValue" TEXT,
"fiasId" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "DeliveryAddress_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "DeliveryAddress_userId_idx" ON "DeliveryAddress"("userId");
-- AddForeignKey
ALTER TABLE "User" ADD CONSTRAINT "User_defaultDeliveryAddressId_fkey" FOREIGN KEY ("defaultDeliveryAddressId") REFERENCES "DeliveryAddress"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "DeliveryAddress" ADD CONSTRAINT "DeliveryAddress_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Order" ADD CONSTRAINT "Order_deliveryAddressId_fkey" FOREIGN KEY ("deliveryAddressId") REFERENCES "DeliveryAddress"("id") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@@ -62,6 +62,9 @@ model User {
companyId String?
company Company? @relation(fields: [companyId], references: [id])
counterpartyProfile CounterpartyProfile?
deliveryAddresses DeliveryAddress[] @relation("UserDeliveryAddresses")
defaultDeliveryAddressId String?
defaultDeliveryAddress DeliveryAddress? @relation("UserDefaultDeliveryAddress", fields: [defaultDeliveryAddressId], references: [id], onDelete: SetNull)
registrationRequests RegistrationRequest[] @relation("RegistrationRequester")
reviewedRequests RegistrationRequest[] @relation("RegistrationReviewer")
sentInvitations Invitation[] @relation("InvitationManager")
@@ -79,6 +82,22 @@ model User {
updatedAt DateTime @updatedAt
}
model DeliveryAddress {
id String @id @default(cuid())
userId String
user User @relation("UserDeliveryAddresses", fields: [userId], references: [id], onDelete: Cascade)
label String?
address String
unrestrictedValue String?
fiasId String?
defaultForUsers User[] @relation("UserDefaultDeliveryAddress")
orders Order[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([userId])
}
model CounterpartyProfile {
id String @id @default(cuid())
userId String @unique
@@ -182,6 +201,9 @@ model Order {
kind OrderKind
customerId String
customer User @relation("OrderClient", fields: [customerId], references: [id])
deliveryAddressId String?
deliveryAddressRef DeliveryAddress? @relation(fields: [deliveryAddressId], references: [id], onDelete: SetNull)
deliveryAddress String?
managerId String?
manager User? @relation("OrderManager", fields: [managerId], references: [id])
status OrderStatus @default(NEW)