-- CreateEnum CREATE TYPE "VisaStatus" AS ENUM ('NOT_NEEDED', 'REQUESTED', 'INVITATION_SENT', 'APPOINTMENT_BOOKED', 'GRANTED', 'DENIED'); -- AlterTable ALTER TABLE "Program" ADD COLUMN "visaStatusVisibleToMembers" BOOLEAN NOT NULL DEFAULT true; -- CreateTable CREATE TABLE "VisaApplication" ( "id" TEXT NOT NULL, "attendingMemberId" TEXT NOT NULL, "status" "VisaStatus" NOT NULL DEFAULT 'REQUESTED', "nationality" TEXT, "invitationSentAt" TIMESTAMP(3), "appointmentAt" TIMESTAMP(3), "decisionAt" TIMESTAMP(3), "notes" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "VisaApplication_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "VisaApplication_attendingMemberId_key" ON "VisaApplication"("attendingMemberId"); -- CreateIndex CREATE INDEX "VisaApplication_status_idx" ON "VisaApplication"("status"); -- AddForeignKey ALTER TABLE "VisaApplication" ADD CONSTRAINT "VisaApplication_attendingMemberId_fkey" FOREIGN KEY ("attendingMemberId") REFERENCES "AttendingMember"("id") ON DELETE CASCADE ON UPDATE CASCADE;