mirror of
https://git.meshkee.com/BaloutPastry/backend.git
synced 2026-08-11 22:31:00 +04:30
118 lines
3.7 KiB
SQL
118 lines
3.7 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "OrderStatus" AS ENUM ('pending', 'confirmed', 'preparing', 'ready', 'delivered', 'cancelled');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "DeliveryType" AS ENUM ('shipping', 'pickup');
|
|
|
|
-- AlterTable
|
|
CREATE INDEX "Product_price_idx" ON "Product"("price");
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserAddress" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"district" TEXT NOT NULL,
|
|
"address" TEXT NOT NULL,
|
|
"landline" TEXT NOT NULL DEFAULT '',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "UserAddress_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Order" (
|
|
"id" TEXT NOT NULL,
|
|
"number" SERIAL NOT NULL,
|
|
"customerId" TEXT NOT NULL,
|
|
"customerName" TEXT NOT NULL,
|
|
"customerPhone" TEXT NOT NULL,
|
|
"status" "OrderStatus" NOT NULL DEFAULT 'pending',
|
|
"deliveryType" "DeliveryType" NOT NULL,
|
|
"branchId" TEXT,
|
|
"branchName" TEXT,
|
|
"shippingAddressId" TEXT,
|
|
"shippingName" TEXT,
|
|
"shippingDistrict" TEXT,
|
|
"shippingAddressLine" TEXT,
|
|
"shippingLandline" TEXT,
|
|
"note" TEXT NOT NULL DEFAULT '',
|
|
"itemCount" INTEGER NOT NULL,
|
|
"totalPrice" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Order_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "OrderItem" (
|
|
"id" TEXT NOT NULL,
|
|
"orderId" TEXT NOT NULL,
|
|
"productId" TEXT,
|
|
"nameFa" TEXT NOT NULL,
|
|
"quantity" INTEGER NOT NULL,
|
|
"unitPrice" INTEGER NOT NULL,
|
|
"sellUnit" "SellUnit" NOT NULL,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
CONSTRAINT "OrderItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "OrderItemOption" (
|
|
"id" TEXT NOT NULL,
|
|
"orderItemId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"price" INTEGER NOT NULL,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
CONSTRAINT "OrderItemOption_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UserAddress_userId_idx" ON "UserAddress"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Order_number_key" ON "Order"("number");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Order_customerId_idx" ON "Order"("customerId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Order_status_idx" ON "Order"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Order_createdAt_idx" ON "Order"("createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Order_branchId_idx" ON "Order"("branchId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "OrderItem_orderId_idx" ON "OrderItem"("orderId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "OrderItem_productId_idx" ON "OrderItem"("productId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "OrderItemOption_orderItemId_idx" ON "OrderItemOption"("orderItemId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserAddress" ADD CONSTRAINT "UserAddress_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Order" ADD CONSTRAINT "Order_customerId_fkey" FOREIGN KEY ("customerId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Order" ADD CONSTRAINT "Order_branchId_fkey" FOREIGN KEY ("branchId") REFERENCES "Branch"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "OrderItem" ADD CONSTRAINT "OrderItem_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "OrderItem" ADD CONSTRAINT "OrderItem_productId_fkey" FOREIGN KEY ("productId") REFERENCES "Product"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "OrderItemOption" ADD CONSTRAINT "OrderItemOption_orderItemId_fkey" FOREIGN KEY ("orderItemId") REFERENCES "OrderItem"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|