163 lines
6.6 KiB
SQL
163 lines
6.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "MontifyConnection" (
|
|
"id" TEXT NOT NULL,
|
|
"organizationId" TEXT NOT NULL,
|
|
"label" TEXT NOT NULL,
|
|
"baseUrl" TEXT NOT NULL,
|
|
"storeId" TEXT NOT NULL DEFAULT '',
|
|
"tokenCiphertext" TEXT NOT NULL,
|
|
"tokenIv" TEXT NOT NULL,
|
|
"tokenTag" TEXT NOT NULL,
|
|
"tokenLast4" TEXT NOT NULL DEFAULT '',
|
|
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"webhookRemoteId" TEXT,
|
|
"webhookSecretCiphertext" TEXT,
|
|
"webhookSecretIv" TEXT,
|
|
"webhookSecretTag" TEXT,
|
|
"customersCursor" TIMESTAMP(3),
|
|
"syncStatus" TEXT NOT NULL DEFAULT 'idle',
|
|
"syncStartedAt" TIMESTAMP(3),
|
|
"lastSyncAt" TIMESTAMP(3),
|
|
"lastSyncResult" JSONB,
|
|
"lastHealthAt" TIMESTAMP(3),
|
|
"lastHealthOk" BOOLEAN,
|
|
"lastError" TEXT,
|
|
"lastWebhookAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "MontifyConnection_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "MontifyLink" (
|
|
"id" TEXT NOT NULL,
|
|
"organizationId" TEXT NOT NULL,
|
|
"connectionId" TEXT NOT NULL,
|
|
"entityType" TEXT NOT NULL,
|
|
"externalId" TEXT NOT NULL,
|
|
"entityId" TEXT NOT NULL,
|
|
"externalUpdatedAt" TIMESTAMP(3),
|
|
"ordersSyncedAt" TIMESTAMP(3),
|
|
"data" JSONB,
|
|
"syncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "MontifyLink_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "MontifyOrder" (
|
|
"id" TEXT NOT NULL,
|
|
"organizationId" TEXT NOT NULL,
|
|
"connectionId" TEXT NOT NULL,
|
|
"externalId" TEXT NOT NULL,
|
|
"customerExternalId" TEXT,
|
|
"personId" TEXT,
|
|
"orderReference" TEXT,
|
|
"orderStatus" TEXT,
|
|
"paymentStatus" TEXT,
|
|
"paymentType" TEXT,
|
|
"totalPrice" DECIMAL(20,2),
|
|
"discountTotalPrice" DECIMAL(20,2),
|
|
"totalDiscounts" DECIMAL(20,2),
|
|
"totalTax" DECIMAL(20,2),
|
|
"totalQty" DECIMAL(14,3),
|
|
"profit" DECIMAL(20,2),
|
|
"percentProfit" DECIMAL(10,3),
|
|
"sumGold" DECIMAL(14,3),
|
|
"sumSilver" DECIMAL(14,3),
|
|
"address" JSONB,
|
|
"note" TEXT,
|
|
"cancelReason" TEXT,
|
|
"cancelledAt" TIMESTAMP(3),
|
|
"closedAt" TIMESTAMP(3),
|
|
"codeDiscount" TEXT,
|
|
"items" JSONB NOT NULL DEFAULT '[]',
|
|
"externalCreatedAt" TIMESTAMP(3),
|
|
"externalUpdatedAt" TIMESTAMP(3),
|
|
"deletedAt" TIMESTAMP(3),
|
|
"raw" JSONB,
|
|
"syncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "MontifyOrder_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "MontifyTransaction" (
|
|
"id" TEXT NOT NULL,
|
|
"organizationId" TEXT NOT NULL,
|
|
"connectionId" TEXT NOT NULL,
|
|
"externalId" TEXT NOT NULL,
|
|
"customerExternalId" TEXT,
|
|
"personId" TEXT,
|
|
"type" TEXT,
|
|
"amount" DECIMAL(24,4),
|
|
"currency" TEXT,
|
|
"status" TEXT,
|
|
"referenceCode" TEXT,
|
|
"externalCreatedAt" TIMESTAMP(3),
|
|
"raw" JSONB,
|
|
"syncedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "MontifyTransaction_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE IF NOT EXISTS "MontifyWebhookDelivery" (
|
|
"id" TEXT NOT NULL,
|
|
"connectionId" TEXT NOT NULL,
|
|
"deliveryId" TEXT NOT NULL,
|
|
"event" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'received',
|
|
"error" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "MontifyWebhookDelivery_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX IF NOT EXISTS "MontifyConnection_organizationId_enabled_idx" ON "MontifyConnection"("organizationId", "enabled");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "MontifyLink_connectionId_entityType_externalId_key" ON "MontifyLink"("connectionId", "entityType", "externalId");
|
|
CREATE INDEX IF NOT EXISTS "MontifyLink_organizationId_entityType_entityId_idx" ON "MontifyLink"("organizationId", "entityType", "entityId");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "MontifyOrder_connectionId_externalId_key" ON "MontifyOrder"("connectionId", "externalId");
|
|
CREATE INDEX IF NOT EXISTS "MontifyOrder_organizationId_personId_idx" ON "MontifyOrder"("organizationId", "personId");
|
|
CREATE INDEX IF NOT EXISTS "MontifyOrder_organizationId_externalCreatedAt_idx" ON "MontifyOrder"("organizationId", "externalCreatedAt");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "MontifyTransaction_connectionId_externalId_key" ON "MontifyTransaction"("connectionId", "externalId");
|
|
CREATE INDEX IF NOT EXISTS "MontifyTransaction_organizationId_personId_idx" ON "MontifyTransaction"("organizationId", "personId");
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "MontifyWebhookDelivery_connectionId_deliveryId_key" ON "MontifyWebhookDelivery"("connectionId", "deliveryId");
|
|
CREATE INDEX IF NOT EXISTS "MontifyWebhookDelivery_connectionId_createdAt_idx" ON "MontifyWebhookDelivery"("connectionId", "createdAt");
|
|
|
|
-- AddForeignKey
|
|
DO $$ BEGIN
|
|
ALTER TABLE "MontifyConnection" ADD CONSTRAINT "MontifyConnection_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "MontifyLink" ADD CONSTRAINT "MontifyLink_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "MontifyConnection"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "MontifyOrder" ADD CONSTRAINT "MontifyOrder_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "MontifyConnection"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "MontifyTransaction" ADD CONSTRAINT "MontifyTransaction_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "MontifyConnection"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
|
|
|
DO $$ BEGIN
|
|
ALTER TABLE "MontifyWebhookDelivery" ADD CONSTRAINT "MontifyWebhookDelivery_connectionId_fkey" FOREIGN KEY ("connectionId") REFERENCES "MontifyConnection"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
|
|
|
-- ماژول جدید برای محیطهایی که فهرست ماژول ذخیرهشده دارند و ووکامرس فعال است
|
|
UPDATE "Organization"
|
|
SET "enabledModules" = array_append("enabledModules", 'montify')
|
|
WHERE cardinality("enabledModules") > 0
|
|
AND 'woocommerce' = ANY("enabledModules")
|
|
AND NOT ('montify' = ANY("enabledModules"));
|