-- ExpenseClaim ALTER TABLE "ExpenseClaim" ADD COLUMN "loanId" TEXT; ALTER TABLE "ExpenseClaim" ADD COLUMN "submittedAt" TIMESTAMP(3); ALTER TABLE "ExpenseClaim" ADD COLUMN "decidedAt" TIMESTAMP(3); ALTER TABLE "ExpenseClaim" ADD COLUMN "decidedById" TEXT; ALTER TABLE "ExpenseClaim" ADD COLUMN "rejectComment" TEXT; ALTER TABLE "ExpenseClaim" ADD CONSTRAINT "ExpenseClaim_applicantId_fkey" FOREIGN KEY ("applicantId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "ExpenseClaim" ADD CONSTRAINT "ExpenseClaim_decidedById_fkey" FOREIGN KEY ("decidedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "ExpenseClaim" ADD CONSTRAINT "ExpenseClaim_loanId_fkey" FOREIGN KEY ("loanId") REFERENCES "LoanRecord"("id") ON DELETE SET NULL ON UPDATE CASCADE; CREATE INDEX "ExpenseClaim_applicantId_idx" ON "ExpenseClaim"("applicantId"); CREATE INDEX "ExpenseClaim_loanId_idx" ON "ExpenseClaim"("loanId"); -- LoanRecord ALTER TABLE "LoanRecord" ADD COLUMN "loanNo" TEXT; ALTER TABLE "LoanRecord" ADD COLUMN "costType" TEXT; ALTER TABLE "LoanRecord" ADD COLUMN "bidCaseId" TEXT; ALTER TABLE "LoanRecord" ADD COLUMN "projectId" TEXT; ALTER TABLE "LoanRecord" ADD COLUMN "offsetAmount" DECIMAL(18,2) NOT NULL DEFAULT 0; ALTER TABLE "LoanRecord" ADD COLUMN "remark" TEXT; ALTER TABLE "LoanRecord" ADD COLUMN "submittedAt" TIMESTAMP(3); ALTER TABLE "LoanRecord" ADD COLUMN "decidedAt" TIMESTAMP(3); ALTER TABLE "LoanRecord" ADD COLUMN "decidedById" TEXT; UPDATE "LoanRecord" SET "loanNo" = 'JK-LEGACY-' || substr("id", 1, 8) WHERE "loanNo" IS NULL; UPDATE "LoanRecord" SET "costType" = 'ADMIN' WHERE "costType" IS NULL; ALTER TABLE "LoanRecord" ALTER COLUMN "loanNo" SET NOT NULL; ALTER TABLE "LoanRecord" ALTER COLUMN "costType" SET NOT NULL; ALTER TABLE "LoanRecord" ALTER COLUMN "status" SET DEFAULT 'DRAFT'; CREATE UNIQUE INDEX "LoanRecord_tenantId_loanNo_key" ON "LoanRecord"("tenantId", "loanNo"); CREATE INDEX "LoanRecord_applicantId_idx" ON "LoanRecord"("applicantId"); ALTER TABLE "LoanRecord" ADD CONSTRAINT "LoanRecord_bidCaseId_fkey" FOREIGN KEY ("bidCaseId") REFERENCES "BidCase"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "LoanRecord" ADD CONSTRAINT "LoanRecord_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "LoanRecord" ADD CONSTRAINT "LoanRecord_applicantId_fkey" FOREIGN KEY ("applicantId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "LoanRecord" ADD CONSTRAINT "LoanRecord_decidedById_fkey" FOREIGN KEY ("decidedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- BondRecord ALTER TABLE "BondRecord" ADD COLUMN "bondNo" TEXT; ALTER TABLE "BondRecord" ADD COLUMN "projectId" TEXT; ALTER TABLE "BondRecord" ADD COLUMN "contractId" TEXT; ALTER TABLE "BondRecord" ADD COLUMN "remark" TEXT; ALTER TABLE "BondRecord" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; UPDATE "BondRecord" SET "bondNo" = 'BZ-LEGACY-' || substr("id", 1, 8) WHERE "bondNo" IS NULL; ALTER TABLE "BondRecord" ALTER COLUMN "bondNo" SET NOT NULL; ALTER TABLE "BondRecord" ALTER COLUMN "bidCaseId" DROP NOT NULL; ALTER TABLE "BondRecord" DROP CONSTRAINT "BondRecord_bidCaseId_fkey"; ALTER TABLE "BondRecord" ADD CONSTRAINT "BondRecord_bidCaseId_fkey" FOREIGN KEY ("bidCaseId") REFERENCES "BidCase"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "BondRecord" ADD CONSTRAINT "BondRecord_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE; ALTER TABLE "BondRecord" ADD CONSTRAINT "BondRecord_contractId_fkey" FOREIGN KEY ("contractId") REFERENCES "Contract"("id") ON DELETE SET NULL ON UPDATE CASCADE; CREATE UNIQUE INDEX "BondRecord_tenantId_bondNo_key" ON "BondRecord"("tenantId", "bondNo"); -- InvoiceRecord DELETE FROM "InvoiceRecord"; ALTER TABLE "InvoiceRecord" ADD COLUMN "contractId" TEXT NOT NULL; ALTER TABLE "InvoiceRecord" ADD COLUMN "milestoneId" TEXT NOT NULL; ALTER TABLE "InvoiceRecord" ADD COLUMN "dueAt" TIMESTAMP(3); ALTER TABLE "InvoiceRecord" ADD COLUMN "remark" TEXT; ALTER TABLE "InvoiceRecord" ADD COLUMN "createdById" TEXT; CREATE UNIQUE INDEX "InvoiceRecord_milestoneId_key" ON "InvoiceRecord"("milestoneId"); ALTER TABLE "InvoiceRecord" ADD CONSTRAINT "InvoiceRecord_contractId_fkey" FOREIGN KEY ("contractId") REFERENCES "Contract"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "InvoiceRecord" ADD CONSTRAINT "InvoiceRecord_milestoneId_fkey" FOREIGN KEY ("milestoneId") REFERENCES "PaymentMilestone"("id") ON DELETE RESTRICT ON UPDATE CASCADE; ALTER TABLE "InvoiceRecord" ADD CONSTRAINT "InvoiceRecord_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;