148 lines
5.1 KiB
SQL
148 lines
5.1 KiB
SQL
-- CreateTable
|
|||
|
|
CREATE TABLE "sla_policies" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"name" TEXT NOT NULL,
|
||
|
|
"productId" TEXT,
|
||
|
|
"categoryId" TEXT,
|
||
|
|
"problemTypeId" TEXT,
|
||
|
|
"priority" TEXT,
|
||
|
|
"firstResponseMinutes" INTEGER NOT NULL,
|
||
|
|
"investigationMinutes" INTEGER,
|
||
|
|
"resolutionMinutes" INTEGER NOT NULL,
|
||
|
|
"customerResponseMinutes" INTEGER,
|
||
|
|
"businessCalendarId" TEXT,
|
||
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "sla_policies_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "sla_runs" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"ticketId" TEXT NOT NULL,
|
||
|
|
"policyId" TEXT NOT NULL,
|
||
|
|
"firstResponseDueAt" TIMESTAMP(3),
|
||
|
|
"resolutionDueAt" TIMESTAMP(3),
|
||
|
|
"status" TEXT NOT NULL,
|
||
|
|
"pausedAt" TIMESTAMP(3),
|
||
|
|
"resumedAt" TIMESTAMP(3),
|
||
|
|
"breachedAt" TIMESTAMP(3),
|
||
|
|
"firstResponseBreachedAt" TIMESTAMP(3),
|
||
|
|
"completedAt" TIMESTAMP(3),
|
||
|
|
|
||
|
|
CONSTRAINT "sla_runs_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "business_calendars" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"name" TEXT NOT NULL,
|
||
|
|
"timezone" TEXT NOT NULL,
|
||
|
|
"workingHours" JSONB NOT NULL,
|
||
|
|
|
||
|
|
CONSTRAINT "business_calendars_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "holidays" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"calendarId" TEXT NOT NULL,
|
||
|
|
"date" TIMESTAMP(3) NOT NULL,
|
||
|
|
"description" TEXT,
|
||
|
|
|
||
|
|
CONSTRAINT "holidays_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "escalation_policies" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"name" TEXT NOT NULL,
|
||
|
|
"productId" TEXT,
|
||
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
|
||
|
|
CONSTRAINT "escalation_policies_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "escalation_rules" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"policyId" TEXT NOT NULL,
|
||
|
|
"triggerType" TEXT NOT NULL,
|
||
|
|
"condition" JSONB NOT NULL,
|
||
|
|
"targetNodeId" TEXT NOT NULL,
|
||
|
|
"notify" JSONB NOT NULL,
|
||
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
|
||
|
|
CONSTRAINT "escalation_rules_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "escalation_events" (
|
||
|
|
"id" TEXT NOT NULL,
|
||
|
|
"ticketId" TEXT NOT NULL,
|
||
|
|
"ruleId" TEXT,
|
||
|
|
"fromNodeId" TEXT,
|
||
|
|
"toNodeId" TEXT,
|
||
|
|
"reason" TEXT NOT NULL,
|
||
|
|
"triggeredBy" TEXT NOT NULL,
|
||
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
|
||
|
|
CONSTRAINT "escalation_events_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "sla_policies_productId_categoryId_active_idx" ON "sla_policies"("productId", "categoryId", "active");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE UNIQUE INDEX "sla_runs_ticketId_key" ON "sla_runs"("ticketId");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "sla_runs_status_resolutionDueAt_idx" ON "sla_runs"("status", "resolutionDueAt");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "sla_runs_status_firstResponseDueAt_idx" ON "sla_runs"("status", "firstResponseDueAt");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "holidays_calendarId_date_idx" ON "holidays"("calendarId", "date");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "escalation_policies_productId_active_idx" ON "escalation_policies"("productId", "active");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "escalation_rules_policyId_triggerType_active_idx" ON "escalation_rules"("policyId", "triggerType", "active");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "escalation_events_ticketId_createdAt_idx" ON "escalation_events"("ticketId", "createdAt");
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "sla_policies" ADD CONSTRAINT "sla_policies_productId_fkey" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "sla_policies" ADD CONSTRAINT "sla_policies_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "sla_policies" ADD CONSTRAINT "sla_policies_businessCalendarId_fkey" FOREIGN KEY ("businessCalendarId") REFERENCES "business_calendars"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "sla_runs" ADD CONSTRAINT "sla_runs_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "tickets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "sla_runs" ADD CONSTRAINT "sla_runs_policyId_fkey" FOREIGN KEY ("policyId") REFERENCES "sla_policies"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "holidays" ADD CONSTRAINT "holidays_calendarId_fkey" FOREIGN KEY ("calendarId") REFERENCES "business_calendars"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "escalation_policies" ADD CONSTRAINT "escalation_policies_productId_fkey" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "escalation_rules" ADD CONSTRAINT "escalation_rules_policyId_fkey" FOREIGN KEY ("policyId") REFERENCES "escalation_policies"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "escalation_rules" ADD CONSTRAINT "escalation_rules_targetNodeId_fkey" FOREIGN KEY ("targetNodeId") REFERENCES "hierarchy_nodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "escalation_events" ADD CONSTRAINT "escalation_events_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "tickets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|