64 lines
2.6 KiB
SQL
64 lines
2.6 KiB
SQL
CREATE TABLE "BillPayee" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"nickname" TEXT,
|
|
"category" TEXT,
|
|
"website" TEXT,
|
|
"accountNumberLast4" TEXT,
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "BillPayee_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "Bill" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"payeeId" TEXT,
|
|
"name" TEXT NOT NULL,
|
|
"amount" DECIMAL(65,30) NOT NULL,
|
|
"currency" TEXT NOT NULL DEFAULT 'USD',
|
|
"dueDate" TIMESTAMP(3) NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
"recurrence" TEXT NOT NULL DEFAULT 'none',
|
|
"autopay" BOOLEAN NOT NULL DEFAULT false,
|
|
"reminderDays" INTEGER NOT NULL DEFAULT 3,
|
|
"notes" TEXT,
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
"paidAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Bill_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "BillPayment" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"billId" TEXT NOT NULL,
|
|
"amount" DECIMAL(65,30) NOT NULL,
|
|
"paidAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"method" TEXT NOT NULL DEFAULT 'manual',
|
|
"confirmationNumber" TEXT,
|
|
"notes" TEXT,
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "BillPayment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE INDEX "BillPayee_userId_name_idx" ON "BillPayee"("userId", "name");
|
|
CREATE INDEX "Bill_userId_dueDate_idx" ON "Bill"("userId", "dueDate");
|
|
CREATE INDEX "Bill_userId_status_idx" ON "Bill"("userId", "status");
|
|
CREATE INDEX "Bill_payeeId_idx" ON "Bill"("payeeId");
|
|
CREATE INDEX "BillPayment_userId_paidAt_idx" ON "BillPayment"("userId", "paidAt");
|
|
CREATE INDEX "BillPayment_billId_idx" ON "BillPayment"("billId");
|
|
|
|
ALTER TABLE "BillPayee" ADD CONSTRAINT "BillPayee_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "Bill" ADD CONSTRAINT "Bill_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "Bill" ADD CONSTRAINT "Bill_payeeId_fkey" FOREIGN KEY ("payeeId") REFERENCES "BillPayee"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
ALTER TABLE "BillPayment" ADD CONSTRAINT "BillPayment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "BillPayment" ADD CONSTRAINT "BillPayment_billId_fkey" FOREIGN KEY ("billId") REFERENCES "Bill"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|