-- CreateEnum CREATE TYPE "RecurringBookingGroupStatus" AS ENUM ('ACTIVE', 'CANCELLED'); -- AlterTable ALTER TABLE "court_bookings" ADD COLUMN "recurring_group_id" UUID; -- CreateTable CREATE TABLE "recurring_booking_groups" ( "id" UUID NOT NULL, "complex_id" UUID NOT NULL, "court_id" UUID NOT NULL, "start_time" VARCHAR(5) NOT NULL, "end_time" VARCHAR(5) NOT NULL, "day_of_week" "DayOfWeek" NOT NULL, "start_date" DATE NOT NULL, "end_date" DATE, "status" "RecurringBookingGroupStatus" NOT NULL DEFAULT 'ACTIVE', "customer_name" VARCHAR(120) NOT NULL, "customer_phone" VARCHAR(30) NOT NULL, "customer_email" VARCHAR(254) NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "recurring_booking_groups_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "recurring_booking_groups_complex_id_idx" ON "recurring_booking_groups"("complex_id"); -- CreateIndex CREATE INDEX "recurring_booking_groups_court_id_idx" ON "recurring_booking_groups"("court_id"); -- CreateIndex CREATE INDEX "recurring_booking_groups_status_idx" ON "recurring_booking_groups"("status"); -- CreateIndex CREATE INDEX "court_bookings_recurring_group_id_idx" ON "court_bookings"("recurring_group_id"); -- AddForeignKey ALTER TABLE "court_bookings" ADD CONSTRAINT "court_bookings_recurring_group_id_fkey" FOREIGN KEY ("recurring_group_id") REFERENCES "recurring_booking_groups"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "recurring_booking_groups" ADD CONSTRAINT "recurring_booking_groups_court_id_fkey" FOREIGN KEY ("court_id") REFERENCES "courts"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "recurring_booking_groups" ADD CONSTRAINT "recurring_booking_groups_complex_id_fkey" FOREIGN KEY ("complex_id") REFERENCES "complexes"("id") ON DELETE CASCADE ON UPDATE CASCADE;