fix: unblock ci audit checks
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
-- Align fresh databases with the Order/Escrow models already present in
|
||||
-- prisma/schema.prisma. Seed and E2E depend on these tables.
|
||||
|
||||
ALTER TYPE "PaymentType" ADD VALUE IF NOT EXISTS 'AUCTION_PAYMENT';
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'OrderStatus') THEN
|
||||
CREATE TYPE "OrderStatus" AS ENUM (
|
||||
'CREATED',
|
||||
'PAYMENT_PENDING',
|
||||
'PAYMENT_CONFIRMED',
|
||||
'ESCROW_HELD',
|
||||
'SHIPPED',
|
||||
'DELIVERED',
|
||||
'DISPUTE',
|
||||
'ESCROW_RELEASED',
|
||||
'COMPLETED',
|
||||
'CANCELLED',
|
||||
'REFUNDED'
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'EscrowStatus') THEN
|
||||
CREATE TYPE "EscrowStatus" AS ENUM (
|
||||
'PENDING',
|
||||
'HELD',
|
||||
'RELEASED',
|
||||
'REFUNDED',
|
||||
'DISPUTED'
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "Order" (
|
||||
"id" TEXT NOT NULL,
|
||||
"buyerId" TEXT NOT NULL,
|
||||
"sellerId" TEXT NOT NULL,
|
||||
"listingId" TEXT NOT NULL,
|
||||
"status" "OrderStatus" NOT NULL DEFAULT 'CREATED',
|
||||
"amountVND" BIGINT NOT NULL,
|
||||
"platformFeeVND" BIGINT NOT NULL,
|
||||
"sellerPayoutVND" BIGINT NOT NULL,
|
||||
"idempotencyKey" TEXT,
|
||||
"metadata" JSONB,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
CONSTRAINT "Order_pkey" PRIMARY KEY ("id"),
|
||||
CONSTRAINT "Order_buyerId_fkey"
|
||||
FOREIGN KEY ("buyerId") REFERENCES "User"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT "Order_sellerId_fkey"
|
||||
FOREIGN KEY ("sellerId") REFERENCES "User"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT "Order_listingId_fkey"
|
||||
FOREIGN KEY ("listingId") REFERENCES "Listing"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Order_idempotencyKey_key" ON "Order"("idempotencyKey");
|
||||
CREATE INDEX IF NOT EXISTS "Order_buyerId_idx" ON "Order"("buyerId");
|
||||
CREATE INDEX IF NOT EXISTS "Order_sellerId_idx" ON "Order"("sellerId");
|
||||
CREATE INDEX IF NOT EXISTS "Order_listingId_idx" ON "Order"("listingId");
|
||||
CREATE INDEX IF NOT EXISTS "Order_status_idx" ON "Order"("status");
|
||||
CREATE INDEX IF NOT EXISTS "Order_createdAt_idx" ON "Order"("createdAt" DESC);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "Escrow" (
|
||||
"id" TEXT NOT NULL,
|
||||
"orderId" TEXT NOT NULL,
|
||||
"amountVND" BIGINT NOT NULL,
|
||||
"feeVND" BIGINT NOT NULL,
|
||||
"status" "EscrowStatus" NOT NULL DEFAULT 'PENDING',
|
||||
"heldAt" TIMESTAMP(3),
|
||||
"releasedAt" TIMESTAMP(3),
|
||||
"disputeReason" TEXT,
|
||||
"disputedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
CONSTRAINT "Escrow_pkey" PRIMARY KEY ("id"),
|
||||
CONSTRAINT "Escrow_orderId_fkey"
|
||||
FOREIGN KEY ("orderId") REFERENCES "Order"("id")
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Escrow_orderId_key" ON "Escrow"("orderId");
|
||||
CREATE INDEX IF NOT EXISTS "Escrow_status_idx" ON "Escrow"("status");
|
||||
CREATE INDEX IF NOT EXISTS "Escrow_orderId_idx" ON "Escrow"("orderId");
|
||||
|
||||
ALTER TABLE "Payment"
|
||||
ADD COLUMN IF NOT EXISTS "orderId" TEXT,
|
||||
ADD COLUMN IF NOT EXISTS "idempotencyKey" TEXT;
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint WHERE conname = 'Payment_orderId_fkey'
|
||||
) THEN
|
||||
ALTER TABLE "Payment"
|
||||
ADD CONSTRAINT "Payment_orderId_fkey"
|
||||
FOREIGN KEY ("orderId") REFERENCES "Order"("id")
|
||||
ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "Payment_orderId_idx" ON "Payment"("orderId");
|
||||
CREATE INDEX IF NOT EXISTS "Payment_createdAt_idx" ON "Payment"("createdAt");
|
||||
Reference in New Issue
Block a user