- Introduced recurring booking groups with the ability to create and cancel them. - Added database migrations for recurring bookings, including new tables and relationships. - Implemented handlers for creating and canceling recurring bookings in the admin booking module. - Enhanced existing booking services to support recurring bookings logic. - Updated API contract to include new schemas for recurring bookings. - Refactored existing code for improved readability and maintainability.
47 lines
1.9 KiB
SQL
47 lines
1.9 KiB
SQL
-- 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;
|