diff --git a/prisma/migrations/20260205223133_add_15_features/migration.sql b/prisma/migrations/20260205223133_add_15_features/migration.sql new file mode 100644 index 0000000..5ce6014 --- /dev/null +++ b/prisma/migrations/20260205223133_add_15_features/migration.sql @@ -0,0 +1,550 @@ +/* + Warnings: + + - You are about to drop the `ApplicationForm` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `ApplicationFormField` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `ApplicationFormSubmission` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `OnboardingStep` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `SubmissionFile` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- AlterEnum +-- This migration adds more than one value to an enum. +-- With PostgreSQL versions 11 and earlier, this is not possible +-- in a single migration. This can be worked around by creating +-- multiple migrations, each migration adding only one value to +-- the enum. + + +ALTER TYPE "SettingCategory" ADD VALUE 'DIGEST'; +ALTER TYPE "SettingCategory" ADD VALUE 'ANALYTICS'; +ALTER TYPE "SettingCategory" ADD VALUE 'AUDIT_CONFIG'; +ALTER TYPE "SettingCategory" ADD VALUE 'INTEGRATIONS'; +ALTER TYPE "SettingCategory" ADD VALUE 'LOCALIZATION'; +ALTER TYPE "SettingCategory" ADD VALUE 'COMMUNICATION'; + +-- DropForeignKey +ALTER TABLE "ApplicationForm" DROP CONSTRAINT "ApplicationForm_programId_fkey"; + +-- DropForeignKey +ALTER TABLE "ApplicationForm" DROP CONSTRAINT "ApplicationForm_roundId_fkey"; + +-- DropForeignKey +ALTER TABLE "ApplicationFormField" DROP CONSTRAINT "ApplicationFormField_formId_fkey"; + +-- DropForeignKey +ALTER TABLE "ApplicationFormField" DROP CONSTRAINT "ApplicationFormField_stepId_fkey"; + +-- DropForeignKey +ALTER TABLE "ApplicationFormSubmission" DROP CONSTRAINT "ApplicationFormSubmission_formId_fkey"; + +-- DropForeignKey +ALTER TABLE "OnboardingStep" DROP CONSTRAINT "OnboardingStep_formId_fkey"; + +-- DropForeignKey +ALTER TABLE "SubmissionFile" DROP CONSTRAINT "SubmissionFile_submissionId_fkey"; + +-- DropIndex +DROP INDEX "User_email_idx"; + +-- AlterTable +ALTER TABLE "AssignmentJob" ALTER COLUMN "updatedAt" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "AuditLog" ADD COLUMN "previousDataJson" JSONB, +ADD COLUMN "sessionId" TEXT; + +-- AlterTable +ALTER TABLE "FilteringJob" ALTER COLUMN "updatedAt" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "LiveVote" ADD COLUMN "isAudienceVote" BOOLEAN NOT NULL DEFAULT false; + +-- AlterTable +ALTER TABLE "LiveVotingSession" ADD COLUMN "allowAudienceVotes" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "audienceVoteWeight" DOUBLE PRECISION NOT NULL DEFAULT 0, +ADD COLUMN "presentationSettingsJson" JSONB, +ADD COLUMN "tieBreakerMethod" TEXT NOT NULL DEFAULT 'admin_decides'; + +-- AlterTable +ALTER TABLE "MentorAssignment" ADD COLUMN "completionStatus" TEXT NOT NULL DEFAULT 'in_progress', +ADD COLUMN "lastViewedAt" TIMESTAMP(3); + +-- AlterTable +ALTER TABLE "NotificationEmailSetting" ALTER COLUMN "updatedAt" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "Project" ADD COLUMN "draftDataJson" JSONB, +ADD COLUMN "draftExpiresAt" TIMESTAMP(3), +ADD COLUMN "isDraft" BOOLEAN NOT NULL DEFAULT false; + +-- AlterTable +ALTER TABLE "ProjectFile" ADD COLUMN "isLate" BOOLEAN NOT NULL DEFAULT false, +ADD COLUMN "replacedById" TEXT, +ADD COLUMN "roundId" TEXT, +ADD COLUMN "version" INTEGER NOT NULL DEFAULT 1; + +-- AlterTable +ALTER TABLE "TaggingJob" ALTER COLUMN "updatedAt" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "User" ADD COLUMN "availabilityJson" JSONB, +ADD COLUMN "digestFrequency" TEXT NOT NULL DEFAULT 'none', +ADD COLUMN "preferredWorkload" INTEGER; + +-- DropTable +DROP TABLE "ApplicationForm"; + +-- DropTable +DROP TABLE "ApplicationFormField"; + +-- DropTable +DROP TABLE "ApplicationFormSubmission"; + +-- DropTable +DROP TABLE "OnboardingStep"; + +-- DropTable +DROP TABLE "SubmissionFile"; + +-- DropEnum +DROP TYPE "FormFieldType"; + +-- DropEnum +DROP TYPE "SpecialFieldType"; + +-- CreateTable +CREATE TABLE "ReminderLog" ( + "id" TEXT NOT NULL, + "roundId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "type" TEXT NOT NULL, + "sentAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "ReminderLog_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ConflictOfInterest" ( + "id" TEXT NOT NULL, + "assignmentId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + "roundId" TEXT NOT NULL, + "hasConflict" BOOLEAN NOT NULL DEFAULT false, + "conflictType" TEXT, + "description" TEXT, + "declaredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "reviewedById" TEXT, + "reviewedAt" TIMESTAMP(3), + "reviewAction" TEXT, + + CONSTRAINT "ConflictOfInterest_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EvaluationSummary" ( + "id" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + "roundId" TEXT NOT NULL, + "summaryJson" JSONB NOT NULL, + "generatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "generatedById" TEXT NOT NULL, + "model" TEXT NOT NULL, + "tokensUsed" INTEGER NOT NULL, + + CONSTRAINT "EvaluationSummary_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ProjectStatusHistory" ( + "id" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + "status" "ProjectStatus" NOT NULL, + "changedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "changedBy" TEXT, + + CONSTRAINT "ProjectStatusHistory_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MentorMessage" ( + "id" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + "senderId" TEXT NOT NULL, + "message" TEXT NOT NULL, + "isRead" BOOLEAN NOT NULL DEFAULT false, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "MentorMessage_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DigestLog" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "digestType" TEXT NOT NULL, + "contentJson" JSONB NOT NULL, + "sentAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "DigestLog_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "RoundTemplate" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "programId" TEXT, + "roundType" "RoundType" NOT NULL DEFAULT 'EVALUATION', + "criteriaJson" JSONB NOT NULL, + "settingsJson" JSONB, + "assignmentConfig" JSONB, + "createdBy" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "RoundTemplate_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MentorNote" ( + "id" TEXT NOT NULL, + "mentorAssignmentId" TEXT NOT NULL, + "authorId" TEXT NOT NULL, + "content" TEXT NOT NULL, + "isVisibleToAdmin" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MentorNote_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MentorMilestone" ( + "id" TEXT NOT NULL, + "programId" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "isRequired" BOOLEAN NOT NULL DEFAULT false, + "deadlineOffsetDays" INTEGER, + "sortOrder" INTEGER NOT NULL DEFAULT 0, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MentorMilestone_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MentorMilestoneCompletion" ( + "id" TEXT NOT NULL, + "milestoneId" TEXT NOT NULL, + "mentorAssignmentId" TEXT NOT NULL, + "completedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "completedById" TEXT NOT NULL, + + CONSTRAINT "MentorMilestoneCompletion_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Message" ( + "id" TEXT NOT NULL, + "senderId" TEXT NOT NULL, + "recipientType" TEXT NOT NULL, + "recipientFilter" JSONB, + "roundId" TEXT, + "templateId" TEXT, + "subject" TEXT NOT NULL, + "body" TEXT NOT NULL, + "deliveryChannels" TEXT[], + "scheduledAt" TIMESTAMP(3), + "sentAt" TIMESTAMP(3), + "metadata" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "Message_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MessageTemplate" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "category" TEXT NOT NULL, + "subject" TEXT NOT NULL, + "body" TEXT NOT NULL, + "variables" JSONB, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "createdBy" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MessageTemplate_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MessageRecipient" ( + "id" TEXT NOT NULL, + "messageId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "channel" TEXT NOT NULL, + "isRead" BOOLEAN NOT NULL DEFAULT false, + "readAt" TIMESTAMP(3), + "deliveredAt" TIMESTAMP(3), + + CONSTRAINT "MessageRecipient_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Webhook" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "url" TEXT NOT NULL, + "secret" TEXT NOT NULL, + "events" TEXT[], + "headers" JSONB, + "isActive" BOOLEAN NOT NULL DEFAULT true, + "maxRetries" INTEGER NOT NULL DEFAULT 3, + "createdById" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Webhook_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "WebhookDelivery" ( + "id" TEXT NOT NULL, + "webhookId" TEXT NOT NULL, + "event" TEXT NOT NULL, + "payload" JSONB NOT NULL, + "responseStatus" INTEGER, + "responseBody" TEXT, + "attempts" INTEGER NOT NULL DEFAULT 0, + "lastAttemptAt" TIMESTAMP(3), + "status" TEXT NOT NULL DEFAULT 'PENDING', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "WebhookDelivery_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EvaluationDiscussion" ( + "id" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + "roundId" TEXT NOT NULL, + "status" TEXT NOT NULL DEFAULT 'open', + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "closedAt" TIMESTAMP(3), + "closedById" TEXT, + + CONSTRAINT "EvaluationDiscussion_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DiscussionComment" ( + "id" TEXT NOT NULL, + "discussionId" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "content" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "DiscussionComment_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "ReminderLog_roundId_idx" ON "ReminderLog"("roundId"); + +-- CreateIndex +CREATE UNIQUE INDEX "ReminderLog_roundId_userId_type_key" ON "ReminderLog"("roundId", "userId", "type"); + +-- CreateIndex +CREATE UNIQUE INDEX "ConflictOfInterest_assignmentId_key" ON "ConflictOfInterest"("assignmentId"); + +-- CreateIndex +CREATE INDEX "ConflictOfInterest_userId_idx" ON "ConflictOfInterest"("userId"); + +-- CreateIndex +CREATE INDEX "ConflictOfInterest_roundId_hasConflict_idx" ON "ConflictOfInterest"("roundId", "hasConflict"); + +-- CreateIndex +CREATE INDEX "EvaluationSummary_roundId_idx" ON "EvaluationSummary"("roundId"); + +-- CreateIndex +CREATE UNIQUE INDEX "EvaluationSummary_projectId_roundId_key" ON "EvaluationSummary"("projectId", "roundId"); + +-- CreateIndex +CREATE INDEX "ProjectStatusHistory_projectId_changedAt_idx" ON "ProjectStatusHistory"("projectId", "changedAt"); + +-- CreateIndex +CREATE INDEX "MentorMessage_projectId_createdAt_idx" ON "MentorMessage"("projectId", "createdAt"); + +-- CreateIndex +CREATE INDEX "DigestLog_userId_idx" ON "DigestLog"("userId"); + +-- CreateIndex +CREATE INDEX "DigestLog_sentAt_idx" ON "DigestLog"("sentAt"); + +-- CreateIndex +CREATE INDEX "RoundTemplate_programId_idx" ON "RoundTemplate"("programId"); + +-- CreateIndex +CREATE INDEX "MentorNote_mentorAssignmentId_idx" ON "MentorNote"("mentorAssignmentId"); + +-- CreateIndex +CREATE INDEX "MentorMilestone_programId_idx" ON "MentorMilestone"("programId"); + +-- CreateIndex +CREATE INDEX "MentorMilestone_sortOrder_idx" ON "MentorMilestone"("sortOrder"); + +-- CreateIndex +CREATE INDEX "MentorMilestoneCompletion_mentorAssignmentId_idx" ON "MentorMilestoneCompletion"("mentorAssignmentId"); + +-- CreateIndex +CREATE UNIQUE INDEX "MentorMilestoneCompletion_milestoneId_mentorAssignmentId_key" ON "MentorMilestoneCompletion"("milestoneId", "mentorAssignmentId"); + +-- CreateIndex +CREATE INDEX "Message_senderId_idx" ON "Message"("senderId"); + +-- CreateIndex +CREATE INDEX "Message_sentAt_idx" ON "Message"("sentAt"); + +-- CreateIndex +CREATE INDEX "Message_scheduledAt_idx" ON "Message"("scheduledAt"); + +-- CreateIndex +CREATE INDEX "MessageTemplate_category_idx" ON "MessageTemplate"("category"); + +-- CreateIndex +CREATE INDEX "MessageTemplate_isActive_idx" ON "MessageTemplate"("isActive"); + +-- CreateIndex +CREATE INDEX "MessageRecipient_messageId_idx" ON "MessageRecipient"("messageId"); + +-- CreateIndex +CREATE INDEX "MessageRecipient_userId_isRead_idx" ON "MessageRecipient"("userId", "isRead"); + +-- CreateIndex +CREATE INDEX "Webhook_isActive_idx" ON "Webhook"("isActive"); + +-- CreateIndex +CREATE INDEX "WebhookDelivery_webhookId_idx" ON "WebhookDelivery"("webhookId"); + +-- CreateIndex +CREATE INDEX "WebhookDelivery_status_idx" ON "WebhookDelivery"("status"); + +-- CreateIndex +CREATE INDEX "WebhookDelivery_createdAt_idx" ON "WebhookDelivery"("createdAt"); + +-- CreateIndex +CREATE INDEX "EvaluationDiscussion_roundId_idx" ON "EvaluationDiscussion"("roundId"); + +-- CreateIndex +CREATE INDEX "EvaluationDiscussion_status_idx" ON "EvaluationDiscussion"("status"); + +-- CreateIndex +CREATE UNIQUE INDEX "EvaluationDiscussion_projectId_roundId_key" ON "EvaluationDiscussion"("projectId", "roundId"); + +-- CreateIndex +CREATE INDEX "DiscussionComment_discussionId_createdAt_idx" ON "DiscussionComment"("discussionId", "createdAt"); + +-- CreateIndex +CREATE INDEX "AuditLog_entityType_entityId_timestamp_idx" ON "AuditLog"("entityType", "entityId", "timestamp"); + +-- CreateIndex +CREATE INDEX "Evaluation_status_formId_idx" ON "Evaluation"("status", "formId"); + +-- CreateIndex +CREATE INDEX "GracePeriod_roundId_userId_extendedUntil_idx" ON "GracePeriod"("roundId", "userId", "extendedUntil"); + +-- CreateIndex +CREATE INDEX "LiveVote_isAudienceVote_idx" ON "LiveVote"("isAudienceVote"); + +-- CreateIndex +CREATE INDEX "ProjectFile_roundId_idx" ON "ProjectFile"("roundId"); + +-- AddForeignKey +ALTER TABLE "ProjectFile" ADD CONSTRAINT "ProjectFile_roundId_fkey" FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "SpecialAward" ADD CONSTRAINT "SpecialAward_winnerOverriddenBy_fkey" FOREIGN KEY ("winnerOverriddenBy") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ReminderLog" ADD CONSTRAINT "ReminderLog_roundId_fkey" FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ReminderLog" ADD CONSTRAINT "ReminderLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ConflictOfInterest" ADD CONSTRAINT "ConflictOfInterest_assignmentId_fkey" FOREIGN KEY ("assignmentId") REFERENCES "Assignment"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ConflictOfInterest" ADD CONSTRAINT "ConflictOfInterest_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ConflictOfInterest" ADD CONSTRAINT "ConflictOfInterest_reviewedById_fkey" FOREIGN KEY ("reviewedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EvaluationSummary" ADD CONSTRAINT "EvaluationSummary_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EvaluationSummary" ADD CONSTRAINT "EvaluationSummary_generatedById_fkey" FOREIGN KEY ("generatedById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectStatusHistory" ADD CONSTRAINT "ProjectStatusHistory_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorMessage" ADD CONSTRAINT "MentorMessage_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorMessage" ADD CONSTRAINT "MentorMessage_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DigestLog" ADD CONSTRAINT "DigestLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorNote" ADD CONSTRAINT "MentorNote_mentorAssignmentId_fkey" FOREIGN KEY ("mentorAssignmentId") REFERENCES "MentorAssignment"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorNote" ADD CONSTRAINT "MentorNote_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorMilestone" ADD CONSTRAINT "MentorMilestone_programId_fkey" FOREIGN KEY ("programId") REFERENCES "Program"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorMilestoneCompletion" ADD CONSTRAINT "MentorMilestoneCompletion_milestoneId_fkey" FOREIGN KEY ("milestoneId") REFERENCES "MentorMilestone"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorMilestoneCompletion" ADD CONSTRAINT "MentorMilestoneCompletion_mentorAssignmentId_fkey" FOREIGN KEY ("mentorAssignmentId") REFERENCES "MentorAssignment"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MentorMilestoneCompletion" ADD CONSTRAINT "MentorMilestoneCompletion_completedById_fkey" FOREIGN KEY ("completedById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Message" ADD CONSTRAINT "Message_senderId_fkey" FOREIGN KEY ("senderId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Message" ADD CONSTRAINT "Message_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "MessageTemplate"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MessageRecipient" ADD CONSTRAINT "MessageRecipient_messageId_fkey" FOREIGN KEY ("messageId") REFERENCES "Message"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MessageRecipient" ADD CONSTRAINT "MessageRecipient_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Webhook" ADD CONSTRAINT "Webhook_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "WebhookDelivery" ADD CONSTRAINT "WebhookDelivery_webhookId_fkey" FOREIGN KEY ("webhookId") REFERENCES "Webhook"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EvaluationDiscussion" ADD CONSTRAINT "EvaluationDiscussion_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EvaluationDiscussion" ADD CONSTRAINT "EvaluationDiscussion_closedById_fkey" FOREIGN KEY ("closedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DiscussionComment" ADD CONSTRAINT "DiscussionComment_discussionId_fkey" FOREIGN KEY ("discussionId") REFERENCES "EvaluationDiscussion"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DiscussionComment" ADD CONSTRAINT "DiscussionComment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml index 99e4f20..044d57c 100644 --- a/prisma/migrations/migration_lock.toml +++ b/prisma/migrations/migration_lock.toml @@ -1,3 +1,3 @@ # Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) +# It should be added in your version-control system (e.g., Git) provider = "postgresql"