Stage M7
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "DiscountTrigger" AS ENUM ('AUTOMATIC', 'CODE');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "DiscountType" AS ENUM ('PERCENTAGE', 'FIXED_AMOUNT');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "DiscountScope" AS ENUM ('ORDER', 'PRODUCT');
|
||||
|
||||
-- NOTE: Prisma wanted to drop `search_documents_document_idx` and strip the
|
||||
-- default from `search_documents.document` here. Both were removed by hand.
|
||||
--
|
||||
-- `document` is a GENERATED column (see 20260812130938_add_search_documents),
|
||||
-- which Prisma cannot express — it sees `Unsupported("tsvector")?` and assumes a
|
||||
-- plain column that has drifted. Letting it "fix" that would drop the GIN index
|
||||
-- search depends on and fail on the generated column anyway, which is exactly
|
||||
-- what happened the first time this migration ran.
|
||||
--
|
||||
-- Expect this diff on every future `migrate dev`. Delete those two statements.
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "discounts" (
|
||||
"id" UUID NOT NULL,
|
||||
"code" VARCHAR(40),
|
||||
"trigger" "DiscountTrigger" NOT NULL,
|
||||
"type" "DiscountType" NOT NULL,
|
||||
"scope" "DiscountScope" NOT NULL DEFAULT 'ORDER',
|
||||
"value" INTEGER NOT NULL,
|
||||
"min_subtotal_amount" INTEGER,
|
||||
"starts_at" TIMESTAMPTZ(3),
|
||||
"ends_at" TIMESTAMPTZ(3),
|
||||
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
||||
"usage_limit" INTEGER,
|
||||
"usage_count" INTEGER NOT NULL DEFAULT 0,
|
||||
"stackable" BOOLEAN NOT NULL DEFAULT false,
|
||||
"priority" INTEGER NOT NULL DEFAULT 100,
|
||||
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMPTZ(3) NOT NULL,
|
||||
"deleted_at" TIMESTAMPTZ(3),
|
||||
|
||||
CONSTRAINT "discounts_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "discount_translations" (
|
||||
"discount_id" UUID NOT NULL,
|
||||
"locale" "Locale" NOT NULL,
|
||||
"name" VARCHAR(120) NOT NULL,
|
||||
"description" VARCHAR(500),
|
||||
|
||||
CONSTRAINT "discount_translations_pkey" PRIMARY KEY ("discount_id","locale")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "discount_products" (
|
||||
"discount_id" UUID NOT NULL,
|
||||
"product_id" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "discount_products_pkey" PRIMARY KEY ("discount_id","product_id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "discount_collections" (
|
||||
"discount_id" UUID NOT NULL,
|
||||
"collection_id" UUID NOT NULL,
|
||||
|
||||
CONSTRAINT "discount_collections_pkey" PRIMARY KEY ("discount_id","collection_id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "discount_redemptions" (
|
||||
"id" UUID NOT NULL,
|
||||
"discount_id" UUID NOT NULL,
|
||||
"order_id" UUID NOT NULL,
|
||||
"amount" INTEGER NOT NULL,
|
||||
"code" VARCHAR(40),
|
||||
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "discount_redemptions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "discounts_code_key" ON "discounts"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "discounts_trigger_is_active_idx" ON "discounts"("trigger", "is_active");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "discounts_code_idx" ON "discounts"("code");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "discount_products_product_id_idx" ON "discount_products"("product_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "discount_collections_collection_id_idx" ON "discount_collections"("collection_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "discount_redemptions_discount_id_idx" ON "discount_redemptions"("discount_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "discount_redemptions_order_id_discount_id_key" ON "discount_redemptions"("order_id", "discount_id");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_translations" ADD CONSTRAINT "discount_translations_discount_id_fkey" FOREIGN KEY ("discount_id") REFERENCES "discounts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_products" ADD CONSTRAINT "discount_products_discount_id_fkey" FOREIGN KEY ("discount_id") REFERENCES "discounts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_products" ADD CONSTRAINT "discount_products_product_id_fkey" FOREIGN KEY ("product_id") REFERENCES "products"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_collections" ADD CONSTRAINT "discount_collections_discount_id_fkey" FOREIGN KEY ("discount_id") REFERENCES "discounts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_collections" ADD CONSTRAINT "discount_collections_collection_id_fkey" FOREIGN KEY ("collection_id") REFERENCES "collections"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_redemptions" ADD CONSTRAINT "discount_redemptions_discount_id_fkey" FOREIGN KEY ("discount_id") REFERENCES "discounts"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "discount_redemptions" ADD CONSTRAINT "discount_redemptions_order_id_fkey" FOREIGN KEY ("order_id") REFERENCES "orders"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user