-- AlterTable ALTER TABLE "GuildSettings" ADD COLUMN "registerConfig" JSONB, ADD COLUMN "registerEnabled" BOOLEAN; -- CreateTable CREATE TABLE "RegisterForm" ( "id" TEXT NOT NULL, "guildId" TEXT NOT NULL, "name" TEXT NOT NULL, "description" TEXT, "reviewChannelId" TEXT, "notifyRoleIds" TEXT[], "isActive" BOOLEAN NOT NULL DEFAULT true, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "RegisterForm_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "RegisterFormField" ( "id" TEXT NOT NULL, "formId" TEXT NOT NULL, "label" TEXT NOT NULL, "type" TEXT NOT NULL, "required" BOOLEAN NOT NULL DEFAULT false, "sortOrder" INTEGER NOT NULL DEFAULT 0, CONSTRAINT "RegisterFormField_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "RegisterApplication" ( "id" TEXT NOT NULL, "guildId" TEXT NOT NULL, "userId" TEXT NOT NULL, "formId" TEXT NOT NULL, "status" TEXT NOT NULL DEFAULT 'pending', "reviewedBy" TEXT, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL, CONSTRAINT "RegisterApplication_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "RegisterApplicationAnswer" ( "id" TEXT NOT NULL, "applicationId" TEXT NOT NULL, "fieldId" TEXT NOT NULL, "value" TEXT NOT NULL, CONSTRAINT "RegisterApplicationAnswer_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "RegisterForm_guildId_isActive_idx" ON "RegisterForm"("guildId", "isActive"); -- CreateIndex CREATE INDEX "RegisterApplication_guildId_formId_status_idx" ON "RegisterApplication"("guildId", "formId", "status"); -- AddForeignKey ALTER TABLE "RegisterFormField" ADD CONSTRAINT "RegisterFormField_formId_fkey" FOREIGN KEY ("formId") REFERENCES "RegisterForm"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "RegisterApplication" ADD CONSTRAINT "RegisterApplication_formId_fkey" FOREIGN KEY ("formId") REFERENCES "RegisterForm"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "RegisterApplicationAnswer" ADD CONSTRAINT "RegisterApplicationAnswer_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "RegisterApplication"("id") ON DELETE CASCADE ON UPDATE CASCADE;