diff --git a/apps/edr-passenger-api/prisma/migrations/20240100000000_fix_failed_migration_state/migration.sql b/apps/edr-passenger-api/prisma/migrations/20240100000000_fix_failed_migration_state/migration.sql deleted file mode 100644 index a72a795c1..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20240100000000_fix_failed_migration_state/migration.sql +++ /dev/null @@ -1,10 +0,0 @@ --- This migration fixes the failed state of 20240101000000_individual_tickets_no_timezone --- It marks the failed migration as rolled back so it can be retried - --- Mark the failed migration as rolled back -UPDATE passenger._prisma_migrations -SET rolled_back_at = CURRENT_TIMESTAMP, - logs = 'Migration failed due to missing TicketSeat table. Automatically rolled back by fix migration to allow retry with idempotent SQL.' -WHERE migration_name = '20240101000000_individual_tickets_no_timezone' - AND rolled_back_at IS NULL - AND finished_at IS NULL; diff --git a/apps/edr-passenger-api/prisma/migrations/20240101000000_individual_tickets_no_timezone/migration.sql b/apps/edr-passenger-api/prisma/migrations/20240101000000_individual_tickets_no_timezone/migration.sql deleted file mode 100644 index 44d778635..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20240101000000_individual_tickets_no_timezone/migration.sql +++ /dev/null @@ -1,77 +0,0 @@ --- DropForeignKey (only if table exists) -DO $$ -BEGIN - IF EXISTS ( - SELECT FROM information_schema.tables - WHERE table_schema = 'passenger' - AND table_name = 'TicketSeat' - ) THEN - ALTER TABLE "passenger"."TicketSeat" DROP CONSTRAINT IF EXISTS "TicketSeat_seatId_fkey"; - ALTER TABLE "passenger"."TicketSeat" DROP CONSTRAINT IF EXISTS "TicketSeat_ticketId_fkey"; - END IF; -END $$; - --- DropIndex -DROP INDEX IF EXISTS "passenger"."Ticket_bookingId_key"; - --- AlterTable: Station -ALTER TABLE "passenger"."Station" DROP COLUMN IF EXISTS "timezone"; - --- AlterTable: Ticket — add columns with safe defaults -ALTER TABLE "passenger"."Ticket" - ADD COLUMN IF NOT EXISTS "leg" INTEGER NOT NULL DEFAULT 1, - ADD COLUMN IF NOT EXISTS "passengerName" TEXT NOT NULL DEFAULT '', - ADD COLUMN IF NOT EXISTS "scheduleId" TEXT, - ADD COLUMN IF NOT EXISTS "seatId" TEXT NOT NULL DEFAULT ''; - --- DropTable -DROP TABLE IF EXISTS "passenger"."TicketSeat"; - --- Remove GateValidationLog rows referencing orphan tickets first (only if tickets have seatId column) -DO $$ -BEGIN - IF EXISTS ( - SELECT FROM information_schema.columns - WHERE table_schema = 'passenger' - AND table_name = 'Ticket' - AND column_name = 'seatId' - ) THEN - DELETE FROM "passenger"."GateValidationLog" - WHERE "ticketId" IN ( - SELECT "id" FROM "passenger"."Ticket" - WHERE "seatId" = '' - OR "seatId" NOT IN (SELECT "id" FROM "passenger"."Seat") - ); - - -- Remove orphan ticket rows - DELETE FROM "passenger"."Ticket" - WHERE "seatId" = '' - OR "seatId" NOT IN (SELECT "id" FROM "passenger"."Seat"); - END IF; -END $$; - --- CreateIndex -CREATE INDEX IF NOT EXISTS "Ticket_bookingId_idx" ON "passenger"."Ticket"("bookingId"); - --- CreateIndex -CREATE INDEX IF NOT EXISTS "Ticket_seatId_idx" ON "passenger"."Ticket"("seatId"); - --- AddForeignKey (only if not already exists) -DO $$ -BEGIN - IF EXISTS ( - SELECT FROM information_schema.columns - WHERE table_schema = 'passenger' - AND table_name = 'Ticket' - AND column_name = 'seatId' - ) AND NOT EXISTS ( - SELECT FROM information_schema.table_constraints - WHERE constraint_schema = 'passenger' - AND constraint_name = 'Ticket_seatId_fkey' - ) THEN - ALTER TABLE "passenger"."Ticket" - ADD CONSTRAINT "Ticket_seatId_fkey" - FOREIGN KEY ("seatId") REFERENCES "passenger"."Seat"("id") - ON DELETE RESTRICT ON UPDATE CASCADE; - END IF; -END $$; diff --git a/apps/edr-passenger-api/prisma/migrations/20240102000000_drop_ticket_column_defaults/migration.sql b/apps/edr-passenger-api/prisma/migrations/20240102000000_drop_ticket_column_defaults/migration.sql deleted file mode 100644 index 0e9961c0a..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20240102000000_drop_ticket_column_defaults/migration.sql +++ /dev/null @@ -1,3 +0,0 @@ --- Drop temporary defaults that were only needed for the backfill -ALTER TABLE "passenger"."Ticket" ALTER COLUMN "passengerName" DROP DEFAULT; -ALTER TABLE "passenger"."Ticket" ALTER COLUMN "seatId" DROP DEFAULT; diff --git a/apps/edr-passenger-api/prisma/migrations/20241201000000_remove_station_timezone/migration.sql b/apps/edr-passenger-api/prisma/migrations/20241201000000_remove_station_timezone/migration.sql deleted file mode 100644 index 028b08500..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20241201000000_remove_station_timezone/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- Remove timezone column if it still exists -ALTER TABLE "passenger"."Station" DROP COLUMN IF EXISTS "timezone"; \ No newline at end of file diff --git a/apps/edr-passenger-api/prisma/migrations/20250106070000_add_gender_to_traveler_profile/migration.sql b/apps/edr-passenger-api/prisma/migrations/20250106070000_add_gender_to_traveler_profile/migration.sql deleted file mode 100644 index e9ba7761b..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20250106070000_add_gender_to_traveler_profile/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "passenger"."TravelerProfile" ADD COLUMN "gender" TEXT; diff --git a/apps/edr-passenger-api/prisma/migrations/20260101000000_add_configurable_fare_system/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260101000000_add_configurable_fare_system/migration.sql deleted file mode 100644 index 4b1fbd19c..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260101000000_add_configurable_fare_system/migration.sql +++ /dev/null @@ -1,127 +0,0 @@ --- Migration: Add Configurable Fare Management System - --- Main fare configuration table -CREATE TABLE IF NOT EXISTS "fare_configurations" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "effective_date" TIMESTAMP(3) NOT NULL, - "expiry_date" TIMESTAMP(3), - "is_active" BOOLEAN NOT NULL DEFAULT false, - "is_default" BOOLEAN NOT NULL DEFAULT false, - "created_by" TEXT, - "approved_by" TEXT, - "approved_at" TIMESTAMP(3), - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "fare_configurations_pkey" PRIMARY KEY ("id") -); - --- Rate structure by nationality and coach/position -CREATE TABLE IF NOT EXISTS "fare_rate_rules" ( - "id" TEXT NOT NULL, - "fare_config_id" TEXT NOT NULL, - "nationality_type" TEXT NOT NULL, -- 'LOCAL' or 'INTERNATIONAL' - "coach_type" TEXT NOT NULL, -- 'REGULAR_SEAT', 'ECONOMY_BED', 'VIP_BED' - "bed_position" TEXT, -- 'UPPER', 'MIDDLE', 'LOWER', NULL for seats - "rate_per_km_minor" INTEGER NOT NULL, - "is_active" BOOLEAN NOT NULL DEFAULT true, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "fare_rate_rules_pkey" PRIMARY KEY ("id") -); - --- Configurable fare components (insurance, premiums, service charges, taxes) -CREATE TABLE IF NOT EXISTS "fare_components" ( - "id" TEXT NOT NULL, - "fare_config_id" TEXT NOT NULL, - "component_type" TEXT NOT NULL, -- 'INSURANCE', 'PREMIUM', 'SERVICE_CHARGE', 'TAX', 'DEMAND' - "component_name" TEXT NOT NULL, - "calculation_method" TEXT NOT NULL, -- 'MULTIPLIER', 'PERCENTAGE', 'FIXED_AMOUNT' - "value_minor" INTEGER, -- For fixed amounts - "percentage_value" DECIMAL(10,6), -- For percentages (e.g., 0.02 for 2%) - "applies_to" TEXT NOT NULL DEFAULT 'SUBTOTAL', -- 'BASE_FARE', 'SUBTOTAL', 'TOTAL' - "apply_order" INTEGER NOT NULL DEFAULT 1, -- Order of application - "is_active" BOOLEAN NOT NULL DEFAULT true, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "fare_components_pkey" PRIMARY KEY ("id") -); - --- Age-based pricing rules -CREATE TABLE IF NOT EXISTS "age_pricing_rules" ( - "id" TEXT NOT NULL, - "fare_config_id" TEXT NOT NULL, - "rule_name" TEXT NOT NULL, - "min_age" INTEGER NOT NULL, - "max_age" INTEGER, - "pricing_type" TEXT NOT NULL, -- 'FREE', 'FULL_FARE', 'DISCOUNTED' - "discount_percentage" DECIMAL(5,4), -- For discounted fares - "max_free_passengers" INTEGER, -- For free fares (e.g., 1 free child) - "applies_to_components" BOOLEAN NOT NULL DEFAULT false, -- Whether discount applies to components too - "is_active" BOOLEAN NOT NULL DEFAULT true, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "age_pricing_rules_pkey" PRIMARY KEY ("id") -); - --- Audit trail for configuration changes -CREATE TABLE IF NOT EXISTS "fare_configuration_audit" ( - "id" TEXT NOT NULL, - "fare_config_id" TEXT NOT NULL, - "action" TEXT NOT NULL, -- 'CREATED', 'UPDATED', 'ACTIVATED', 'DEACTIVATED' - "changed_by" TEXT, - "changes" JSONB, -- Store the actual changes made - "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "fare_configuration_audit_pkey" PRIMARY KEY ("id") -); - --- Foreign key constraints (idempotent) -DO $$ BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fare_rate_rules_fare_config_id_fkey') THEN - ALTER TABLE "fare_rate_rules" ADD CONSTRAINT "fare_rate_rules_fare_config_id_fkey" FOREIGN KEY ("fare_config_id") REFERENCES "fare_configurations"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; - IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fare_components_fare_config_id_fkey') THEN - ALTER TABLE "fare_components" ADD CONSTRAINT "fare_components_fare_config_id_fkey" FOREIGN KEY ("fare_config_id") REFERENCES "fare_configurations"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; - IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'age_pricing_rules_fare_config_id_fkey') THEN - ALTER TABLE "age_pricing_rules" ADD CONSTRAINT "age_pricing_rules_fare_config_id_fkey" FOREIGN KEY ("fare_config_id") REFERENCES "fare_configurations"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; - IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fare_configuration_audit_fare_config_id_fkey') THEN - ALTER TABLE "fare_configuration_audit" ADD CONSTRAINT "fare_configuration_audit_fare_config_id_fkey" FOREIGN KEY ("fare_config_id") REFERENCES "fare_configurations"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; -END $$; - --- Indexes for performance (idempotent) -CREATE INDEX IF NOT EXISTS "fare_configurations_effective_date_idx" ON "fare_configurations"("effective_date"); -CREATE INDEX IF NOT EXISTS "fare_configurations_is_active_idx" ON "fare_configurations"("is_active"); -CREATE UNIQUE INDEX IF NOT EXISTS "fare_configurations_default_unique_idx" ON "fare_configurations"("is_default") WHERE "is_default" = true; - -CREATE INDEX IF NOT EXISTS "fare_rate_rules_config_lookup_idx" ON "fare_rate_rules"("fare_config_id", "nationality_type", "coach_type", "bed_position"); -CREATE INDEX IF NOT EXISTS "fare_components_config_order_idx" ON "fare_components"("fare_config_id", "apply_order"); -CREATE INDEX IF NOT EXISTS "age_pricing_rules_age_lookup_idx" ON "age_pricing_rules"("fare_config_id", "min_age", "max_age"); - --- Add legacy mode flag to existing fare tables for gradual migration (idempotent) -ALTER TABLE "passenger"."FareRule" ADD COLUMN IF NOT EXISTS "migrated_to_config_id" TEXT; -ALTER TABLE "passenger"."SegmentFareRule" ADD COLUMN IF NOT EXISTS "migrated_to_config_id" TEXT; - --- Add feature flag support -CREATE TABLE IF NOT EXISTS "system_features" ( - "id" TEXT NOT NULL, - "feature_name" TEXT NOT NULL UNIQUE, - "is_enabled" BOOLEAN NOT NULL DEFAULT false, - "config" JSONB, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "system_features_pkey" PRIMARY KEY ("id") -); - --- Insert the configurable fares feature flag -INSERT INTO "system_features" ("id", "feature_name", "is_enabled", "config", "updated_at") -VALUES ('cf-001', 'USE_CONFIGURABLE_FARES', false, '{"rollout_percentage": 0}', CURRENT_TIMESTAMP); diff --git a/apps/edr-passenger-api/prisma/migrations/20260606000000_add_iam_user_id_to_passenger/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260606000000_add_iam_user_id_to_passenger/migration.sql deleted file mode 100644 index 9ccd3d52e..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260606000000_add_iam_user_id_to_passenger/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ --- AddColumn: iamUserId to Passenger (cross-schema reference to iam.users — no FK enforced) -ALTER TABLE "passenger"."Passenger" ADD COLUMN "iamUserId" TEXT; - --- Unique constraint: one IAM user maps to exactly one Passenger -ALTER TABLE "passenger"."Passenger" ADD CONSTRAINT "Passenger_iamUserId_key" UNIQUE ("iamUserId"); - --- Index for fast lookup by iamUserId on every protected request -CREATE INDEX "Passenger_iamUserId_idx" ON "passenger"."Passenger"("iamUserId"); - --- AddColumn: iamUserId to FaydaVerificationSession (no FK — cross-schema reference to iam.users) -ALTER TABLE "passenger"."FaydaVerificationSession" ADD COLUMN "iamUserId" TEXT; - --- Index for Fayda callback to resolve IAM user -CREATE INDEX "FaydaVerificationSession_iamUserId_idx" ON "passenger"."FaydaVerificationSession"("iamUserId"); diff --git a/apps/edr-passenger-api/prisma/migrations/20260607140721_add_segment_fare_rule/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260607140721_add_segment_fare_rule/migration.sql deleted file mode 100644 index 525b6572e..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260607140721_add_segment_fare_rule/migration.sql +++ /dev/null @@ -1,28 +0,0 @@ --- CreateTable -CREATE TABLE "SegmentFareRule" ( - "id" TEXT NOT NULL, - "routeId" TEXT NOT NULL, - "originStopSequence" INTEGER NOT NULL, - "destinationStopSequence" INTEGER NOT NULL, - "seatClassId" TEXT NOT NULL, - "baseFareMinor" INTEGER NOT NULL, - "nationality" TEXT, - "currency" TEXT NOT NULL DEFAULT 'ETB', - "validFrom" TIMESTAMP(3) NOT NULL, - "validUntil" TIMESTAMP(3), - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "SegmentFareRule_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "SegmentFareRule_routeId_seatClassId_idx" ON "SegmentFareRule"("routeId", "seatClassId"); - --- CreateIndex -CREATE UNIQUE INDEX "SegmentFareRule_routeId_originStopSequence_destinationStopS_key" ON "SegmentFareRule"("routeId", "originStopSequence", "destinationStopSequence", "seatClassId", "nationality"); - --- AddForeignKey -ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "Route"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/edr-passenger-api/prisma/migrations/20260608061918_make_passenger_userid_nullable/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260608061918_make_passenger_userid_nullable/migration.sql deleted file mode 100644 index f2250e52b..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260608061918_make_passenger_userid_nullable/migration.sql +++ /dev/null @@ -1,54 +0,0 @@ --- DropForeignKey -ALTER TABLE "passenger"."Passenger" DROP CONSTRAINT IF EXISTS "Passenger_userId_fkey"; - --- AlterTable -ALTER TABLE "passenger"."Passenger" ALTER COLUMN "userId" DROP NOT NULL; - --- CreateTable -CREATE TABLE IF NOT EXISTS "passenger"."TicketSeat" ( - "id" TEXT NOT NULL, - "ticketId" TEXT NOT NULL, - "seatId" TEXT NOT NULL, - "seatIndex" INTEGER NOT NULL DEFAULT 0, - - CONSTRAINT "TicketSeat_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX IF NOT EXISTS "TicketSeat_ticketId_idx" ON "passenger"."TicketSeat"("ticketId"); - --- CreateIndex -CREATE INDEX IF NOT EXISTS "TicketSeat_seatId_idx" ON "passenger"."TicketSeat"("seatId"); - --- AddForeignKey -DO $$ BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint WHERE conname = 'Passenger_userId_fkey' - AND conrelid = 'passenger."Passenger"'::regclass - ) THEN - ALTER TABLE "passenger"."Passenger" ADD CONSTRAINT "Passenger_userId_fkey" - FOREIGN KEY ("userId") REFERENCES "passenger"."User"("id") ON DELETE SET NULL ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey -DO $$ BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint WHERE conname = 'TicketSeat_ticketId_fkey' - AND conrelid = 'passenger."TicketSeat"'::regclass - ) THEN - ALTER TABLE "passenger"."TicketSeat" ADD CONSTRAINT "TicketSeat_ticketId_fkey" - FOREIGN KEY ("ticketId") REFERENCES "passenger"."Ticket"("id") ON DELETE CASCADE ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey -DO $$ BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint WHERE conname = 'TicketSeat_seatId_fkey' - AND conrelid = 'passenger."TicketSeat"'::regclass - ) THEN - ALTER TABLE "passenger"."TicketSeat" ADD CONSTRAINT "TicketSeat_seatId_fkey" - FOREIGN KEY ("seatId") REFERENCES "passenger"."Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - END IF; -END $$; diff --git a/apps/edr-passenger-api/prisma/migrations/20260608080000_rename_userid_to_iamuserid_on_preferences_device_fraudalert/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260608080000_rename_userid_to_iamuserid_on_preferences_device_fraudalert/migration.sql deleted file mode 100644 index ec1cfd078..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260608080000_rename_userid_to_iamuserid_on_preferences_device_fraudalert/migration.sql +++ /dev/null @@ -1,13 +0,0 @@ --- Drop FK constraints (they reference iam.users indirectly via local User, but these are within passenger schema) -ALTER TABLE passenger."UserPreferences" DROP CONSTRAINT IF EXISTS "UserPreferences_userId_fkey"; -ALTER TABLE passenger."Device" DROP CONSTRAINT IF EXISTS "Device_userId_fkey"; -ALTER TABLE passenger."FraudAlert" DROP CONSTRAINT IF EXISTS "FraudAlert_userId_fkey"; - --- Rename columns (preserves all existing data) -ALTER TABLE passenger."UserPreferences" RENAME COLUMN "userId" TO "iamUserId"; -ALTER TABLE passenger."Device" RENAME COLUMN "userId" TO "iamUserId"; -ALTER TABLE passenger."FraudAlert" RENAME COLUMN "userId" TO "iamUserId"; - --- Rename indexes on FraudAlert to match new column name -DROP INDEX IF EXISTS passenger."FraudAlert_userId_createdAt_idx"; -CREATE INDEX "FraudAlert_iamUserId_createdAt_idx" ON passenger."FraudAlert"("iamUserId", "createdAt"); diff --git a/apps/edr-passenger-api/prisma/migrations/20260608090000_rename_auditlog_userid_drop_fayda_userid/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260608090000_rename_auditlog_userid_drop_fayda_userid/migration.sql deleted file mode 100644 index 52914b220..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260608090000_rename_auditlog_userid_drop_fayda_userid/migration.sql +++ /dev/null @@ -1,10 +0,0 @@ --- AuditLog: drop FK, rename column, update index -ALTER TABLE passenger."AuditLog" DROP CONSTRAINT IF EXISTS "AuditLog_userId_fkey"; -ALTER TABLE passenger."AuditLog" RENAME COLUMN "userId" TO "iamUserId"; -DROP INDEX IF EXISTS passenger."AuditLog_userId_createdAt_idx"; -CREATE INDEX IF NOT EXISTS "AuditLog_iamUserId_createdAt_idx" ON passenger."AuditLog"("iamUserId", "createdAt"); - --- FaydaVerificationSession: drop userId column and FK (iamUserId already carries this data) -ALTER TABLE passenger."FaydaVerificationSession" DROP CONSTRAINT IF EXISTS "FaydaVerificationSession_userId_fkey"; -ALTER TABLE passenger."FaydaVerificationSession" DROP COLUMN IF EXISTS "userId"; -DROP INDEX IF EXISTS passenger."FaydaVerificationSession_userId_idx"; diff --git a/apps/edr-passenger-api/prisma/migrations/20260609065750_add_blocked_until_to_passenger/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260609065750_add_blocked_until_to_passenger/migration.sql deleted file mode 100644 index 125074c12..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260609065750_add_blocked_until_to_passenger/migration.sql +++ /dev/null @@ -1,5 +0,0 @@ --- AlterTable -ALTER TABLE "Passenger" ADD COLUMN "blockedUntil" TIMESTAMP(3); - --- RenameIndex -ALTER INDEX "UserPreferences_userId_key" RENAME TO "UserPreferences_iamUserId_key"; diff --git a/apps/edr-passenger-api/prisma/migrations/20260615132114_add_dmoney_to_payment_method/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260615132114_add_dmoney_to_payment_method/migration.sql deleted file mode 100644 index 9b9228768..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260615132114_add_dmoney_to_payment_method/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterEnum -ALTER TYPE "PaymentMethodType" ADD VALUE 'DMONEY'; diff --git a/apps/edr-passenger-api/prisma/migrations/20260617042447_add_return_schedule_id/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260617042447_add_return_schedule_id/migration.sql deleted file mode 100644 index 577312395..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260617042447_add_return_schedule_id/migration.sql +++ /dev/null @@ -1,275 +0,0 @@ --- DropForeignKey -ALTER TABLE "AgentBooking" DROP CONSTRAINT "AgentBooking_agentId_fkey"; - --- DropForeignKey -ALTER TABLE "AgentBooking" DROP CONSTRAINT "AgentBooking_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "AgentCommission" DROP CONSTRAINT "AgentCommission_agentId_fkey"; - --- DropForeignKey -ALTER TABLE "AgentShift" DROP CONSTRAINT "AgentShift_agentId_fkey"; - --- DropForeignKey -ALTER TABLE "BaggageBooking" DROP CONSTRAINT "BaggageBooking_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "Booking" DROP CONSTRAINT "Booking_passengerId_fkey"; - --- DropForeignKey -ALTER TABLE "Booking" DROP CONSTRAINT "Booking_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingCancellation" DROP CONSTRAINT "BookingCancellation_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingModification" DROP CONSTRAINT "BookingModification_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingSeat" DROP CONSTRAINT "BookingSeat_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingSeat" DROP CONSTRAINT "BookingSeat_seatId_fkey"; - --- DropForeignKey -ALTER TABLE "Coach" DROP CONSTRAINT "Coach_coachTypeId_fkey"; - --- DropForeignKey -ALTER TABLE "CoachAssignment" DROP CONSTRAINT "CoachAssignment_coachId_fkey"; - --- DropForeignKey -ALTER TABLE "CoachAssignment" DROP CONSTRAINT "CoachAssignment_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "FaqArticle" DROP CONSTRAINT "FaqArticle_categoryId_fkey"; - --- DropForeignKey -ALTER TABLE "FareRule" DROP CONSTRAINT "FareRule_seatClassId_fkey"; - --- DropForeignKey -ALTER TABLE "FoodOrder" DROP CONSTRAINT "FoodOrder_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "FoodOrderItem" DROP CONSTRAINT "FoodOrderItem_orderId_fkey"; - --- DropForeignKey -ALTER TABLE "GateValidationLog" DROP CONSTRAINT "GateValidationLog_ticketId_fkey"; - --- DropForeignKey -ALTER TABLE "JourneySegment" DROP CONSTRAINT "JourneySegment_journeyId_fkey"; - --- DropForeignKey -ALTER TABLE "JourneySegment" DROP CONSTRAINT "JourneySegment_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "LoyaltyLedgerEntry" DROP CONSTRAINT "LoyaltyLedgerEntry_accountId_fkey"; - --- DropForeignKey -ALTER TABLE "LoyaltyReward" DROP CONSTRAINT "LoyaltyReward_accountId_fkey"; - --- DropForeignKey -ALTER TABLE "MenuItem" DROP CONSTRAINT "MenuItem_categoryId_fkey"; - --- DropForeignKey -ALTER TABLE "MenuItem" DROP CONSTRAINT "MenuItem_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "Notification" DROP CONSTRAINT "Notification_passengerId_fkey"; - --- DropForeignKey -ALTER TABLE "PaymentIntent" DROP CONSTRAINT "PaymentIntent_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "PaymentRefund" DROP CONSTRAINT "PaymentRefund_paymentIntentId_fkey"; - --- DropForeignKey -ALTER TABLE "RouteFareRule" DROP CONSTRAINT "RouteFareRule_seatClassId_fkey"; - --- DropForeignKey -ALTER TABLE "SavedRoute" DROP CONSTRAINT "SavedRoute_passengerId_fkey"; - --- DropForeignKey -ALTER TABLE "SeatBlock" DROP CONSTRAINT "SeatBlock_seatId_fkey"; - --- DropForeignKey -ALTER TABLE "SegmentFareRule" DROP CONSTRAINT "SegmentFareRule_seatClassId_fkey"; - --- DropForeignKey -ALTER TABLE "StationCrowdSignal" DROP CONSTRAINT "StationCrowdSignal_stationId_fkey"; - --- DropForeignKey -ALTER TABLE "SupportMessage" DROP CONSTRAINT "SupportMessage_conversationId_fkey"; - --- DropForeignKey -ALTER TABLE "Ticket" DROP CONSTRAINT "Ticket_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "TicketSeat" DROP CONSTRAINT "TicketSeat_seatId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_destinationStationId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_originStationId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_routeId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_trainId_fkey"; - --- DropForeignKey -ALTER TABLE "TripLiveStatus" DROP CONSTRAINT "TripLiveStatus_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "TripStopTime" DROP CONSTRAINT "TripStopTime_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "WalletLedgerEntry" DROP CONSTRAINT "WalletLedgerEntry_walletId_fkey"; - --- AlterTable -ALTER TABLE "Booking" ADD COLUMN "returnDestinationStationId" TEXT, -ADD COLUMN "returnHoldId" TEXT, -ADD COLUMN "returnOriginStationId" TEXT, -ADD COLUMN "returnScheduleId" TEXT, -ADD COLUMN "returnSeatClassId" TEXT; - --- AlterTable -ALTER TABLE "SeatClass" ALTER COLUMN "baseFareMinor" SET DEFAULT 0; - --- AlterTable -ALTER TABLE "Ticket" ALTER COLUMN "status" SET DEFAULT 'ACTIVE'; - --- gender column already TEXT from init migration - --- CreateIndex -CREATE INDEX "Booking_bookingType_idx" ON "Booking"("bookingType"); - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_trainId_fkey" FOREIGN KEY ("trainId") REFERENCES "Train"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "Route"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_originStationId_fkey" FOREIGN KEY ("originStationId") REFERENCES "Station"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_destinationStationId_fkey" FOREIGN KEY ("destinationStationId") REFERENCES "Station"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TripStopTime" ADD CONSTRAINT "TripStopTime_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TripLiveStatus" ADD CONSTRAINT "TripLiveStatus_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Coach" ADD CONSTRAINT "Coach_coachTypeId_fkey" FOREIGN KEY ("coachTypeId") REFERENCES "CoachType"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "CoachAssignment" ADD CONSTRAINT "CoachAssignment_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "CoachAssignment" ADD CONSTRAINT "CoachAssignment_coachId_fkey" FOREIGN KEY ("coachId") REFERENCES "Coach"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FareRule" ADD CONSTRAINT "FareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PaymentIntent" ADD CONSTRAINT "PaymentIntent_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PaymentRefund" ADD CONSTRAINT "PaymentRefund_paymentIntentId_fkey" FOREIGN KEY ("paymentIntentId") REFERENCES "PaymentIntent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Ticket" ADD CONSTRAINT "Ticket_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TicketSeat" ADD CONSTRAINT "TicketSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "LoyaltyLedgerEntry" ADD CONSTRAINT "LoyaltyLedgerEntry_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "LoyaltyAccount"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "LoyaltyReward" ADD CONSTRAINT "LoyaltyReward_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "LoyaltyAccount"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "WalletLedgerEntry" ADD CONSTRAINT "WalletLedgerEntry_walletId_fkey" FOREIGN KEY ("walletId") REFERENCES "WalletAccount"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Notification" ADD CONSTRAINT "Notification_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "StationCrowdSignal" ADD CONSTRAINT "StationCrowdSignal_stationId_fkey" FOREIGN KEY ("stationId") REFERENCES "Station"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MenuItem" ADD CONSTRAINT "MenuItem_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MenuItem" ADD CONSTRAINT "MenuItem_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "MenuCategory"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FoodOrder" ADD CONSTRAINT "FoodOrder_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FoodOrderItem" ADD CONSTRAINT "FoodOrderItem_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "FoodOrder"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FaqArticle" ADD CONSTRAINT "FaqArticle_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "FaqCategory"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SupportMessage" ADD CONSTRAINT "SupportMessage_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "SupportConversation"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SavedRoute" ADD CONSTRAINT "SavedRoute_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_journeyId_fkey" FOREIGN KEY ("journeyId") REFERENCES "Journey"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "RouteFareRule" ADD CONSTRAINT "RouteFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentShift" ADD CONSTRAINT "AgentShift_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentCommission" ADD CONSTRAINT "AgentCommission_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingModification" ADD CONSTRAINT "BookingModification_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingCancellation" ADD CONSTRAINT "BookingCancellation_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "GateValidationLog" ADD CONSTRAINT "GateValidationLog_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "Ticket"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BaggageBooking" ADD CONSTRAINT "BaggageBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SeatBlock" ADD CONSTRAINT "SeatBlock_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/edr-passenger-api/prisma/migrations/20260618120000_ensure_booking_seat_leg_column/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260618120000_ensure_booking_seat_leg_column/migration.sql deleted file mode 100644 index 7e7d9bd58..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260618120000_ensure_booking_seat_leg_column/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- Empty placeholder migration -SELECT 1; diff --git a/apps/edr-passenger-api/prisma/migrations/20260620_complete_schema_sync/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260620_complete_schema_sync/migration.sql deleted file mode 100644 index 1673a795b..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260620_complete_schema_sync/migration.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE INDEX IF NOT EXISTS "Station_sequence_idx" ON "Station"("sequence"); - -CREATE INDEX IF NOT EXISTS "Coach_sequence_idx" ON "Coach"("sequence"); - --- Ensure all indexes exist -CREATE INDEX IF NOT EXISTS "Station_city_countryCode_idx" ON "Station"("city", "countryCode"); -CREATE INDEX IF NOT EXISTS "Coach_coachTypeId_idx" ON "Coach"("coachTypeId"); -CREATE INDEX IF NOT EXISTS "TrainSchedule_departureAt_originStationId_idx" ON "TrainSchedule"("departureAt", "originStationId"); -CREATE INDEX IF NOT EXISTS "Booking_passengerId_status_idx" ON "Booking"("passengerId", "status"); diff --git a/apps/edr-passenger-api/prisma/migrations/20260621_add_cascade_deletes/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260621_add_cascade_deletes/migration.sql deleted file mode 100644 index 9f70a96b1..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260621_add_cascade_deletes/migration.sql +++ /dev/null @@ -1,164 +0,0 @@ --- Add CASCADE delete to all foreign key constraints that are missing it - --- TrainSchedule relations -ALTER TABLE "TrainSchedule" DROP CONSTRAINT IF EXISTS "TrainSchedule_trainId_fkey"; -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_trainId_fkey" FOREIGN KEY ("trainId") REFERENCES "Train"("id") ON DELETE CASCADE; - -ALTER TABLE "TrainSchedule" DROP CONSTRAINT IF EXISTS "TrainSchedule_routeId_fkey"; -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "Route"("id") ON DELETE CASCADE; - -ALTER TABLE "TrainSchedule" DROP CONSTRAINT IF EXISTS "TrainSchedule_originStationId_fkey"; -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_originStationId_fkey" FOREIGN KEY ("originStationId") REFERENCES "Station"("id") ON DELETE CASCADE; - -ALTER TABLE "TrainSchedule" DROP CONSTRAINT IF EXISTS "TrainSchedule_destinationStationId_fkey"; -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_destinationStationId_fkey" FOREIGN KEY ("destinationStationId") REFERENCES "Station"("id") ON DELETE CASCADE; - --- Coach relation -ALTER TABLE "Coach" DROP CONSTRAINT IF EXISTS "Coach_coachTypeId_fkey"; -ALTER TABLE "Coach" ADD CONSTRAINT "Coach_coachTypeId_fkey" FOREIGN KEY ("coachTypeId") REFERENCES "CoachType"("id") ON DELETE CASCADE; - --- CoachAssignment relations -ALTER TABLE "CoachAssignment" DROP CONSTRAINT IF EXISTS "CoachAssignment_scheduleId_fkey"; -ALTER TABLE "CoachAssignment" ADD CONSTRAINT "CoachAssignment_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE CASCADE; - -ALTER TABLE "CoachAssignment" DROP CONSTRAINT IF EXISTS "CoachAssignment_coachId_fkey"; -ALTER TABLE "CoachAssignment" ADD CONSTRAINT "CoachAssignment_coachId_fkey" FOREIGN KEY ("coachId") REFERENCES "Coach"("id") ON DELETE CASCADE; - --- Booking relations -ALTER TABLE "Booking" DROP CONSTRAINT IF EXISTS "Booking_passengerId_fkey"; -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE CASCADE; - -ALTER TABLE "Booking" DROP CONSTRAINT IF EXISTS "Booking_scheduleId_fkey"; -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE CASCADE; - --- BookingSeat relations -ALTER TABLE "BookingSeat" DROP CONSTRAINT IF EXISTS "BookingSeat_bookingId_fkey"; -ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - -ALTER TABLE "BookingSeat" DROP CONSTRAINT IF EXISTS "BookingSeat_seatId_fkey"; -ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE CASCADE; - --- PaymentIntent -ALTER TABLE "PaymentIntent" DROP CONSTRAINT IF EXISTS "PaymentIntent_bookingId_fkey"; -ALTER TABLE "PaymentIntent" ADD CONSTRAINT "PaymentIntent_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- PaymentRefund -ALTER TABLE "PaymentRefund" DROP CONSTRAINT IF EXISTS "PaymentRefund_paymentIntentId_fkey"; -ALTER TABLE "PaymentRefund" ADD CONSTRAINT "PaymentRefund_paymentIntentId_fkey" FOREIGN KEY ("paymentIntentId") REFERENCES "PaymentIntent"("id") ON DELETE CASCADE; - --- Ticket -ALTER TABLE "Ticket" DROP CONSTRAINT IF EXISTS "Ticket_bookingId_fkey"; -ALTER TABLE "Ticket" ADD CONSTRAINT "Ticket_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- TicketSeat -ALTER TABLE "TicketSeat" DROP CONSTRAINT IF EXISTS "TicketSeat_seatId_fkey"; -ALTER TABLE "TicketSeat" ADD CONSTRAINT "TicketSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE CASCADE; - --- WalletLedgerEntry -ALTER TABLE "WalletLedgerEntry" DROP CONSTRAINT IF EXISTS "WalletLedgerEntry_walletId_fkey"; -ALTER TABLE "WalletLedgerEntry" ADD CONSTRAINT "WalletLedgerEntry_walletId_fkey" FOREIGN KEY ("walletId") REFERENCES "WalletAccount"("id") ON DELETE CASCADE; - --- Notification -ALTER TABLE "Notification" DROP CONSTRAINT IF EXISTS "Notification_passengerId_fkey"; -ALTER TABLE "Notification" ADD CONSTRAINT "Notification_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE CASCADE; - --- MenuItem -ALTER TABLE "MenuItem" DROP CONSTRAINT IF EXISTS "MenuItem_scheduleId_fkey"; -ALTER TABLE "MenuItem" ADD CONSTRAINT "MenuItem_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE CASCADE; - -ALTER TABLE "MenuItem" DROP CONSTRAINT IF EXISTS "MenuItem_categoryId_fkey"; -ALTER TABLE "MenuItem" ADD CONSTRAINT "MenuItem_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "MenuCategory"("id") ON DELETE CASCADE; - --- FoodOrder -ALTER TABLE "FoodOrder" DROP CONSTRAINT IF EXISTS "FoodOrder_bookingId_fkey"; -ALTER TABLE "FoodOrder" ADD CONSTRAINT "FoodOrder_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- FoodOrderItem -ALTER TABLE "FoodOrderItem" DROP CONSTRAINT IF EXISTS "FoodOrderItem_orderId_fkey"; -ALTER TABLE "FoodOrderItem" ADD CONSTRAINT "FoodOrderItem_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "FoodOrder"("id") ON DELETE CASCADE; - --- FaqArticle -ALTER TABLE "FaqArticle" DROP CONSTRAINT IF EXISTS "FaqArticle_categoryId_fkey"; -ALTER TABLE "FaqArticle" ADD CONSTRAINT "FaqArticle_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "FaqCategory"("id") ON DELETE CASCADE; - --- SupportMessage -ALTER TABLE "SupportMessage" DROP CONSTRAINT IF EXISTS "SupportMessage_conversationId_fkey"; -ALTER TABLE "SupportMessage" ADD CONSTRAINT "SupportMessage_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "SupportConversation"("id") ON DELETE CASCADE; - --- TripStopTime -ALTER TABLE "TripStopTime" DROP CONSTRAINT IF EXISTS "TripStopTime_scheduleId_fkey"; -ALTER TABLE "TripStopTime" ADD CONSTRAINT "TripStopTime_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE CASCADE; - --- TripLiveStatus -ALTER TABLE "TripLiveStatus" DROP CONSTRAINT IF EXISTS "TripLiveStatus_scheduleId_fkey"; -ALTER TABLE "TripLiveStatus" ADD CONSTRAINT "TripLiveStatus_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE CASCADE; - --- JourneySegment -ALTER TABLE "JourneySegment" DROP CONSTRAINT IF EXISTS "JourneySegment_journeyId_fkey"; -ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_journeyId_fkey" FOREIGN KEY ("journeyId") REFERENCES "Journey"("id") ON DELETE CASCADE; - -ALTER TABLE "JourneySegment" DROP CONSTRAINT IF EXISTS "JourneySegment_scheduleId_fkey"; -ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE CASCADE; - --- AgentBooking -ALTER TABLE "AgentBooking" DROP CONSTRAINT IF EXISTS "AgentBooking_agentId_fkey"; -ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE; - -ALTER TABLE "AgentBooking" DROP CONSTRAINT IF EXISTS "AgentBooking_bookingId_fkey"; -ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- AgentShift -ALTER TABLE "AgentShift" DROP CONSTRAINT IF EXISTS "AgentShift_agentId_fkey"; -ALTER TABLE "AgentShift" ADD CONSTRAINT "AgentShift_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE; - --- AgentCommission -ALTER TABLE "AgentCommission" DROP CONSTRAINT IF EXISTS "AgentCommission_agentId_fkey"; -ALTER TABLE "AgentCommission" ADD CONSTRAINT "AgentCommission_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE; - --- BookingModification -ALTER TABLE "BookingModification" DROP CONSTRAINT IF EXISTS "BookingModification_bookingId_fkey"; -ALTER TABLE "BookingModification" ADD CONSTRAINT "BookingModification_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- BookingCancellation -ALTER TABLE "BookingCancellation" DROP CONSTRAINT IF EXISTS "BookingCancellation_bookingId_fkey"; -ALTER TABLE "BookingCancellation" ADD CONSTRAINT "BookingCancellation_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- GateValidationLog -ALTER TABLE "GateValidationLog" DROP CONSTRAINT IF EXISTS "GateValidationLog_ticketId_fkey"; -ALTER TABLE "GateValidationLog" ADD CONSTRAINT "GateValidationLog_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "Ticket"("id") ON DELETE CASCADE; - --- BaggageBooking -ALTER TABLE "BaggageBooking" DROP CONSTRAINT IF EXISTS "BaggageBooking_bookingId_fkey"; -ALTER TABLE "BaggageBooking" ADD CONSTRAINT "BaggageBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE CASCADE; - --- RouteFareRule -ALTER TABLE "RouteFareRule" DROP CONSTRAINT IF EXISTS "RouteFareRule_seatClassId_fkey"; -ALTER TABLE "RouteFareRule" ADD CONSTRAINT "RouteFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE CASCADE; - --- SegmentFareRule -ALTER TABLE "SegmentFareRule" DROP CONSTRAINT IF EXISTS "SegmentFareRule_seatClassId_fkey"; -ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE CASCADE; - --- StationCrowdSignal -ALTER TABLE "StationCrowdSignal" DROP CONSTRAINT IF EXISTS "StationCrowdSignal_stationId_fkey"; -ALTER TABLE "StationCrowdSignal" ADD CONSTRAINT "StationCrowdSignal_stationId_fkey" FOREIGN KEY ("stationId") REFERENCES "Station"("id") ON DELETE CASCADE; - --- SeatBlock -ALTER TABLE "SeatBlock" DROP CONSTRAINT IF EXISTS "SeatBlock_seatId_fkey"; -ALTER TABLE "SeatBlock" ADD CONSTRAINT "SeatBlock_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE CASCADE; - --- SavedRoute -ALTER TABLE "SavedRoute" DROP CONSTRAINT IF EXISTS "SavedRoute_passengerId_fkey"; -ALTER TABLE "SavedRoute" ADD CONSTRAINT "SavedRoute_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE CASCADE; - --- LoyaltyLedgerEntry -ALTER TABLE "LoyaltyLedgerEntry" DROP CONSTRAINT IF EXISTS "LoyaltyLedgerEntry_accountId_fkey"; -ALTER TABLE "LoyaltyLedgerEntry" ADD CONSTRAINT "LoyaltyLedgerEntry_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "LoyaltyAccount"("id") ON DELETE CASCADE; - --- LoyaltyReward -ALTER TABLE "LoyaltyReward" DROP CONSTRAINT IF EXISTS "LoyaltyReward_accountId_fkey"; -ALTER TABLE "LoyaltyReward" ADD CONSTRAINT "LoyaltyReward_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "LoyaltyAccount"("id") ON DELETE CASCADE; - --- FareRule -ALTER TABLE "FareRule" DROP CONSTRAINT IF EXISTS "FareRule_seatClassId_fkey"; -ALTER TABLE "FareRule" ADD CONSTRAINT "FareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE CASCADE; diff --git a/apps/edr-passenger-api/prisma/migrations/20260622000000_catchup_iam_columns/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260622000000_catchup_iam_columns/migration.sql deleted file mode 100644 index 582db9567..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260622000000_catchup_iam_columns/migration.sql +++ /dev/null @@ -1,82 +0,0 @@ --- Catch-up migration: earlier migrations (20260606, 20260608) targeted passenger.* --- but ran when tables were still in public schema (before 20260626 moved them). --- All statements use IF NOT EXISTS / conditional blocks so this is safe to re-run. - --- ──────────────────────────────────────────────────────────── --- 1. Passenger.iamUserId --- ──────────────────────────────────────────────────────────── -ALTER TABLE passenger."Passenger" ADD COLUMN IF NOT EXISTS "iamUserId" TEXT; - -DO $$ BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint - WHERE conname = 'Passenger_iamUserId_key' - AND conrelid = 'passenger."Passenger"'::regclass - ) THEN - ALTER TABLE passenger."Passenger" ADD CONSTRAINT "Passenger_iamUserId_key" UNIQUE ("iamUserId"); - END IF; -END $$; - -CREATE INDEX IF NOT EXISTS "Passenger_iamUserId_idx" ON passenger."Passenger"("iamUserId"); - --- ──────────────────────────────────────────────────────────── --- 2. FaydaVerificationSession.iamUserId --- ──────────────────────────────────────────────────────────── -ALTER TABLE passenger."FaydaVerificationSession" ADD COLUMN IF NOT EXISTS "iamUserId" TEXT; -CREATE INDEX IF NOT EXISTS "FaydaVerificationSession_iamUserId_idx" ON passenger."FaydaVerificationSession"("iamUserId"); - --- ──────────────────────────────────────────────────────────── --- 3. UserPreferences: rename userId → iamUserId (if not yet renamed) --- ──────────────────────────────────────────────────────────── -DO $$ BEGIN - IF EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_schema = 'passenger' AND table_name = 'UserPreferences' AND column_name = 'userId' - ) THEN - ALTER TABLE passenger."UserPreferences" DROP CONSTRAINT IF EXISTS "UserPreferences_userId_fkey"; - ALTER TABLE passenger."UserPreferences" RENAME COLUMN "userId" TO "iamUserId"; - END IF; -END $$; - --- ──────────────────────────────────────────────────────────── --- 4. Device: rename userId → iamUserId (if not yet renamed) --- ──────────────────────────────────────────────────────────── -DO $$ BEGIN - IF EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_schema = 'passenger' AND table_name = 'Device' AND column_name = 'userId' - ) THEN - ALTER TABLE passenger."Device" DROP CONSTRAINT IF EXISTS "Device_userId_fkey"; - ALTER TABLE passenger."Device" RENAME COLUMN "userId" TO "iamUserId"; - END IF; -END $$; - --- ──────────────────────────────────────────────────────────── --- 5. FraudAlert: rename userId → iamUserId + fix index (if not yet renamed) --- ──────────────────────────────────────────────────────────── -DO $$ BEGIN - IF EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_schema = 'passenger' AND table_name = 'FraudAlert' AND column_name = 'userId' - ) THEN - ALTER TABLE passenger."FraudAlert" DROP CONSTRAINT IF EXISTS "FraudAlert_userId_fkey"; - ALTER TABLE passenger."FraudAlert" RENAME COLUMN "userId" TO "iamUserId"; - DROP INDEX IF EXISTS passenger."FraudAlert_userId_createdAt_idx"; - CREATE INDEX "FraudAlert_iamUserId_createdAt_idx" ON passenger."FraudAlert"("iamUserId", "createdAt"); - END IF; -END $$; - --- ──────────────────────────────────────────────────────────── --- 6. AuditLog: rename userId → iamUserId + fix index (if not yet renamed) --- ──────────────────────────────────────────────────────────── -DO $$ BEGIN - IF EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_schema = 'passenger' AND table_name = 'AuditLog' AND column_name = 'userId' - ) THEN - ALTER TABLE passenger."AuditLog" DROP CONSTRAINT IF EXISTS "AuditLog_userId_fkey"; - ALTER TABLE passenger."AuditLog" RENAME COLUMN "userId" TO "iamUserId"; - DROP INDEX IF EXISTS passenger."AuditLog_userId_createdAt_idx"; - CREATE INDEX IF NOT EXISTS "AuditLog_iamUserId_createdAt_idx" ON passenger."AuditLog"("iamUserId", "createdAt"); - END IF; -END $$; diff --git a/apps/edr-passenger-api/prisma/migrations/20260622000001_make_passenger_userid_nullable/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260622000001_make_passenger_userid_nullable/migration.sql deleted file mode 100644 index 33f793aa3..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260622000001_make_passenger_userid_nullable/migration.sql +++ /dev/null @@ -1,5 +0,0 @@ --- 20260608061918 was marked-as-applied without running (it failed on CREATE TABLE TicketSeat). --- The two ALTER TABLE statements it contained never executed, so userId is still NOT NULL. - -ALTER TABLE passenger."Passenger" DROP CONSTRAINT IF EXISTS "Passenger_userId_fkey"; -ALTER TABLE passenger."Passenger" ALTER COLUMN "userId" DROP NOT NULL; diff --git a/apps/edr-passenger-api/prisma/migrations/20260622000002_agent_iam_user_id_drop_user_fks/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260622000002_agent_iam_user_id_drop_user_fks/migration.sql deleted file mode 100644 index fb2e47592..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260622000002_agent_iam_user_id_drop_user_fks/migration.sql +++ /dev/null @@ -1,46 +0,0 @@ --- ──────────────────────────────────────────────────────────── --- 1. Add iamUserId to Agent --- ──────────────────────────────────────────────────────────── -ALTER TABLE passenger."Agent" ADD COLUMN IF NOT EXISTS "iamUserId" TEXT; - -DO $$ BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint - WHERE conname = 'Agent_iamUserId_key' - AND conrelid = 'passenger."Agent"'::regclass - ) THEN - ALTER TABLE passenger."Agent" ADD CONSTRAINT "Agent_iamUserId_key" UNIQUE ("iamUserId"); - END IF; -END $$; - -CREATE INDEX IF NOT EXISTS "Agent_iamUserId_idx" ON passenger."Agent"("iamUserId"); - --- ──────────────────────────────────────────────────────────── --- 2. Populate iamUserId for existing agent records --- Match via User.email → iam.users.email (skip if iam schema absent) --- ──────────────────────────────────────────────────────────── -DO $$ BEGIN - IF EXISTS ( - SELECT 1 FROM information_schema.tables - WHERE table_schema = 'iam' AND table_name = 'users' - ) THEN - UPDATE passenger."Agent" a - SET "iamUserId" = iu.id - FROM passenger."User" u - JOIN iam.users iu ON iu.email = u.email - WHERE a."userId" = u.id - AND a."iamUserId" IS NULL; - END IF; -END $$; - --- ──────────────────────────────────────────────────────────── --- 3. Drop Agent.userId FK and column — iamUserId replaces it entirely --- ──────────────────────────────────────────────────────────── -ALTER TABLE passenger."Agent" DROP CONSTRAINT IF EXISTS "Agent_userId_fkey"; -DROP INDEX IF EXISTS passenger."Agent_userId_key"; -ALTER TABLE passenger."Agent" DROP COLUMN IF EXISTS "userId"; - --- ──────────────────────────────────────────────────────────── --- 4. Drop Passenger.userId FK (column stays as plain nullable string) --- ──────────────────────────────────────────────────────────── -ALTER TABLE passenger."Passenger" DROP CONSTRAINT IF EXISTS "Passenger_userId_fkey"; diff --git a/apps/edr-passenger-api/prisma/migrations/20260623073543_config/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260623073543_config/migration.sql deleted file mode 100644 index a20893705..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260623073543_config/migration.sql +++ /dev/null @@ -1,290 +0,0 @@ --- DropForeignKey -ALTER TABLE "AgentBooking" DROP CONSTRAINT "AgentBooking_agentId_fkey"; - --- DropForeignKey -ALTER TABLE "AgentBooking" DROP CONSTRAINT "AgentBooking_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "AgentCommission" DROP CONSTRAINT "AgentCommission_agentId_fkey"; - --- DropForeignKey -ALTER TABLE "AgentShift" DROP CONSTRAINT "AgentShift_agentId_fkey"; - --- DropForeignKey -ALTER TABLE "BaggageBooking" DROP CONSTRAINT "BaggageBooking_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "Booking" DROP CONSTRAINT "Booking_passengerId_fkey"; - --- DropForeignKey -ALTER TABLE "Booking" DROP CONSTRAINT "Booking_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingCancellation" DROP CONSTRAINT "BookingCancellation_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingModification" DROP CONSTRAINT "BookingModification_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingSeat" DROP CONSTRAINT "BookingSeat_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "BookingSeat" DROP CONSTRAINT "BookingSeat_seatId_fkey"; - --- DropForeignKey -ALTER TABLE "Coach" DROP CONSTRAINT "Coach_coachTypeId_fkey"; - --- DropForeignKey -ALTER TABLE "CoachAssignment" DROP CONSTRAINT "CoachAssignment_coachId_fkey"; - --- DropForeignKey -ALTER TABLE "CoachAssignment" DROP CONSTRAINT "CoachAssignment_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "FaqArticle" DROP CONSTRAINT "FaqArticle_categoryId_fkey"; - --- DropForeignKey -ALTER TABLE "FareRule" DROP CONSTRAINT "FareRule_seatClassId_fkey"; - --- DropForeignKey -ALTER TABLE "FoodOrder" DROP CONSTRAINT "FoodOrder_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "FoodOrderItem" DROP CONSTRAINT "FoodOrderItem_orderId_fkey"; - --- DropForeignKey -ALTER TABLE "GateValidationLog" DROP CONSTRAINT "GateValidationLog_ticketId_fkey"; - --- DropForeignKey -ALTER TABLE "JourneySegment" DROP CONSTRAINT "JourneySegment_journeyId_fkey"; - --- DropForeignKey -ALTER TABLE "JourneySegment" DROP CONSTRAINT "JourneySegment_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "LoyaltyLedgerEntry" DROP CONSTRAINT "LoyaltyLedgerEntry_accountId_fkey"; - --- DropForeignKey -ALTER TABLE "LoyaltyReward" DROP CONSTRAINT "LoyaltyReward_accountId_fkey"; - --- DropForeignKey -ALTER TABLE "MenuItem" DROP CONSTRAINT "MenuItem_categoryId_fkey"; - --- DropForeignKey -ALTER TABLE "MenuItem" DROP CONSTRAINT "MenuItem_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "Notification" DROP CONSTRAINT "Notification_passengerId_fkey"; - --- DropForeignKey -ALTER TABLE "PaymentIntent" DROP CONSTRAINT "PaymentIntent_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "PaymentRefund" DROP CONSTRAINT "PaymentRefund_paymentIntentId_fkey"; - --- DropForeignKey -ALTER TABLE "RouteFareRule" DROP CONSTRAINT "RouteFareRule_seatClassId_fkey"; - --- DropForeignKey -ALTER TABLE "SavedRoute" DROP CONSTRAINT "SavedRoute_passengerId_fkey"; - --- DropForeignKey -ALTER TABLE "SeatBlock" DROP CONSTRAINT "SeatBlock_seatId_fkey"; - --- DropForeignKey -ALTER TABLE "SegmentFareRule" DROP CONSTRAINT "SegmentFareRule_seatClassId_fkey"; - --- DropForeignKey -ALTER TABLE "StationCrowdSignal" DROP CONSTRAINT "StationCrowdSignal_stationId_fkey"; - --- DropForeignKey -ALTER TABLE "SupportMessage" DROP CONSTRAINT "SupportMessage_conversationId_fkey"; - --- DropForeignKey -ALTER TABLE "Ticket" DROP CONSTRAINT "Ticket_bookingId_fkey"; - --- DropForeignKey -ALTER TABLE "TicketSeat" DROP CONSTRAINT "TicketSeat_seatId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_destinationStationId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_originStationId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_routeId_fkey"; - --- DropForeignKey -ALTER TABLE "TrainSchedule" DROP CONSTRAINT "TrainSchedule_trainId_fkey"; - --- DropForeignKey -ALTER TABLE "TripLiveStatus" DROP CONSTRAINT "TripLiveStatus_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "TripStopTime" DROP CONSTRAINT "TripStopTime_scheduleId_fkey"; - --- DropForeignKey -ALTER TABLE "WalletLedgerEntry" DROP CONSTRAINT "WalletLedgerEntry_walletId_fkey"; - --- DropIndex -DROP INDEX IF EXISTS "Journey_bookingId_idx"; - --- AlterTable -ALTER TABLE "FaydaVerificationSession" ALTER COLUMN "purpose" SET DEFAULT 'VERIFY'; - --- CreateTable -CREATE TABLE "SystemConfig" ( - "id" TEXT NOT NULL, - "key" TEXT NOT NULL, - "value" TEXT NOT NULL, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "SystemConfig_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "SystemConfig_key_key" ON "SystemConfig"("key"); - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_trainId_fkey" FOREIGN KEY ("trainId") REFERENCES "Train"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "Route"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_originStationId_fkey" FOREIGN KEY ("originStationId") REFERENCES "Station"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TrainSchedule" ADD CONSTRAINT "TrainSchedule_destinationStationId_fkey" FOREIGN KEY ("destinationStationId") REFERENCES "Station"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TripStopTime" ADD CONSTRAINT "TripStopTime_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TripLiveStatus" ADD CONSTRAINT "TripLiveStatus_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Coach" ADD CONSTRAINT "Coach_coachTypeId_fkey" FOREIGN KEY ("coachTypeId") REFERENCES "CoachType"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "CoachAssignment" ADD CONSTRAINT "CoachAssignment_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "CoachAssignment" ADD CONSTRAINT "CoachAssignment_coachId_fkey" FOREIGN KEY ("coachId") REFERENCES "Coach"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FareRule" ADD CONSTRAINT "FareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Booking" ADD CONSTRAINT "Booking_returnScheduleId_fkey" FOREIGN KEY ("returnScheduleId") REFERENCES "TrainSchedule"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PaymentIntent" ADD CONSTRAINT "PaymentIntent_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "PaymentRefund" ADD CONSTRAINT "PaymentRefund_paymentIntentId_fkey" FOREIGN KEY ("paymentIntentId") REFERENCES "PaymentIntent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Ticket" ADD CONSTRAINT "Ticket_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TicketSeat" ADD CONSTRAINT "TicketSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "LoyaltyLedgerEntry" ADD CONSTRAINT "LoyaltyLedgerEntry_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "LoyaltyAccount"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "LoyaltyReward" ADD CONSTRAINT "LoyaltyReward_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "LoyaltyAccount"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "WalletLedgerEntry" ADD CONSTRAINT "WalletLedgerEntry_walletId_fkey" FOREIGN KEY ("walletId") REFERENCES "WalletAccount"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Notification" ADD CONSTRAINT "Notification_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "StationCrowdSignal" ADD CONSTRAINT "StationCrowdSignal_stationId_fkey" FOREIGN KEY ("stationId") REFERENCES "Station"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MenuItem" ADD CONSTRAINT "MenuItem_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "MenuItem" ADD CONSTRAINT "MenuItem_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "MenuCategory"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FoodOrder" ADD CONSTRAINT "FoodOrder_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FoodOrderItem" ADD CONSTRAINT "FoodOrderItem_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "FoodOrder"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "FaqArticle" ADD CONSTRAINT "FaqArticle_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "FaqCategory"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SupportMessage" ADD CONSTRAINT "SupportMessage_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "SupportConversation"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SavedRoute" ADD CONSTRAINT "SavedRoute_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -DO $$ BEGIN - IF EXISTS ( - SELECT 1 FROM information_schema.columns - WHERE table_schema = 'passenger' AND table_name = 'Journey' AND column_name = 'bookingId' - ) THEN - ALTER TABLE "Journey" ADD CONSTRAINT "Journey_bookingId_fkey" - FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE SET NULL ON UPDATE CASCADE; - END IF; -END $$; - --- AddForeignKey -ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_journeyId_fkey" FOREIGN KEY ("journeyId") REFERENCES "Journey"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "RouteFareRule" ADD CONSTRAINT "RouteFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentShift" ADD CONSTRAINT "AgentShift_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "AgentCommission" ADD CONSTRAINT "AgentCommission_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingModification" ADD CONSTRAINT "BookingModification_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BookingCancellation" ADD CONSTRAINT "BookingCancellation_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "GateValidationLog" ADD CONSTRAINT "GateValidationLog_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "Ticket"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "BaggageBooking" ADD CONSTRAINT "BaggageBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "SeatBlock" ADD CONSTRAINT "SeatBlock_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/edr-passenger-api/prisma/migrations/20260625_add_return_leg_status/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260625_add_return_leg_status/migration.sql deleted file mode 100644 index bc6e6c2a2..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260625_add_return_leg_status/migration.sql +++ /dev/null @@ -1,18 +0,0 @@ --- CreateEnum -CREATE TYPE "ReturnLegStatus" AS ENUM ('NOT_APPLICABLE', 'BOTH_USED', 'OUTBOUND_ONLY', 'INBOUND_ONLY', 'NEITHER_USED'); - --- AlterTable: add return leg tracking columns to Booking -ALTER TABLE "Booking" - ADD COLUMN "returnLegStatus" "ReturnLegStatus" NOT NULL DEFAULT 'NOT_APPLICABLE', - ADD COLUMN "outboundBoardedAt" TIMESTAMP(3), - ADD COLUMN "returnBoardedAt" TIMESTAMP(3); - --- Set NEITHER_USED for existing confirmed round-trip bookings -UPDATE "Booking" -SET "returnLegStatus" = 'NEITHER_USED' -WHERE "bookingType" = 'ROUND_TRIP' - AND "status" IN ('CONFIRMED', 'BOARDED'); - --- AlterTable: add leg column to GateValidationLog -ALTER TABLE "GateValidationLog" - ADD COLUMN "leg" TEXT; diff --git a/apps/edr-passenger-api/prisma/migrations/20260626_fix_missing_booking_columns/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260626_fix_missing_booking_columns/migration.sql deleted file mode 100644 index b0a5bc0b4..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260626_fix_missing_booking_columns/migration.sql +++ /dev/null @@ -1,70 +0,0 @@ --- Create passenger schema if it doesn't exist -CREATE SCHEMA IF NOT EXISTS passenger; - --- Move enums from public to passenger schema (only if they exist in public) -DO $$ -DECLARE - e text; -BEGIN - FOR e IN - SELECT typname FROM pg_type - JOIN pg_namespace ON pg_namespace.oid = pg_type.typnamespace - WHERE pg_namespace.nspname = 'public' AND pg_type.typtype = 'e' - LOOP - EXECUTE format('ALTER TYPE public.%I SET SCHEMA passenger', e); - END LOOP; -EXCEPTION WHEN others THEN NULL; -END $$; - --- Move tables from public to passenger schema (only if they exist in public) -DO $$ -DECLARE - t text; -BEGIN - FOR t IN - SELECT tablename FROM pg_tables - WHERE schemaname = 'public' AND tablename NOT IN ('_prisma_migrations') - LOOP - EXECUTE format('ALTER TABLE public.%I SET SCHEMA passenger', t); - END LOOP; -EXCEPTION WHEN others THEN NULL; -END $$; - --- Add missing columns to Booking -ALTER TABLE "passenger"."Booking" - ADD COLUMN IF NOT EXISTS "returnScheduleId" TEXT, - ADD COLUMN IF NOT EXISTS "returnOriginStationId" TEXT, - ADD COLUMN IF NOT EXISTS "returnDestinationStationId" TEXT, - ADD COLUMN IF NOT EXISTS "returnHoldId" TEXT, - ADD COLUMN IF NOT EXISTS "returnSeatClassId" TEXT, - ADD COLUMN IF NOT EXISTS "leg2ScheduleId" TEXT, - ADD COLUMN IF NOT EXISTS "leg2OriginStationId" TEXT, - ADD COLUMN IF NOT EXISTS "leg2DestinationStationId" TEXT, - ADD COLUMN IF NOT EXISTS "leg2SeatClassId" TEXT, - ADD COLUMN IF NOT EXISTS "returnLeg2ScheduleId" TEXT, - ADD COLUMN IF NOT EXISTS "returnLeg2OriginStationId" TEXT, - ADD COLUMN IF NOT EXISTS "returnLeg2DestStationId" TEXT, - ADD COLUMN IF NOT EXISTS "returnLeg2SeatClassId" TEXT, - ADD COLUMN IF NOT EXISTS "outboundBoardedAt" TIMESTAMP(3), - ADD COLUMN IF NOT EXISTS "returnBoardedAt" TIMESTAMP(3); - --- Add ReturnLegStatus enum and column -DO $$ BEGIN - CREATE TYPE "passenger"."ReturnLegStatus" AS ENUM ( - 'NOT_APPLICABLE', 'BOTH_USED', 'OUTBOUND_ONLY', 'INBOUND_ONLY', 'NEITHER_USED' - ); -EXCEPTION WHEN duplicate_object THEN NULL; END $$; - -ALTER TABLE "passenger"."Booking" - ADD COLUMN IF NOT EXISTS "returnLegStatus" "passenger"."ReturnLegStatus" NOT NULL DEFAULT 'NOT_APPLICABLE'; - --- Add missing columns to other tables -ALTER TABLE "passenger"."GateValidationLog" ADD COLUMN IF NOT EXISTS "leg" TEXT; -ALTER TABLE "passenger"."BookingSeat" ADD COLUMN IF NOT EXISTS "leg" INTEGER NOT NULL DEFAULT 1; -ALTER TABLE "passenger"."BookingSeat" ADD COLUMN IF NOT EXISTS "scheduleId" TEXT; -ALTER TABLE "passenger"."Ticket" ADD COLUMN IF NOT EXISTS "boardedAt" TIMESTAMP(3); - -ALTER TABLE "passenger"."SeatClass" ALTER COLUMN "baseFareMinor" SET DEFAULT 0; -ALTER TABLE "passenger"."Ticket" ALTER COLUMN "status" SET DEFAULT 'ACTIVE'; - -CREATE INDEX IF NOT EXISTS "Booking_bookingType_idx" ON "passenger"."Booking"("bookingType"); diff --git a/apps/edr-passenger-api/prisma/migrations/20260627_add_journey_booking_id/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260627_add_journey_booking_id/migration.sql deleted file mode 100644 index 12f4a0eb7..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260627_add_journey_booking_id/migration.sql +++ /dev/null @@ -1,21 +0,0 @@ --- Add bookingId to Journey for per-booking segment release -ALTER TABLE "passenger"."Journey" - ADD COLUMN IF NOT EXISTS "bookingId" TEXT; - -CREATE UNIQUE INDEX IF NOT EXISTS "Journey_bookingId_key" ON "passenger"."Journey"("bookingId"); -CREATE INDEX IF NOT EXISTS "Journey_bookingId_idx" ON "passenger"."Journey"("bookingId"); - --- AddForeignKey (column created above; FK was misplaced in 20260623073543_config) -ALTER TABLE "passenger"."Journey" - DROP CONSTRAINT IF EXISTS "Journey_bookingId_fkey"; -ALTER TABLE "passenger"."Journey" - ADD CONSTRAINT "Journey_bookingId_fkey" - FOREIGN KEY ("bookingId") REFERENCES "passenger"."Booking"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- Ensure JourneySegment cascades on Journey delete -ALTER TABLE "passenger"."JourneySegment" - DROP CONSTRAINT IF EXISTS "JourneySegment_journeyId_fkey"; - -ALTER TABLE "passenger"."JourneySegment" - ADD CONSTRAINT "JourneySegment_journeyId_fkey" - FOREIGN KEY ("journeyId") REFERENCES "passenger"."Journey"("id") ON DELETE CASCADE; diff --git a/apps/edr-passenger-api/prisma/migrations/20260627_fix_enum_column_sync/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260627_fix_enum_column_sync/migration.sql deleted file mode 100644 index 435d95829..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260627_fix_enum_column_sync/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- Migration already applied directly to the database. --- This file exists only to satisfy Prisma's migration directory check (P3015). diff --git a/apps/edr-passenger-api/prisma/migrations/20260628000000_sync_agent_iamuserid_travel_packages/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260628000000_sync_agent_iamuserid_travel_packages/migration.sql deleted file mode 100644 index 2dff947d2..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260628000000_sync_agent_iamuserid_travel_packages/migration.sql +++ /dev/null @@ -1,153 +0,0 @@ --- Add iamUserId to Agent (migration 20260622000002 was skipped due to missing iam schema) -ALTER TABLE passenger."Agent" ADD COLUMN IF NOT EXISTS "iamUserId" TEXT; - -DO $$ BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_constraint - WHERE conname = 'Agent_iamUserId_key' - AND conrelid = 'passenger."Agent"'::regclass - ) THEN - ALTER TABLE passenger."Agent" ADD CONSTRAINT "Agent_iamUserId_key" UNIQUE ("iamUserId"); - END IF; -END $$; - -CREATE INDEX IF NOT EXISTS "Agent_iamUserId_idx" ON passenger."Agent"("iamUserId"); - --- Drop old Agent.userId FK and column if they still exist -ALTER TABLE passenger."Agent" DROP CONSTRAINT IF EXISTS "Agent_userId_fkey"; -DROP INDEX IF EXISTS passenger."Agent_userId_key"; -ALTER TABLE passenger."Agent" DROP COLUMN IF EXISTS "userId"; - --- Drop old Passenger.userId FK (column stays as plain nullable string) -ALTER TABLE passenger."Passenger" DROP CONSTRAINT IF EXISTS "Passenger_userId_fkey"; - --- TravelPackage -CREATE TABLE IF NOT EXISTS passenger."TravelPackage" ( - "id" TEXT NOT NULL, - "code" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "status" TEXT NOT NULL DEFAULT 'DRAFT', - "outboundScheduleId" TEXT NOT NULL, - "returnScheduleId" TEXT NOT NULL, - "originStationId" TEXT NOT NULL, - "destinationStationId" TEXT NOT NULL, - "boardingTime" TIMESTAMP(3) NOT NULL, - "departureTime" TIMESTAMP(3) NOT NULL, - "arrivalTime" TIMESTAMP(3) NOT NULL, - "totalCapacity" INTEGER NOT NULL, - "bookedCount" INTEGER NOT NULL DEFAULT 0, - "includedServices" JSONB NOT NULL, - "coachConfiguration" TEXT, - "busTransferIncluded" BOOLEAN NOT NULL DEFAULT false, - "busTransferRoute" TEXT, - "validFrom" TIMESTAMP(3) NOT NULL, - "validUntil" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "TravelPackage_pkey" PRIMARY KEY ("id") -); -CREATE UNIQUE INDEX IF NOT EXISTS "TravelPackage_code_key" ON passenger."TravelPackage"("code"); -CREATE INDEX IF NOT EXISTS "TravelPackage_status_validFrom_idx" ON passenger."TravelPackage"("status","validFrom"); - --- PackagePriceTier -CREATE TABLE IF NOT EXISTS passenger."PackagePriceTier" ( - "id" TEXT NOT NULL, - "packageId" TEXT NOT NULL, - "seatType" TEXT NOT NULL, - "label" TEXT NOT NULL, - "priceMinor" INTEGER NOT NULL, - "currency" TEXT NOT NULL DEFAULT 'ETB', - "availableSeats" INTEGER NOT NULL DEFAULT 0, - "bookedSeats" INTEGER NOT NULL DEFAULT 0, - CONSTRAINT "PackagePriceTier_pkey" PRIMARY KEY ("id") -); -CREATE UNIQUE INDEX IF NOT EXISTS "PackagePriceTier_packageId_seatType_key" ON passenger."PackagePriceTier"("packageId","seatType"); - --- PackageBooking -CREATE TABLE IF NOT EXISTS passenger."PackageBooking" ( - "id" TEXT NOT NULL, - "bookingRef" TEXT NOT NULL, - "packageId" TEXT NOT NULL, - "priceTierId" TEXT NOT NULL, - "passengerId" TEXT, - "contactEmail" TEXT, - "contactPhone" TEXT, - "status" TEXT NOT NULL DEFAULT 'PENDING_PAYMENT', - "passengerCount" INTEGER NOT NULL DEFAULT 1, - "totalMinor" INTEGER NOT NULL, - "currency" TEXT NOT NULL DEFAULT 'ETB', - "displayCurrency" TEXT, - "displayTotalMinor" INTEGER, - "promoCode" TEXT, - "source" TEXT NOT NULL DEFAULT 'WEB', - "paidAt" TIMESTAMP(3), - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "PackageBooking_pkey" PRIMARY KEY ("id") -); -CREATE UNIQUE INDEX IF NOT EXISTS "PackageBooking_bookingRef_key" ON passenger."PackageBooking"("bookingRef"); -CREATE INDEX IF NOT EXISTS "PackageBooking_packageId_status_idx" ON passenger."PackageBooking"("packageId","status"); - --- PackageBookingPassenger -CREATE TABLE IF NOT EXISTS passenger."PackageBookingPassenger" ( - "id" TEXT NOT NULL, - "bookingId" TEXT NOT NULL, - "passengerName" TEXT NOT NULL, - "dateOfBirth" TIMESTAMP(3), - "idDocumentType" TEXT, - "idDocumentNumber" TEXT, - "passportNumber" TEXT, - "passportCountry" TEXT, - "seatLabel" TEXT, - CONSTRAINT "PackageBookingPassenger_pkey" PRIMARY KEY ("id") -); - --- PackagePaymentIntent -CREATE TABLE IF NOT EXISTS passenger."PackagePaymentIntent" ( - "id" TEXT NOT NULL, - "packageBookingId" TEXT NOT NULL, - "amountMinor" INTEGER NOT NULL, - "currency" TEXT NOT NULL DEFAULT 'ETB', - "method" TEXT NOT NULL, - "status" TEXT NOT NULL DEFAULT 'REQUIRES_ACTION', - "providerRef" TEXT, - "paidAt" TIMESTAMP(3), - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - CONSTRAINT "PackagePaymentIntent_pkey" PRIMARY KEY ("id") -); -CREATE UNIQUE INDEX IF NOT EXISTS "PackagePaymentIntent_packageBookingId_key" ON passenger."PackagePaymentIntent"("packageBookingId"); - --- Foreign keys -ALTER TABLE passenger."TravelPackage" - ADD CONSTRAINT "TravelPackage_outboundScheduleId_fkey" - FOREIGN KEY ("outboundScheduleId") REFERENCES passenger."TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE passenger."TravelPackage" - ADD CONSTRAINT "TravelPackage_returnScheduleId_fkey" - FOREIGN KEY ("returnScheduleId") REFERENCES passenger."TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE passenger."PackagePriceTier" - ADD CONSTRAINT "PackagePriceTier_packageId_fkey" - FOREIGN KEY ("packageId") REFERENCES passenger."TravelPackage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE passenger."PackageBooking" - ADD CONSTRAINT "PackageBooking_packageId_fkey" - FOREIGN KEY ("packageId") REFERENCES passenger."TravelPackage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE passenger."PackageBooking" - ADD CONSTRAINT "PackageBooking_priceTierId_fkey" - FOREIGN KEY ("priceTierId") REFERENCES passenger."PackagePriceTier"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE passenger."PackageBooking" - ADD CONSTRAINT "PackageBooking_passengerId_fkey" - FOREIGN KEY ("passengerId") REFERENCES passenger."Passenger"("id") ON DELETE SET NULL ON UPDATE CASCADE; - -ALTER TABLE passenger."PackageBookingPassenger" - ADD CONSTRAINT "PackageBookingPassenger_bookingId_fkey" - FOREIGN KEY ("bookingId") REFERENCES passenger."PackageBooking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -ALTER TABLE passenger."PackagePaymentIntent" - ADD CONSTRAINT "PackagePaymentIntent_packageBookingId_fkey" - FOREIGN KEY ("packageBookingId") REFERENCES passenger."PackageBooking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/apps/edr-passenger-api/prisma/migrations/20260628000001_add_package_status_enum/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260628000001_add_package_status_enum/migration.sql deleted file mode 100644 index 545b6a5b4..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260628000001_add_package_status_enum/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ --- Create PackageStatus enum -DO $$ BEGIN - CREATE TYPE passenger."PackageStatus" AS ENUM ('DRAFT','ACTIVE','SOLD_OUT','EXPIRED','CANCELLED'); -EXCEPTION WHEN duplicate_object THEN NULL; -END $$; - --- Drop default, cast column to enum, restore default -ALTER TABLE passenger."TravelPackage" ALTER COLUMN "status" DROP DEFAULT; -ALTER TABLE passenger."TravelPackage" - ALTER COLUMN "status" TYPE passenger."PackageStatus" - USING "status"::passenger."PackageStatus"; -ALTER TABLE passenger."TravelPackage" ALTER COLUMN "status" SET DEFAULT 'DRAFT'::passenger."PackageStatus"; diff --git a/apps/edr-passenger-api/prisma/migrations/20260629000000_add_excess_baggage_charge/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260629000000_add_excess_baggage_charge/migration.sql deleted file mode 100644 index 04e2a7610..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260629000000_add_excess_baggage_charge/migration.sql +++ /dev/null @@ -1,42 +0,0 @@ --- CreateTable -CREATE TABLE "passenger"."ExcessBaggageCharge" ( - "id" TEXT NOT NULL, - "bookingId" TEXT NOT NULL, - "agentId" TEXT NOT NULL, - "excessWeightKg" INTEGER NOT NULL, - "feePerKgMinor" INTEGER NOT NULL, - "totalMinor" INTEGER NOT NULL, - "currency" TEXT NOT NULL DEFAULT 'ETB', - "status" TEXT NOT NULL DEFAULT 'PENDING', - "paymentToken" TEXT NOT NULL, - "expiresAt" TIMESTAMP(3) NOT NULL, - "paidAt" TIMESTAMP(3), - "waivedBy" TEXT, - "waivedReason" TEXT, - "contactPhone" TEXT, - "contactEmail" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "ExcessBaggageCharge_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "ExcessBaggageCharge_paymentToken_key" ON "passenger"."ExcessBaggageCharge"("paymentToken"); - --- CreateIndex -CREATE INDEX "ExcessBaggageCharge_bookingId_idx" ON "passenger"."ExcessBaggageCharge"("bookingId"); - --- CreateIndex -CREATE INDEX "ExcessBaggageCharge_paymentToken_idx" ON "passenger"."ExcessBaggageCharge"("paymentToken"); - --- CreateIndex -CREATE INDEX "ExcessBaggageCharge_status_idx" ON "passenger"."ExcessBaggageCharge"("status"); - --- AddForeignKey -ALTER TABLE "passenger"."ExcessBaggageCharge" - ADD CONSTRAINT "ExcessBaggageCharge_bookingId_fkey" - FOREIGN KEY ("bookingId") REFERENCES "passenger"."Booking"("id") - ON DELETE RESTRICT ON UPDATE CASCADE; - --- Seed default paymentToken using gen_random_uuid() for any rows that may exist -UPDATE "passenger"."ExcessBaggageCharge" SET "paymentToken" = gen_random_uuid()::text WHERE "paymentToken" = ''; diff --git a/apps/edr-passenger-api/prisma/migrations/20260630000000_add_payment_reminder_sent_at/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260630000000_add_payment_reminder_sent_at/migration.sql deleted file mode 100644 index 34a2e2caa..000000000 --- a/apps/edr-passenger-api/prisma/migrations/20260630000000_add_payment_reminder_sent_at/migration.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE passenger."Booking" ADD COLUMN IF NOT EXISTS "paymentReminderSentAt" TIMESTAMP(3); diff --git a/apps/edr-passenger-api/prisma/migrations/20260605195213_init/migration.sql b/apps/edr-passenger-api/prisma/migrations/20260630074725_init/migration.sql similarity index 79% rename from apps/edr-passenger-api/prisma/migrations/20260605195213_init/migration.sql rename to apps/edr-passenger-api/prisma/migrations/20260630074725_init/migration.sql index 4ae48ea16..d4d7cbe42 100644 --- a/apps/edr-passenger-api/prisma/migrations/20260605195213_init/migration.sql +++ b/apps/edr-passenger-api/prisma/migrations/20260630074725_init/migration.sql @@ -22,11 +22,14 @@ CREATE TYPE "Currency" AS ENUM ('ETB', 'DJF', 'USD'); -- CreateEnum CREATE TYPE "BookingStatus" AS ENUM ('DRAFT', 'PENDING_PAYMENT', 'CONFIRMED', 'CANCELLED', 'BOARDED', 'NO_SHOW', 'REFUNDED'); +-- CreateEnum +CREATE TYPE "ReturnLegStatus" AS ENUM ('NOT_APPLICABLE', 'BOTH_USED', 'OUTBOUND_ONLY', 'INBOUND_ONLY', 'NEITHER_USED'); + -- CreateEnum CREATE TYPE "PaymentRegion" AS ENUM ('ETHIOPIA', 'DJIBOUTI', 'INTERNATIONAL', 'GLOBAL'); -- CreateEnum -CREATE TYPE "PaymentMethodType" AS ENUM ('TELEBIRR', 'CBE_BIRR', 'EBIRR', 'CARD', 'WALLET', 'WAAFI'); +CREATE TYPE "PaymentMethodType" AS ENUM ('TELEBIRR', 'CBE_BIRR', 'EBIRR', 'CARD', 'WALLET', 'WAAFI', 'DMONEY'); -- CreateEnum CREATE TYPE "PaymentIntentStatus" AS ENUM ('REQUIRES_ACTION', 'PROCESSING', 'SUCCEEDED', 'FAILED', 'CANCELLED', 'REFUNDED'); @@ -58,6 +61,9 @@ CREATE TYPE "FoodOrderStatus" AS ENUM ('PENDING', 'PREPARING', 'READY', 'DELIVER -- CreateEnum CREATE TYPE "DevicePlatform" AS ENUM ('IOS', 'ANDROID', 'WEB'); +-- CreateEnum +CREATE TYPE "PackageStatus" AS ENUM ('DRAFT', 'ACTIVE', 'SOLD_OUT', 'EXPIRED', 'CANCELLED'); + -- CreateTable CREATE TABLE "CoachType" ( "id" TEXT NOT NULL, @@ -130,9 +136,11 @@ CREATE TABLE "Session" ( -- CreateTable CREATE TABLE "Passenger" ( "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, + "userId" TEXT, + "iamUserId" TEXT, "defaultTravelerProfileId" TEXT, "preferredLanguage" TEXT, + "blockedUntil" TIMESTAMP(3), "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "Passenger_pkey" PRIMARY KEY ("id") @@ -143,6 +151,7 @@ CREATE TABLE "TravelerProfile" ( "id" TEXT NOT NULL, "passengerId" TEXT NOT NULL, "fullName" TEXT NOT NULL, + "gender" TEXT, "relationship" TEXT NOT NULL, "dateOfBirth" TIMESTAMP(3), "nationalId" TEXT, @@ -161,7 +170,6 @@ CREATE TABLE "Station" ( "countryCode" TEXT, "sequence" INTEGER NOT NULL DEFAULT 0, "isOperational" BOOLEAN NOT NULL DEFAULT true, - "timezone" TEXT NOT NULL DEFAULT 'Africa/Addis_Ababa', "lat" DECIMAL(9,6), "lng" DECIMAL(9,6), @@ -314,6 +322,7 @@ CREATE TABLE "Booking" ( "bookingRef" TEXT NOT NULL, "passengerId" TEXT NOT NULL, "scheduleId" TEXT NOT NULL, + "bookingType" TEXT NOT NULL DEFAULT 'ONE_WAY', "status" "BookingStatus" NOT NULL DEFAULT 'DRAFT', "currency" TEXT NOT NULL DEFAULT 'ETB', "totalMinor" INTEGER NOT NULL, @@ -321,13 +330,29 @@ CREATE TABLE "Booking" ( "childCount" INTEGER NOT NULL DEFAULT 0, "displayCurrency" "Currency", "displayTotalMinor" INTEGER, - "bookingType" TEXT NOT NULL DEFAULT 'ONE_WAY', + "returnScheduleId" TEXT, + "returnOriginStationId" TEXT, + "returnDestinationStationId" TEXT, + "returnHoldId" TEXT, + "returnSeatClassId" TEXT, + "returnLegStatus" "ReturnLegStatus" NOT NULL DEFAULT 'NOT_APPLICABLE', + "leg2ScheduleId" TEXT, + "leg2OriginStationId" TEXT, + "leg2DestinationStationId" TEXT, + "leg2SeatClassId" TEXT, + "returnLeg2ScheduleId" TEXT, + "returnLeg2OriginStationId" TEXT, + "returnLeg2DestStationId" TEXT, + "returnLeg2SeatClassId" TEXT, + "outboundBoardedAt" TIMESTAMP(3), + "returnBoardedAt" TIMESTAMP(3), "contactEmail" TEXT, "contactPhone" TEXT, "userAgent" TEXT, "source" TEXT NOT NULL DEFAULT 'WEB', "promoCode" TEXT, "paidAt" TIMESTAMP(3), + "paymentReminderSentAt" TIMESTAMP(3), "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, @@ -339,6 +364,8 @@ CREATE TABLE "BookingSeat" ( "id" TEXT NOT NULL, "bookingId" TEXT NOT NULL, "seatId" TEXT NOT NULL, + "leg" INTEGER NOT NULL DEFAULT 1, + "scheduleId" TEXT, "passengerName" TEXT NOT NULL, "dateOfBirth" TIMESTAMP(3), "passengerCategory" "PassengerCategory" NOT NULL DEFAULT 'ADULT', @@ -438,7 +465,11 @@ CREATE TABLE "Ticket" ( "id" TEXT NOT NULL, "bookingId" TEXT NOT NULL, "bookingRef" TEXT NOT NULL, - "status" TEXT NOT NULL DEFAULT 'CONFIRMED', + "passengerName" TEXT NOT NULL, + "seatId" TEXT NOT NULL, + "leg" INTEGER NOT NULL DEFAULT 1, + "scheduleId" TEXT, + "status" TEXT NOT NULL DEFAULT 'ACTIVE', "qrPayload" TEXT NOT NULL, "barcodePayload" TEXT, "pdfUrl" TEXT, @@ -446,20 +477,11 @@ CREATE TABLE "Ticket" ( "issuedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "validatedAt" TIMESTAMP(3), "validatorId" TEXT, + "boardedAt" TIMESTAMP(3), CONSTRAINT "Ticket_pkey" PRIMARY KEY ("id") ); --- CreateTable -CREATE TABLE "TicketSeat" ( - "id" TEXT NOT NULL, - "ticketId" TEXT NOT NULL, - "seatId" TEXT NOT NULL, - "seatIndex" INTEGER NOT NULL DEFAULT 0, - - CONSTRAINT "TicketSeat_pkey" PRIMARY KEY ("id") -); - -- CreateTable CREATE TABLE "LoyaltyAccount" ( "id" TEXT NOT NULL, @@ -679,7 +701,7 @@ CREATE TABLE "SupportMessage" ( -- CreateTable CREATE TABLE "UserPreferences" ( "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, + "iamUserId" TEXT NOT NULL, "pushEnabled" BOOLEAN NOT NULL DEFAULT true, "emailEnabled" BOOLEAN NOT NULL DEFAULT true, "smsEnabled" BOOLEAN NOT NULL DEFAULT false, @@ -699,7 +721,7 @@ CREATE TABLE "UserPreferences" ( -- CreateTable CREATE TABLE "Device" ( "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, + "iamUserId" TEXT NOT NULL, "platform" "DevicePlatform" NOT NULL, "name" TEXT NOT NULL, "pushToken" TEXT, @@ -727,6 +749,7 @@ CREATE TABLE "SavedRoute" ( CREATE TABLE "Journey" ( "id" TEXT NOT NULL, "passengerId" TEXT NOT NULL, + "bookingId" TEXT, "status" TEXT NOT NULL, "totalMinor" INTEGER NOT NULL, "currency" TEXT NOT NULL DEFAULT 'ETB', @@ -796,7 +819,7 @@ CREATE TABLE "RouteStop" ( "routeId" TEXT NOT NULL, "stationId" TEXT NOT NULL, "sequence" INTEGER NOT NULL, - "distanceKm" INTEGER, + "distanceKm" DOUBLE PRECISION, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "RouteStop_pkey" PRIMARY KEY ("id") @@ -820,10 +843,27 @@ CREATE TABLE "RouteFareRule" ( CONSTRAINT "RouteFareRule_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "SegmentFareRule" ( + "id" TEXT NOT NULL, + "routeId" TEXT NOT NULL, + "originStopSequence" INTEGER NOT NULL, + "destinationStopSequence" INTEGER NOT NULL, + "seatClassId" TEXT NOT NULL, + "baseFareMinor" INTEGER NOT NULL, + "nationality" TEXT, + "currency" TEXT NOT NULL DEFAULT 'ETB', + "validFrom" TIMESTAMP(3) NOT NULL, + "validUntil" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "SegmentFareRule_pkey" PRIMARY KEY ("id") +); + -- CreateTable CREATE TABLE "Agent" ( "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, + "iamUserId" TEXT, "agentCode" TEXT NOT NULL, "stationId" TEXT, "commissionRate" INTEGER NOT NULL DEFAULT 5, @@ -910,6 +950,7 @@ CREATE TABLE "GateValidationLog" ( "ticketId" TEXT NOT NULL, "validatorId" TEXT NOT NULL, "gateId" TEXT, + "leg" TEXT, "status" TEXT NOT NULL, "reason" TEXT, "validatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -943,10 +984,32 @@ CREATE TABLE "BaggageBooking" ( CONSTRAINT "BaggageBooking_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "ExcessBaggageCharge" ( + "id" TEXT NOT NULL, + "bookingId" TEXT NOT NULL, + "agentId" TEXT NOT NULL, + "excessWeightKg" INTEGER NOT NULL, + "feePerKgMinor" INTEGER NOT NULL, + "totalMinor" INTEGER NOT NULL, + "currency" TEXT NOT NULL DEFAULT 'ETB', + "status" TEXT NOT NULL DEFAULT 'PENDING', + "paymentToken" TEXT NOT NULL, + "expiresAt" TIMESTAMP(3) NOT NULL, + "paidAt" TIMESTAMP(3), + "waivedBy" TEXT, + "waivedReason" TEXT, + "contactPhone" TEXT, + "contactEmail" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "ExcessBaggageCharge_pkey" PRIMARY KEY ("id") +); + -- CreateTable CREATE TABLE "AuditLog" ( "id" TEXT NOT NULL, - "userId" TEXT, + "iamUserId" TEXT, "action" TEXT NOT NULL, "entityType" TEXT NOT NULL, "entityId" TEXT, @@ -1014,7 +1077,7 @@ CREATE TABLE "FraudRule" ( -- CreateTable CREATE TABLE "FraudAlert" ( "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, + "iamUserId" TEXT NOT NULL, "eventType" TEXT NOT NULL, "triggeredRules" TEXT[], "context" JSONB NOT NULL, @@ -1077,7 +1140,7 @@ CREATE TABLE "FaydaVerificationSession" ( "id" TEXT NOT NULL, "state" TEXT NOT NULL, "codeVerifier" TEXT NOT NULL, - "purpose" TEXT NOT NULL DEFAULT 'PURCHASE', + "purpose" TEXT NOT NULL DEFAULT 'VERIFY', "platform" TEXT NOT NULL DEFAULT 'WEB', "saveToAccount" BOOLEAN NOT NULL DEFAULT false, "status" TEXT NOT NULL DEFAULT 'PENDING', @@ -1087,12 +1150,137 @@ CREATE TABLE "FaydaVerificationSession" ( "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "expiresAt" TIMESTAMP(3) NOT NULL, "completedAt" TIMESTAMP(3), - "userId" TEXT, + "iamUserId" TEXT, "bookingId" TEXT, CONSTRAINT "FaydaVerificationSession_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "SystemConfig" ( + "id" TEXT NOT NULL, + "key" TEXT NOT NULL, + "value" TEXT NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "SystemConfig_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TravelPackage" ( + "id" TEXT NOT NULL, + "code" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "status" "PackageStatus" NOT NULL DEFAULT 'DRAFT', + "outboundScheduleId" TEXT NOT NULL, + "returnScheduleId" TEXT NOT NULL, + "originStationId" TEXT NOT NULL, + "destinationStationId" TEXT NOT NULL, + "boardingTime" TIMESTAMP(3) NOT NULL, + "departureTime" TIMESTAMP(3) NOT NULL, + "arrivalTime" TIMESTAMP(3) NOT NULL, + "totalCapacity" INTEGER NOT NULL, + "bookedCount" INTEGER NOT NULL DEFAULT 0, + "includedServices" JSONB NOT NULL, + "coachConfiguration" TEXT, + "busTransferIncluded" BOOLEAN NOT NULL DEFAULT false, + "busTransferRoute" TEXT, + "validFrom" TIMESTAMP(3) NOT NULL, + "validUntil" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "TravelPackage_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "PackagePriceTier" ( + "id" TEXT NOT NULL, + "packageId" TEXT NOT NULL, + "seatType" TEXT NOT NULL, + "label" TEXT NOT NULL, + "priceMinor" INTEGER NOT NULL, + "currency" TEXT NOT NULL DEFAULT 'ETB', + "availableSeats" INTEGER NOT NULL DEFAULT 0, + "bookedSeats" INTEGER NOT NULL DEFAULT 0, + + CONSTRAINT "PackagePriceTier_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "PackageBooking" ( + "id" TEXT NOT NULL, + "bookingRef" TEXT NOT NULL, + "packageId" TEXT NOT NULL, + "priceTierId" TEXT NOT NULL, + "passengerId" TEXT, + "contactEmail" TEXT, + "contactPhone" TEXT, + "status" "BookingStatus" NOT NULL DEFAULT 'PENDING_PAYMENT', + "passengerCount" INTEGER NOT NULL DEFAULT 1, + "totalMinor" INTEGER NOT NULL, + "currency" TEXT NOT NULL DEFAULT 'ETB', + "displayCurrency" "Currency", + "displayTotalMinor" INTEGER, + "promoCode" TEXT, + "source" TEXT NOT NULL DEFAULT 'WEB', + "paidAt" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "PackageBooking_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "PackageBookingPassenger" ( + "id" TEXT NOT NULL, + "bookingId" TEXT NOT NULL, + "passengerName" TEXT NOT NULL, + "dateOfBirth" TIMESTAMP(3), + "idDocumentType" "IdDocumentType", + "idDocumentNumber" TEXT, + "passportNumber" TEXT, + "passportCountry" TEXT, + "seatLabel" TEXT, + + CONSTRAINT "PackageBookingPassenger_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "PackagePaymentIntent" ( + "id" TEXT NOT NULL, + "packageBookingId" TEXT NOT NULL, + "amountMinor" INTEGER NOT NULL, + "currency" TEXT NOT NULL DEFAULT 'ETB', + "method" "PaymentMethodType" NOT NULL, + "status" "PaymentIntentStatus" NOT NULL DEFAULT 'REQUIRES_ACTION', + "providerRef" TEXT, + "paidAt" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "PackagePaymentIntent_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "PackageInquiry" ( + "id" TEXT NOT NULL, + "packageId" TEXT NOT NULL, + "priceTierId" TEXT, + "travelerCount" INTEGER NOT NULL, + "contactName" TEXT NOT NULL, + "contactEmail" TEXT, + "contactPhone" TEXT, + "notes" TEXT, + "status" TEXT NOT NULL DEFAULT 'NEW', + "enquiredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "PackageInquiry_pkey" PRIMARY KEY ("id") +); + -- CreateIndex CREATE INDEX "SeatClass_coachTypeId_idx" ON "SeatClass"("coachTypeId"); @@ -1114,15 +1302,24 @@ CREATE UNIQUE INDEX "Session_token_key" ON "Session"("token"); -- CreateIndex CREATE UNIQUE INDEX "Passenger_userId_key" ON "Passenger"("userId"); +-- CreateIndex +CREATE UNIQUE INDEX "Passenger_iamUserId_key" ON "Passenger"("iamUserId"); + -- CreateIndex CREATE INDEX "Passenger_userId_idx" ON "Passenger"("userId"); +-- CreateIndex +CREATE INDEX "Passenger_iamUserId_idx" ON "Passenger"("iamUserId"); + -- CreateIndex CREATE UNIQUE INDEX "Station_code_key" ON "Station"("code"); -- CreateIndex CREATE INDEX "Station_city_countryCode_idx" ON "Station"("city", "countryCode"); +-- CreateIndex +CREATE INDEX "Station_sequence_idx" ON "Station"("sequence"); + -- CreateIndex CREATE UNIQUE INDEX "Train_number_key" ON "Train"("number"); @@ -1141,6 +1338,9 @@ CREATE UNIQUE INDEX "Coach_number_key" ON "Coach"("number"); -- CreateIndex CREATE INDEX "Coach_coachTypeId_idx" ON "Coach"("coachTypeId"); +-- CreateIndex +CREATE INDEX "Coach_sequence_idx" ON "Coach"("sequence"); + -- CreateIndex CREATE INDEX "CoachAssignment_scheduleId_idx" ON "CoachAssignment"("scheduleId"); @@ -1165,6 +1365,9 @@ CREATE UNIQUE INDEX "Booking_bookingRef_key" ON "Booking"("bookingRef"); -- CreateIndex CREATE INDEX "Booking_passengerId_status_idx" ON "Booking"("passengerId", "status"); +-- CreateIndex +CREATE INDEX "Booking_bookingType_idx" ON "Booking"("bookingType"); + -- CreateIndex CREATE UNIQUE INDEX "PaymentMethod_type_key" ON "PaymentMethod"("type"); @@ -1187,13 +1390,10 @@ CREATE INDEX "PaymentWebhookEvent_merchantOrderId_idx" ON "PaymentWebhookEvent"( CREATE UNIQUE INDEX "PaymentWebhookEvent_provider_externalEventId_key" ON "PaymentWebhookEvent"("provider", "externalEventId"); -- CreateIndex -CREATE UNIQUE INDEX "Ticket_bookingId_key" ON "Ticket"("bookingId"); +CREATE INDEX "Ticket_bookingId_idx" ON "Ticket"("bookingId"); -- CreateIndex -CREATE INDEX "TicketSeat_ticketId_idx" ON "TicketSeat"("ticketId"); - --- CreateIndex -CREATE INDEX "TicketSeat_seatId_idx" ON "TicketSeat"("seatId"); +CREATE INDEX "Ticket_seatId_idx" ON "Ticket"("seatId"); -- CreateIndex CREATE UNIQUE INDEX "LoyaltyAccount_passengerId_key" ON "LoyaltyAccount"("passengerId"); @@ -1208,7 +1408,10 @@ CREATE INDEX "WalletAccount_passengerId_idx" ON "WalletAccount"("passengerId"); CREATE UNIQUE INDEX "Promotion_code_key" ON "Promotion"("code"); -- CreateIndex -CREATE UNIQUE INDEX "UserPreferences_userId_key" ON "UserPreferences"("userId"); +CREATE UNIQUE INDEX "UserPreferences_iamUserId_key" ON "UserPreferences"("iamUserId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Journey_bookingId_key" ON "Journey"("bookingId"); -- CreateIndex CREATE INDEX "OtpCode_email_phone_idx" ON "OtpCode"("email", "phone"); @@ -1232,11 +1435,20 @@ CREATE UNIQUE INDEX "RouteStop_routeId_sequence_key" ON "RouteStop"("routeId", " CREATE INDEX "RouteFareRule_routeId_seatClassId_idx" ON "RouteFareRule"("routeId", "seatClassId"); -- CreateIndex -CREATE UNIQUE INDEX "Agent_userId_key" ON "Agent"("userId"); +CREATE INDEX "SegmentFareRule_routeId_seatClassId_idx" ON "SegmentFareRule"("routeId", "seatClassId"); + +-- CreateIndex +CREATE UNIQUE INDEX "SegmentFareRule_routeId_originStopSequence_destinationStopS_key" ON "SegmentFareRule"("routeId", "originStopSequence", "destinationStopSequence", "seatClassId", "nationality"); + +-- CreateIndex +CREATE UNIQUE INDEX "Agent_iamUserId_key" ON "Agent"("iamUserId"); -- CreateIndex CREATE UNIQUE INDEX "Agent_agentCode_key" ON "Agent"("agentCode"); +-- CreateIndex +CREATE INDEX "Agent_iamUserId_idx" ON "Agent"("iamUserId"); + -- CreateIndex CREATE UNIQUE INDEX "AgentBooking_bookingId_key" ON "AgentBooking"("bookingId"); @@ -1262,7 +1474,19 @@ CREATE INDEX "GateValidationLog_validatorId_idx" ON "GateValidationLog"("validat CREATE INDEX "BaggageBooking_bookingId_idx" ON "BaggageBooking"("bookingId"); -- CreateIndex -CREATE INDEX "AuditLog_userId_createdAt_idx" ON "AuditLog"("userId", "createdAt"); +CREATE UNIQUE INDEX "ExcessBaggageCharge_paymentToken_key" ON "ExcessBaggageCharge"("paymentToken"); + +-- CreateIndex +CREATE INDEX "ExcessBaggageCharge_bookingId_idx" ON "ExcessBaggageCharge"("bookingId"); + +-- CreateIndex +CREATE INDEX "ExcessBaggageCharge_paymentToken_idx" ON "ExcessBaggageCharge"("paymentToken"); + +-- CreateIndex +CREATE INDEX "ExcessBaggageCharge_status_idx" ON "ExcessBaggageCharge"("status"); + +-- CreateIndex +CREATE INDEX "AuditLog_iamUserId_createdAt_idx" ON "AuditLog"("iamUserId", "createdAt"); -- CreateIndex CREATE INDEX "AuditLog_entityType_entityId_idx" ON "AuditLog"("entityType", "entityId"); @@ -1280,7 +1504,7 @@ CREATE INDEX "OperationalReport_reportType_dateFrom_idx" ON "OperationalReport"( CREATE UNIQUE INDEX "FraudRule_type_key" ON "FraudRule"("type"); -- CreateIndex -CREATE INDEX "FraudAlert_userId_createdAt_idx" ON "FraudAlert"("userId", "createdAt"); +CREATE INDEX "FraudAlert_iamUserId_createdAt_idx" ON "FraudAlert"("iamUserId", "createdAt"); -- CreateIndex CREATE INDEX "FraudAlert_acknowledged_idx" ON "FraudAlert"("acknowledged"); @@ -1307,7 +1531,7 @@ CREATE INDEX "SavedPassengerProfile_deviceId_idx" ON "SavedPassengerProfile"("de CREATE UNIQUE INDEX "FaydaVerificationSession_state_key" ON "FaydaVerificationSession"("state"); -- CreateIndex -CREATE INDEX "FaydaVerificationSession_userId_idx" ON "FaydaVerificationSession"("userId"); +CREATE INDEX "FaydaVerificationSession_iamUserId_idx" ON "FaydaVerificationSession"("iamUserId"); -- CreateIndex CREATE INDEX "FaydaVerificationSession_bookingId_idx" ON "FaydaVerificationSession"("bookingId"); @@ -1318,6 +1542,30 @@ CREATE INDEX "FaydaVerificationSession_state_idx" ON "FaydaVerificationSession"( -- CreateIndex CREATE INDEX "FaydaVerificationSession_expiresAt_idx" ON "FaydaVerificationSession"("expiresAt"); +-- CreateIndex +CREATE UNIQUE INDEX "SystemConfig_key_key" ON "SystemConfig"("key"); + +-- CreateIndex +CREATE UNIQUE INDEX "TravelPackage_code_key" ON "TravelPackage"("code"); + +-- CreateIndex +CREATE INDEX "TravelPackage_status_validFrom_idx" ON "TravelPackage"("status", "validFrom"); + +-- CreateIndex +CREATE UNIQUE INDEX "PackagePriceTier_packageId_seatType_key" ON "PackagePriceTier"("packageId", "seatType"); + +-- CreateIndex +CREATE UNIQUE INDEX "PackageBooking_bookingRef_key" ON "PackageBooking"("bookingRef"); + +-- CreateIndex +CREATE INDEX "PackageBooking_packageId_status_idx" ON "PackageBooking"("packageId", "status"); + +-- CreateIndex +CREATE UNIQUE INDEX "PackagePaymentIntent_packageBookingId_key" ON "PackagePaymentIntent"("packageBookingId"); + +-- CreateIndex +CREATE INDEX "PackageInquiry_packageId_idx" ON "PackageInquiry"("packageId"); + -- AddForeignKey ALTER TABLE "SeatClass" ADD CONSTRAINT "SeatClass_coachTypeId_fkey" FOREIGN KEY ("coachTypeId") REFERENCES "CoachType"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -1325,7 +1573,7 @@ ALTER TABLE "SeatClass" ADD CONSTRAINT "SeatClass_coachTypeId_fkey" FOREIGN KEY ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "Passenger" ADD CONSTRAINT "Passenger_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "Passenger" ADD CONSTRAINT "Passenger_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "TravelerProfile" ADD CONSTRAINT "TravelerProfile_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -1372,6 +1620,9 @@ ALTER TABLE "Booking" ADD CONSTRAINT "Booking_passengerId_fkey" FOREIGN KEY ("pa -- AddForeignKey ALTER TABLE "Booking" ADD CONSTRAINT "Booking_scheduleId_fkey" FOREIGN KEY ("scheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "Booking" ADD CONSTRAINT "Booking_returnScheduleId_fkey" FOREIGN KEY ("returnScheduleId") REFERENCES "TrainSchedule"("id") ON DELETE SET NULL ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "BookingSeat" ADD CONSTRAINT "BookingSeat_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -1388,10 +1639,7 @@ ALTER TABLE "PaymentRefund" ADD CONSTRAINT "PaymentRefund_paymentIntentId_fkey" ALTER TABLE "Ticket" ADD CONSTRAINT "Ticket_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "TicketSeat" ADD CONSTRAINT "TicketSeat_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "Ticket"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "TicketSeat" ADD CONSTRAINT "TicketSeat_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "Ticket" ADD CONSTRAINT "Ticket_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "LoyaltyAccount" ADD CONSTRAINT "LoyaltyAccount_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -1432,15 +1680,12 @@ ALTER TABLE "FaqArticle" ADD CONSTRAINT "FaqArticle_categoryId_fkey" FOREIGN KEY -- AddForeignKey ALTER TABLE "SupportMessage" ADD CONSTRAINT "SupportMessage_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "SupportConversation"("id") ON DELETE RESTRICT ON UPDATE CASCADE; --- AddForeignKey -ALTER TABLE "UserPreferences" ADD CONSTRAINT "UserPreferences_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Device" ADD CONSTRAINT "Device_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -- AddForeignKey ALTER TABLE "SavedRoute" ADD CONSTRAINT "SavedRoute_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "Journey" ADD CONSTRAINT "Journey_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE SET NULL ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "JourneySegment" ADD CONSTRAINT "JourneySegment_journeyId_fkey" FOREIGN KEY ("journeyId") REFERENCES "Journey"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -1457,7 +1702,10 @@ ALTER TABLE "RouteFareRule" ADD CONSTRAINT "RouteFareRule_routeId_fkey" FOREIGN ALTER TABLE "RouteFareRule" ADD CONSTRAINT "RouteFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "Agent" ADD CONSTRAINT "Agent_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_routeId_fkey" FOREIGN KEY ("routeId") REFERENCES "Route"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "SegmentFareRule" ADD CONSTRAINT "SegmentFareRule_seatClassId_fkey" FOREIGN KEY ("seatClassId") REFERENCES "SeatClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "AgentBooking" ADD CONSTRAINT "AgentBooking_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -1484,13 +1732,37 @@ ALTER TABLE "GateValidationLog" ADD CONSTRAINT "GateValidationLog_ticketId_fkey" ALTER TABLE "BaggageBooking" ADD CONSTRAINT "BaggageBooking_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "AuditLog" ADD CONSTRAINT "AuditLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; +ALTER TABLE "ExcessBaggageCharge" ADD CONSTRAINT "ExcessBaggageCharge_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "Booking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "SeatBlock" ADD CONSTRAINT "SeatBlock_seatId_fkey" FOREIGN KEY ("seatId") REFERENCES "Seat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "FraudAlert" ADD CONSTRAINT "FraudAlert_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE "TravelPackage" ADD CONSTRAINT "TravelPackage_outboundScheduleId_fkey" FOREIGN KEY ("outboundScheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "FaydaVerificationSession" ADD CONSTRAINT "FaydaVerificationSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE "TravelPackage" ADD CONSTRAINT "TravelPackage_returnScheduleId_fkey" FOREIGN KEY ("returnScheduleId") REFERENCES "TrainSchedule"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackagePriceTier" ADD CONSTRAINT "PackagePriceTier_packageId_fkey" FOREIGN KEY ("packageId") REFERENCES "TravelPackage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackageBooking" ADD CONSTRAINT "PackageBooking_packageId_fkey" FOREIGN KEY ("packageId") REFERENCES "TravelPackage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackageBooking" ADD CONSTRAINT "PackageBooking_priceTierId_fkey" FOREIGN KEY ("priceTierId") REFERENCES "PackagePriceTier"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackageBooking" ADD CONSTRAINT "PackageBooking_passengerId_fkey" FOREIGN KEY ("passengerId") REFERENCES "Passenger"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackageBookingPassenger" ADD CONSTRAINT "PackageBookingPassenger_bookingId_fkey" FOREIGN KEY ("bookingId") REFERENCES "PackageBooking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackagePaymentIntent" ADD CONSTRAINT "PackagePaymentIntent_packageBookingId_fkey" FOREIGN KEY ("packageBookingId") REFERENCES "PackageBooking"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackageInquiry" ADD CONSTRAINT "PackageInquiry_packageId_fkey" FOREIGN KEY ("packageId") REFERENCES "TravelPackage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PackageInquiry" ADD CONSTRAINT "PackageInquiry_priceTierId_fkey" FOREIGN KEY ("priceTierId") REFERENCES "PackagePriceTier"("id") ON DELETE SET NULL ON UPDATE CASCADE;