-- CreateEnum CREATE TYPE "ReplicationRuleType" AS ENUM ('master', 'transaction'); -- AlterEnum ALTER TYPE "EventStatus" ADD VALUE 'filtered'; -- AlterTable ALTER TABLE "replication_attempts" ADD COLUMN "result_key" TEXT; -- CreateTable CREATE TABLE "subsidiaries" ( "id" SERIAL NOT NULL, "code" TEXT NOT NULL, "name" TEXT NOT NULL, "base_url" TEXT NOT NULL, "company_db" TEXT NOT NULL, "username" TEXT NOT NULL, "password" TEXT NOT NULL, "routing_value" TEXT, "active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "subsidiaries_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "replication_rules" ( "id" SERIAL NOT NULL, "business_object" TEXT NOT NULL, "type" "ReplicationRuleType" NOT NULL, "key_field" TEXT, "routing_field" TEXT, "idempotency_field" TEXT, "active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "replication_rules_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "mapped_fields" ( "id" SERIAL NOT NULL, "business_object" TEXT NOT NULL, "field_name" TEXT NOT NULL, "active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "mapped_fields_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "reference_field_mappings" ( "id" SERIAL NOT NULL, "business_object" TEXT NOT NULL, "field_name" TEXT NOT NULL, "subsidiary_code" TEXT NOT NULL, "hq_value" TEXT NOT NULL, "subsidiary_value" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "reference_field_mappings_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "subsidiaries_code_key" ON "subsidiaries"("code"); -- CreateIndex CREATE UNIQUE INDEX "subsidiaries_routing_value_key" ON "subsidiaries"("routing_value"); -- CreateIndex CREATE UNIQUE INDEX "replication_rules_business_object_key" ON "replication_rules"("business_object"); -- CreateIndex CREATE UNIQUE INDEX "mapped_fields_business_object_field_name_key" ON "mapped_fields"("business_object", "field_name"); -- CreateIndex CREATE UNIQUE INDEX "reference_field_mappings_business_object_field_name_subsidi_key" ON "reference_field_mappings"("business_object", "field_name", "subsidiary_code", "hq_value"); -- AddForeignKey ALTER TABLE "reference_field_mappings" ADD CONSTRAINT "reference_field_mappings_subsidiary_code_fkey" FOREIGN KEY ("subsidiary_code") REFERENCES "subsidiaries"("code") ON DELETE CASCADE ON UPDATE CASCADE;