-- CreateEnum CREATE TYPE "FieldType" AS ENUM ('text', 'number', 'date', 'textarea', 'boolean'); -- CreateTable CREATE TABLE "forms" ( "id" SERIAL NOT NULL, "title" TEXT NOT NULL, "description" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "forms_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "categories" ( "id" SERIAL NOT NULL, "form_id" INTEGER NOT NULL, "name" TEXT NOT NULL, "sort_order" INTEGER NOT NULL DEFAULT 0, CONSTRAINT "categories_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "fields" ( "id" SERIAL NOT NULL, "category_id" INTEGER NOT NULL, "label" TEXT NOT NULL, "type" "FieldType" NOT NULL, "description" TEXT, "sort_order" INTEGER NOT NULL, CONSTRAINT "fields_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "responses" ( "id" SERIAL NOT NULL, "form_id" INTEGER NOT NULL, "submitted_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "responses_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "response_values" ( "id" SERIAL NOT NULL, "response_id" INTEGER NOT NULL, "field_id" INTEGER NOT NULL, "value" TEXT, CONSTRAINT "response_values_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "mantis_summaries" ( "id" SERIAL NOT NULL, "summary_date" DATE NOT NULL, "summary_text" TEXT NOT NULL, "generated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "mantis_summaries_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "EmailSummary" ( "id" SERIAL NOT NULL, "summaryDate" DATE NOT NULL, "summaryText" TEXT NOT NULL, "generatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "EmailSummary_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "settings" ( "key" TEXT NOT NULL, "value" TEXT NOT NULL, CONSTRAINT "settings_pkey" PRIMARY KEY ("key") ); -- CreateTable CREATE TABLE "users" ( "id" TEXT NOT NULL, "username" TEXT NOT NULL, CONSTRAINT "users_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "authenticators" ( "id" TEXT NOT NULL, "credential_id" TEXT NOT NULL, "credential_public_key" BYTEA NOT NULL, "counter" BIGINT NOT NULL, "credential_device_type" TEXT NOT NULL, "credential_backed_up" BOOLEAN NOT NULL, "transports" TEXT, "user_id" TEXT NOT NULL, CONSTRAINT "authenticators_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "chat_threads" ( "id" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "chat_threads_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "chat_messages" ( "id" TEXT NOT NULL, "thread_id" TEXT NOT NULL, "sender" TEXT NOT NULL, "content" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "chat_messages_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "mantis_summaries_summary_date_key" ON "mantis_summaries"("summary_date"); -- CreateIndex CREATE UNIQUE INDEX "EmailSummary_summaryDate_key" ON "EmailSummary"("summaryDate"); -- CreateIndex CREATE UNIQUE INDEX "users_username_key" ON "users"("username"); -- CreateIndex CREATE UNIQUE INDEX "authenticators_credential_id_key" ON "authenticators"("credential_id"); -- AddForeignKey ALTER TABLE "categories" ADD CONSTRAINT "categories_form_id_fkey" FOREIGN KEY ("form_id") REFERENCES "forms"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "fields" ADD CONSTRAINT "fields_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "categories"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "responses" ADD CONSTRAINT "responses_form_id_fkey" FOREIGN KEY ("form_id") REFERENCES "forms"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "response_values" ADD CONSTRAINT "response_values_response_id_fkey" FOREIGN KEY ("response_id") REFERENCES "responses"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "response_values" ADD CONSTRAINT "response_values_field_id_fkey" FOREIGN KEY ("field_id") REFERENCES "fields"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "authenticators" ADD CONSTRAINT "authenticators_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "chat_messages" ADD CONSTRAINT "chat_messages_thread_id_fkey" FOREIGN KEY ("thread_id") REFERENCES "chat_threads"("id") ON DELETE CASCADE ON UPDATE CASCADE;