feat: implement financial recurrence, privacy settings, and premium DateTimePicker overhaul
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- A unique constraint covering the columns `[slug]` on the table `Group` will be added. If there are existing duplicate values, this will fail.
|
||||
- The required column `slug` was added to the `Group` table with a prisma-level default value. This is not possible if the table is not empty. Please add this column as optional, then populate it before making it required.
|
||||
|
||||
*/
|
||||
-- CreateEnum
|
||||
CREATE TYPE "AdminRole" AS ENUM ('SUPER_ADMIN', 'ADMIN');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "GroupStatus" AS ENUM ('ACTIVE', 'FROZEN');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "Plan" AS ENUM ('FREE', 'BASIC', 'PRO');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "FinancialEventType" AS ENUM ('MONTHLY_FEE', 'EXTRA_EVENT', 'CONTRIBUTION');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "FinancialEventStatus" AS ENUM ('OPEN', 'CLOSED', 'CANCELED');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "PaymentStatus" AS ENUM ('PENDING', 'PAID', 'WAIVED');
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Group" ADD COLUMN "pixKey" TEXT,
|
||||
ADD COLUMN "pixName" TEXT,
|
||||
ADD COLUMN "plan" "Plan" NOT NULL DEFAULT 'FREE',
|
||||
ADD COLUMN "planExpiresAt" TIMESTAMP(3),
|
||||
ADD COLUMN "slug" TEXT NOT NULL,
|
||||
ADD COLUMN "status" "GroupStatus" NOT NULL DEFAULT 'ACTIVE';
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Match" ADD COLUMN "arenaId" TEXT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Player" ADD COLUMN "isLeader" BOOLEAN NOT NULL DEFAULT false;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Admin" (
|
||||
"id" TEXT NOT NULL,
|
||||
"email" TEXT NOT NULL,
|
||||
"password" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"role" "AdminRole" NOT NULL DEFAULT 'ADMIN',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Admin_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Arena" (
|
||||
"id" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"address" TEXT,
|
||||
"groupId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Arena_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "FinancialEvent" (
|
||||
"id" TEXT NOT NULL,
|
||||
"title" TEXT NOT NULL,
|
||||
"description" TEXT,
|
||||
"totalAmount" DOUBLE PRECISION,
|
||||
"pricePerPerson" DOUBLE PRECISION,
|
||||
"dueDate" TIMESTAMP(3) NOT NULL,
|
||||
"type" "FinancialEventType" NOT NULL DEFAULT 'MONTHLY_FEE',
|
||||
"status" "FinancialEventStatus" NOT NULL DEFAULT 'OPEN',
|
||||
"groupId" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"isRecurring" BOOLEAN NOT NULL DEFAULT false,
|
||||
"recurrenceInterval" TEXT,
|
||||
"recurrenceEndDate" TIMESTAMP(3),
|
||||
|
||||
CONSTRAINT "FinancialEvent_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "Payment" (
|
||||
"id" TEXT NOT NULL,
|
||||
"financialEventId" TEXT NOT NULL,
|
||||
"playerId" TEXT NOT NULL,
|
||||
"amount" DOUBLE PRECISION NOT NULL,
|
||||
"status" "PaymentStatus" NOT NULL DEFAULT 'PENDING',
|
||||
"paidAt" TIMESTAMP(3),
|
||||
"method" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "Payment_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Admin_email_key" ON "Admin"("email");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Payment_financialEventId_playerId_key" ON "Payment"("financialEventId", "playerId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Group_slug_key" ON "Group"("slug");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Match" ADD CONSTRAINT "Match_arenaId_fkey" FOREIGN KEY ("arenaId") REFERENCES "Arena"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Arena" ADD CONSTRAINT "Arena_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "FinancialEvent" ADD CONSTRAINT "FinancialEvent_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Payment" ADD CONSTRAINT "Payment_financialEventId_fkey" FOREIGN KEY ("financialEventId") REFERENCES "FinancialEvent"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Payment" ADD CONSTRAINT "Payment_playerId_fkey" FOREIGN KEY ("playerId") REFERENCES "Player"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user