84 lines
2.8 KiB
SQL
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;
|