diff --git a/src/database/migrations/20251203171300_add_register_module/migration.sql b/src/database/migrations/20251203171300_add_register_module/migration.sql new file mode 100644 index 0000000..eff5714 --- /dev/null +++ b/src/database/migrations/20251203171300_add_register_module/migration.sql @@ -0,0 +1,69 @@ +-- 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;