Files
carmanagement/packages/database/prisma/migrations/20260525220000_review_management/migration.sql
T
2026-05-25 18:29:05 -04:00

84 lines
2.8 KiB
SQL

-- CreateEnum: FeedbackCategory
CREATE TYPE "FeedbackCategory" AS ENUM (
'BOOKING',
'PICKUP',
'VEHICLE_CLEANLINESS',
'VEHICLE_CONDITION',
'STAFF_SERVICE',
'PRICING',
'DEPOSIT',
'INSURANCE',
'DAMAGE_CLAIM',
'RETURN_PROCESS',
'COMMUNICATION',
'ROADSIDE_ASSISTANCE',
'BILLING',
'OTHER'
);
-- CreateEnum: ComplaintSeverity
CREATE TYPE "ComplaintSeverity" AS ENUM ('LEVEL_1', 'LEVEL_2', 'LEVEL_3');
-- CreateEnum: ComplaintStatus
CREATE TYPE "ComplaintStatus" AS ENUM ('OPEN', 'INVESTIGATING', 'RESOLVED', 'CLOSED');
-- AlterTable: reviews — add category column
ALTER TABLE "reviews" ADD COLUMN "category" "FeedbackCategory";
-- AlterTable: reservations — add review tracking columns
ALTER TABLE "reservations"
ADD COLUMN "reviewRequestSentAt" TIMESTAMP(3),
ADD COLUMN "reviewReminderSentAt" TIMESTAMP(3),
ADD COLUMN "reviewFinalReminderSentAt" TIMESTAMP(3),
ADD COLUMN "reviewPaused" BOOLEAN NOT NULL DEFAULT false;
-- AlterTable: customers — add reviewOptOut column
ALTER TABLE "customers" ADD COLUMN "reviewOptOut" BOOLEAN NOT NULL DEFAULT false;
-- CreateTable: complaints
CREATE TABLE "complaints" (
"id" TEXT NOT NULL,
"companyId" TEXT NOT NULL,
"reservationId" TEXT,
"reviewId" TEXT,
"customerId" TEXT,
"severity" "ComplaintSeverity" NOT NULL DEFAULT 'LEVEL_1',
"status" "ComplaintStatus" NOT NULL DEFAULT 'OPEN',
"category" "FeedbackCategory" NOT NULL,
"subject" TEXT NOT NULL,
"description" TEXT,
"resolution" TEXT,
"notes" TEXT,
"assignedTo" TEXT,
"resolvedAt" TIMESTAMP(3),
"resolvedBy" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "complaints_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "complaints_companyId_idx" ON "complaints"("companyId");
CREATE INDEX "complaints_reservationId_idx" ON "complaints"("reservationId");
-- AddForeignKey: complaints → companies
ALTER TABLE "complaints"
ADD CONSTRAINT "complaints_companyId_fkey"
FOREIGN KEY ("companyId") REFERENCES "companies"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey: complaints → reservations
ALTER TABLE "complaints"
ADD CONSTRAINT "complaints_reservationId_fkey"
FOREIGN KEY ("reservationId") REFERENCES "reservations"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey: complaints → reviews
ALTER TABLE "complaints"
ADD CONSTRAINT "complaints_reviewId_fkey"
FOREIGN KEY ("reviewId") REFERENCES "reviews"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey: complaints → customers
ALTER TABLE "complaints"
ADD CONSTRAINT "complaints_customerId_fkey"
FOREIGN KEY ("customerId") REFERENCES "customers"("id") ON DELETE SET NULL ON UPDATE CASCADE;