Motor de escenarios de replicacion entre bases SAP Business One (Service Layer). Poll periodico sobre webhook_events, escenarios configurables via Prisma (filter + transform por escenario). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
84 lines
2.7 KiB
SQL
84 lines
2.7 KiB
SQL
-- 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;
|