35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
CREATE TABLE "Cart" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"deliveryAddressId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Cart_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "CartItem" (
|
|
"id" TEXT NOT NULL,
|
|
"cartId" TEXT NOT NULL,
|
|
"productId" TEXT NOT NULL,
|
|
"productName" TEXT NOT NULL,
|
|
"sku" TEXT NOT NULL,
|
|
"isCustomizable" BOOLEAN NOT NULL DEFAULT false,
|
|
"quantity" DECIMAL(14,3) NOT NULL,
|
|
"parameters" JSONB NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "CartItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE UNIQUE INDEX "Cart_userId_key" ON "Cart"("userId");
|
|
CREATE INDEX "Cart_deliveryAddressId_idx" ON "Cart"("deliveryAddressId");
|
|
CREATE UNIQUE INDEX "CartItem_cartId_productId_key" ON "CartItem"("cartId", "productId");
|
|
CREATE INDEX "CartItem_productId_idx" ON "CartItem"("productId");
|
|
|
|
ALTER TABLE "Cart" ADD CONSTRAINT "Cart_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "Cart" ADD CONSTRAINT "Cart_deliveryAddressId_fkey" FOREIGN KEY ("deliveryAddressId") REFERENCES "DeliveryAddress"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
ALTER TABLE "CartItem" ADD CONSTRAINT "CartItem_cartId_fkey" FOREIGN KEY ("cartId") REFERENCES "Cart"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "CartItem" ADD CONSTRAINT "CartItem_productId_fkey" FOREIGN KEY ("productId") REFERENCES "Product"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|