110 lines
3.7 KiB
SQL
110 lines
3.7 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "InviteeStatus" AS ENUM ('invited', 'delivered', 'opened', 'rsvped', 'bounced');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "RSVPResponse" AS ENUM ('yes', 'no', 'maybe');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "PaymentStatus" AS ENUM ('initialized', 'success', 'failed');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Invitee" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"eventId" TEXT NOT NULL,
|
|
"fullName" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"phone" TEXT,
|
|
"status" "InviteeStatus" NOT NULL DEFAULT 'invited',
|
|
"code" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Invitee_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "RSVP" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"eventId" TEXT NOT NULL,
|
|
"inviteeId" TEXT,
|
|
"response" "RSVPResponse" NOT NULL,
|
|
"note" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "RSVP_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PaymentTransaction" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"eventId" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"amountKobo" INTEGER NOT NULL,
|
|
"currency" TEXT NOT NULL DEFAULT 'NGN',
|
|
"provider" TEXT NOT NULL DEFAULT 'paystack',
|
|
"reference" TEXT NOT NULL,
|
|
"status" "PaymentStatus" NOT NULL DEFAULT 'initialized',
|
|
"raw" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "PaymentTransaction_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Invitee_code_key" ON "Invitee"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Invitee_tenantId_eventId_email_key" ON "Invitee"("tenantId", "eventId", "email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Invitee_tenantId_idx" ON "Invitee"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Invitee_tenantId_eventId_idx" ON "Invitee"("tenantId", "eventId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RSVP_tenantId_idx" ON "RSVP"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RSVP_tenantId_eventId_idx" ON "RSVP"("tenantId", "eventId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RSVP_inviteeId_idx" ON "RSVP"("inviteeId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "PaymentTransaction_reference_key" ON "PaymentTransaction"("reference");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "PaymentTransaction_tenantId_idx" ON "PaymentTransaction"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "PaymentTransaction_tenantId_eventId_idx" ON "PaymentTransaction"("tenantId", "eventId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "PaymentTransaction_eventId_idx" ON "PaymentTransaction"("eventId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Invitee" ADD CONSTRAINT "Invitee_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Invitee" ADD CONSTRAINT "Invitee_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RSVP" ADD CONSTRAINT "RSVP_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RSVP" ADD CONSTRAINT "RSVP_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RSVP" ADD CONSTRAINT "RSVP_inviteeId_fkey" FOREIGN KEY ("inviteeId") REFERENCES "Invitee"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PaymentTransaction" ADD CONSTRAINT "PaymentTransaction_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PaymentTransaction" ADD CONSTRAINT "PaymentTransaction_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|