Files
crm/apps/api/prisma/migrations/20260826125212_custom_fields/migration.sql
T

42 lines
1.6 KiB
SQL

-- CreateEnum
CREATE TYPE "CustomFieldEntity" AS ENUM ('person', 'company', 'deal');
-- CreateEnum
CREATE TYPE "CustomFieldType" AS ENUM ('text', 'number', 'date', 'boolean', 'select');
-- AlterTable
ALTER TABLE "Company" ADD COLUMN "customFields" JSONB NOT NULL DEFAULT '{}';
-- AlterTable
ALTER TABLE "Deal" ADD COLUMN "customFields" JSONB NOT NULL DEFAULT '{}';
-- AlterTable
ALTER TABLE "Person" ADD COLUMN "customFields" JSONB NOT NULL DEFAULT '{}';
-- CreateTable
CREATE TABLE "CustomFieldDefinition" (
"id" TEXT NOT NULL,
"organizationId" TEXT NOT NULL,
"entityType" "CustomFieldEntity" NOT NULL,
"key" TEXT NOT NULL,
"label" TEXT NOT NULL,
"fieldType" "CustomFieldType" NOT NULL DEFAULT 'text',
"options" TEXT[] DEFAULT ARRAY[]::TEXT[],
"required" BOOLEAN NOT NULL DEFAULT false,
"position" INTEGER NOT NULL DEFAULT 0,
"isActive" BOOLEAN NOT NULL DEFAULT true,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "CustomFieldDefinition_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "CustomFieldDefinition_organizationId_entityType_position_idx" ON "CustomFieldDefinition"("organizationId", "entityType", "position");
-- CreateIndex
CREATE UNIQUE INDEX "CustomFieldDefinition_organizationId_entityType_key_key" ON "CustomFieldDefinition"("organizationId", "entityType", "key");
-- AddForeignKey
ALTER TABLE "CustomFieldDefinition" ADD CONSTRAINT "CustomFieldDefinition_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;