-- Boost marketplace table was added to Prisma schema but missing from prior SQL migrations.

CREATE TYPE "BoostScope" AS ENUM ('MODULE_HOME', 'LOCAL', 'HOMEPAGE_HERO');

CREATE TYPE "BoostStatus" AS ENUM ('PENDING_PAYMENT', 'ACTIVE', 'EXPIRED', 'CANCELED');

CREATE TABLE "BoostPurchase" (
  "id" TEXT NOT NULL,
  "companyId" TEXT NOT NULL,
  "entityType" TEXT NOT NULL,
  "entityId" TEXT NOT NULL,
  "scope" "BoostScope" NOT NULL,
  "status" "BoostStatus" NOT NULL DEFAULT 'PENDING_PAYMENT',
  "priceRsd" INTEGER NOT NULL,
  "durationDays" INTEGER NOT NULL,
  "startsAt" TIMESTAMP(3),
  "expiresAt" TIMESTAMP(3),
  "invoiceId" TEXT,
  "paymentMethod" TEXT,
  "packageSnapshot" JSONB,
  "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
  "updatedAt" TIMESTAMP(3) NOT NULL,
  CONSTRAINT "BoostPurchase_pkey" PRIMARY KEY ("id")
);

CREATE INDEX "BoostPurchase_companyId_status_idx" ON "BoostPurchase"("companyId", "status");
CREATE INDEX "BoostPurchase_entityType_entityId_status_idx" ON "BoostPurchase"("entityType", "entityId", "status");
CREATE INDEX "BoostPurchase_status_expiresAt_idx" ON "BoostPurchase"("status", "expiresAt");

ALTER TABLE "BoostPurchase"
  ADD CONSTRAINT "BoostPurchase_companyId_fkey"
  FOREIGN KEY ("companyId") REFERENCES "Company"("id") ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE "BoostPurchase"
  ADD CONSTRAINT "BoostPurchase_invoiceId_fkey"
  FOREIGN KEY ("invoiceId") REFERENCES "Invoice"("id") ON DELETE SET NULL ON UPDATE CASCADE;
