119 lines
4.0 KiB
SQL
119 lines
4.0 KiB
SQL
/*
|
|
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;
|