161 lines
6.2 KiB
SQL

-- AlterEnum
ALTER TYPE "ContactActivityType" ADD VALUE 'POLL_VOTED';
-- AlterEnum
ALTER TYPE "ContactSource" ADD VALUE 'POLL_VOTE';
-- AlterEnum
ALTER TYPE "SignupSource" ADD VALUE 'POLL_CONVERSION';
-- AlterTable
ALTER TABLE "contacts" ADD COLUMN "pronouns" TEXT;
-- AlterTable
ALTER TABLE "scheduling_poll_votes" ADD COLUMN "contact_id" TEXT;
-- AlterTable
ALTER TABLE "scheduling_polls" ADD COLUMN "auto_enroll_voters" BOOLEAN NOT NULL DEFAULT true;
-- AlterTable
ALTER TABLE "users" ADD COLUMN "pronouns" TEXT;
-- CreateTable
CREATE TABLE "participant_needs" (
"id" TEXT NOT NULL,
"user_id" TEXT,
"contact_id" TEXT,
"needs_wheelchair" BOOLEAN NOT NULL DEFAULT false,
"needs_ground_floor" BOOLEAN NOT NULL DEFAULT false,
"needs_hearing_loop" BOOLEAN NOT NULL DEFAULT false,
"needs_sign_language" BOOLEAN NOT NULL DEFAULT false,
"other_accessibility" TEXT,
"is_vegan" BOOLEAN NOT NULL DEFAULT false,
"is_vegetarian" BOOLEAN NOT NULL DEFAULT false,
"is_gluten_free" BOOLEAN NOT NULL DEFAULT false,
"is_halal" BOOLEAN NOT NULL DEFAULT false,
"is_kosher" BOOLEAN NOT NULL DEFAULT false,
"has_nut_allergy" BOOLEAN NOT NULL DEFAULT false,
"other_dietary" TEXT,
"needs_childcare" BOOLEAN NOT NULL DEFAULT false,
"childcare_details" TEXT,
"needs_transportation" BOOLEAN NOT NULL DEFAULT false,
"transportation_notes" TEXT,
"preferred_language" TEXT DEFAULT 'en',
"needs_translation" BOOLEAN NOT NULL DEFAULT false,
"translation_language" TEXT,
"visibility_consent" TEXT NOT NULL DEFAULT 'organizer_only',
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "participant_needs_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "meeting_agendas" (
"id" TEXT NOT NULL,
"shift_id" TEXT,
"poll_id" TEXT,
"title" TEXT NOT NULL,
"items" JSONB NOT NULL DEFAULT '[]',
"status" TEXT NOT NULL DEFAULT 'draft',
"created_by_user_id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "meeting_agendas_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "meeting_minutes" (
"id" TEXT NOT NULL,
"agenda_id" TEXT NOT NULL,
"notes" TEXT NOT NULL,
"decisions" JSONB NOT NULL DEFAULT '[]',
"attendees" JSONB NOT NULL DEFAULT '[]',
"approved_at" TIMESTAMP(3),
"approved_by_user_id" TEXT,
"created_by_user_id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "meeting_minutes_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "action_items" (
"id" TEXT NOT NULL,
"agenda_id" TEXT,
"title" TEXT NOT NULL,
"description" TEXT,
"assignee_user_id" TEXT,
"due_date" TIMESTAMP(3),
"status" TEXT NOT NULL DEFAULT 'open',
"priority" TEXT NOT NULL DEFAULT 'normal',
"completed_at" TIMESTAMP(3),
"created_by_user_id" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "action_items_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "participant_needs_user_id_key" ON "participant_needs"("user_id");
-- CreateIndex
CREATE UNIQUE INDEX "participant_needs_contact_id_key" ON "participant_needs"("contact_id");
-- CreateIndex
CREATE UNIQUE INDEX "meeting_agendas_shift_id_key" ON "meeting_agendas"("shift_id");
-- CreateIndex
CREATE UNIQUE INDEX "meeting_agendas_poll_id_key" ON "meeting_agendas"("poll_id");
-- CreateIndex
CREATE UNIQUE INDEX "meeting_minutes_agenda_id_key" ON "meeting_minutes"("agenda_id");
-- CreateIndex
CREATE INDEX "action_items_assignee_user_id_status_idx" ON "action_items"("assignee_user_id", "status");
-- CreateIndex
CREATE INDEX "action_items_due_date_idx" ON "action_items"("due_date");
-- CreateIndex
CREATE INDEX "scheduling_poll_votes_contact_id_idx" ON "scheduling_poll_votes"("contact_id");
-- AddForeignKey
ALTER TABLE "scheduling_poll_votes" ADD CONSTRAINT "scheduling_poll_votes_contact_id_fkey" FOREIGN KEY ("contact_id") REFERENCES "contacts"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "participant_needs" ADD CONSTRAINT "participant_needs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "participant_needs" ADD CONSTRAINT "participant_needs_contact_id_fkey" FOREIGN KEY ("contact_id") REFERENCES "contacts"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "meeting_agendas" ADD CONSTRAINT "meeting_agendas_shift_id_fkey" FOREIGN KEY ("shift_id") REFERENCES "shifts"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "meeting_agendas" ADD CONSTRAINT "meeting_agendas_poll_id_fkey" FOREIGN KEY ("poll_id") REFERENCES "scheduling_polls"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "meeting_agendas" ADD CONSTRAINT "meeting_agendas_created_by_user_id_fkey" FOREIGN KEY ("created_by_user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "meeting_minutes" ADD CONSTRAINT "meeting_minutes_agenda_id_fkey" FOREIGN KEY ("agenda_id") REFERENCES "meeting_agendas"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "meeting_minutes" ADD CONSTRAINT "meeting_minutes_approved_by_user_id_fkey" FOREIGN KEY ("approved_by_user_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "meeting_minutes" ADD CONSTRAINT "meeting_minutes_created_by_user_id_fkey" FOREIGN KEY ("created_by_user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "action_items" ADD CONSTRAINT "action_items_agenda_id_fkey" FOREIGN KEY ("agenda_id") REFERENCES "meeting_agendas"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "action_items" ADD CONSTRAINT "action_items_assignee_user_id_fkey" FOREIGN KEY ("assignee_user_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "action_items" ADD CONSTRAINT "action_items_created_by_user_id_fkey" FOREIGN KEY ("created_by_user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;