mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 05:18:11 +00:00
Updated seat class and coach mangement
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "SeatClass" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"basePrice" INTEGER NOT NULL,
|
||||
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "SeatClass_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "SeatClass_name_key" ON "SeatClass"("name");
|
||||
|
||||
-- Seed default seat classes so existing coaches can be migrated
|
||||
INSERT INTO "SeatClass" ("id", "name", "description", "basePrice", "isActive", "createdAt", "updatedAt")
|
||||
VALUES
|
||||
('sc_economy', 'Economy Seat', 'Standard economy seating', 45000, true, NOW(), NOW()),
|
||||
('sc_business', 'Business Seat','Comfortable business class', 90000, true, NOW(), NOW()),
|
||||
('sc_first', 'VIP Bed', 'First class VIP bed', 135000, true, NOW(), NOW());
|
||||
|
||||
-- Add seatClassId column to Coach (nullable first for migration safety)
|
||||
ALTER TABLE "Coach" ADD COLUMN "seatClassId" TEXT;
|
||||
|
||||
-- Map existing serviceClass enum values to new SeatClass ids
|
||||
UPDATE "Coach" SET "seatClassId" = 'sc_economy' WHERE "serviceClass" = 'ECONOMY';
|
||||
UPDATE "Coach" SET "seatClassId" = 'sc_business' WHERE "serviceClass" = 'BUSINESS';
|
||||
UPDATE "Coach" SET "seatClassId" = 'sc_first' WHERE "serviceClass" = 'FIRST';
|
||||
|
||||
-- Make seatClassId NOT NULL now that all rows are populated
|
||||
ALTER TABLE "Coach" ALTER COLUMN "seatClassId" SET NOT NULL;
|
||||
|
||||
-- Drop old serviceClass column
|
||||
ALTER TABLE "Coach" DROP COLUMN "serviceClass";
|
||||
|
||||
-- Add seatClassId to FareRule
|
||||
ALTER TABLE "FareRule" ADD COLUMN "seatClassId" TEXT;
|
||||
|
||||
UPDATE "FareRule" SET "seatClassId" = 'sc_economy' WHERE "serviceClass" = 'ECONOMY';
|
||||
UPDATE "FareRule" SET "seatClassId" = 'sc_business' WHERE "serviceClass" = 'BUSINESS';
|
||||
UPDATE "FareRule" SET "seatClassId" = 'sc_first' WHERE "serviceClass" = 'FIRST';
|
||||
|
||||
ALTER TABLE "FareRule" ALTER COLUMN "seatClassId" SET NOT NULL;
|
||||
ALTER TABLE "FareRule" DROP COLUMN "serviceClass";
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Coach" ADD CONSTRAINT "Coach_seatClassId_fkey"
|
||||
FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "FareRule" ADD CONSTRAINT "FareRule_seatClassId_fkey"
|
||||
FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE "SeatClass" ALTER COLUMN "updatedAt" SET DEFAULT NOW();
|
||||
Reference in New Issue
Block a user