diff --git a/prisma/migrations/20260902173944_add_debt_models/migration.sql b/prisma/migrations/20260902173944_add_debt_models/migration.sql new file mode 100644 index 0000000..ba2f820 --- /dev/null +++ b/prisma/migrations/20260902173944_add_debt_models/migration.sql @@ -0,0 +1,117 @@ +-- CreateEnum +CREATE TYPE "DebtTransactionType" AS ENUM ('DEBT', 'PAYMENT'); + +-- AlterTable +ALTER TABLE "Application" ALTER COLUMN "createdAt" SET DEFAULT now(), +ALTER COLUMN "updatedAt" SET DEFAULT now(); + +-- CreateTable +CREATE TABLE "DebtGroup" ( + "id" UUID NOT NULL, + "publicId" VARCHAR(20) NOT NULL, + "name" VARCHAR(255) NOT NULL, + "ownerId" UUID NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DebtGroup_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DebtGroupMember" ( + "id" UUID NOT NULL, + "groupId" UUID NOT NULL, + "userId" UUID NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "DebtGroupMember_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DebtPerson" ( + "id" UUID NOT NULL, + "groupId" UUID NOT NULL, + "name" VARCHAR(255) NOT NULL, + "isDeleted" BOOLEAN NOT NULL DEFAULT false, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "DebtPerson_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "DebtTransaction" ( + "id" UUID NOT NULL, + "groupId" UUID NOT NULL, + "fromPersonId" UUID NOT NULL, + "toPersonId" UUID NOT NULL, + "amount" BIGINT NOT NULL, + "type" "DebtTransactionType" NOT NULL, + "description" TEXT, + "transactionDate" DATE NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "createdByUserId" UUID NOT NULL, + "requestId" VARCHAR(255), + + CONSTRAINT "DebtTransaction_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "DebtGroup_publicId_key" ON "DebtGroup"("publicId"); + +-- CreateIndex +CREATE INDEX "DebtGroup_publicId_idx" ON "DebtGroup"("publicId"); + +-- CreateIndex +CREATE INDEX "DebtGroup_ownerId_idx" ON "DebtGroup"("ownerId"); + +-- CreateIndex +CREATE INDEX "DebtGroupMember_groupId_idx" ON "DebtGroupMember"("groupId"); + +-- CreateIndex +CREATE INDEX "DebtGroupMember_userId_idx" ON "DebtGroupMember"("userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "DebtGroupMember_groupId_userId_key" ON "DebtGroupMember"("groupId", "userId"); + +-- CreateIndex +CREATE INDEX "DebtPerson_groupId_idx" ON "DebtPerson"("groupId"); + +-- CreateIndex +CREATE UNIQUE INDEX "DebtPerson_groupId_name_key" ON "DebtPerson"("groupId", "name"); + +-- CreateIndex +CREATE INDEX "DebtTransaction_groupId_idx" ON "DebtTransaction"("groupId"); + +-- CreateIndex +CREATE INDEX "DebtTransaction_fromPersonId_idx" ON "DebtTransaction"("fromPersonId"); + +-- CreateIndex +CREATE INDEX "DebtTransaction_toPersonId_idx" ON "DebtTransaction"("toPersonId"); + +-- CreateIndex +CREATE UNIQUE INDEX "DebtTransaction_groupId_requestId_key" ON "DebtTransaction"("groupId", "requestId"); + +-- AddForeignKey +ALTER TABLE "DebtGroup" ADD CONSTRAINT "DebtGroup_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtGroupMember" ADD CONSTRAINT "DebtGroupMember_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "DebtGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtGroupMember" ADD CONSTRAINT "DebtGroupMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtPerson" ADD CONSTRAINT "DebtPerson_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "DebtGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtTransaction" ADD CONSTRAINT "DebtTransaction_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "DebtGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtTransaction" ADD CONSTRAINT "DebtTransaction_fromPersonId_fkey" FOREIGN KEY ("fromPersonId") REFERENCES "DebtPerson"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtTransaction" ADD CONSTRAINT "DebtTransaction_toPersonId_fkey" FOREIGN KEY ("toPersonId") REFERENCES "DebtPerson"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DebtTransaction" ADD CONSTRAINT "DebtTransaction_createdByUserId_fkey" FOREIGN KEY ("createdByUserId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;