3d381944d2
Next.js + Express event management app for Hope Family Church.
214 lines
6.6 KiB
SQL
214 lines
6.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Ministry" (
|
|
"id" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"image" TEXT,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"order" INTEGER NOT NULL DEFAULT 0,
|
|
"leaderId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Ministry_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TeamMember" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"bio" TEXT,
|
|
"photo" TEXT,
|
|
"order" INTEGER NOT NULL DEFAULT 0,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"email" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "TeamMember_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ContentBlock" (
|
|
"id" TEXT NOT NULL,
|
|
"page" TEXT NOT NULL,
|
|
"key" TEXT NOT NULL,
|
|
"value" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL DEFAULT 'text',
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ContentBlock_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChurchDocument" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"fileUrl" TEXT NOT NULL,
|
|
"category" TEXT NOT NULL DEFAULT 'other',
|
|
"isPublic" BOOLEAN NOT NULL DEFAULT true,
|
|
"uploadedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ChurchDocument_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "FellowshipGroup" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"leader" TEXT,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"order" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "FellowshipGroup_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChurchMember" (
|
|
"id" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
"mainName" TEXT NOT NULL,
|
|
"mainEmail" TEXT NOT NULL,
|
|
"mainPhone" TEXT,
|
|
"mainBirthday" TIMESTAMP(3),
|
|
"mainOccupation" TEXT,
|
|
"mainEmploymentStatus" TEXT,
|
|
"mainDateOfSalvation" TIMESTAMP(3),
|
|
"mainDateOfWaterBaptism" TIMESTAMP(3),
|
|
"mainHolySpiritBaptism" BOOLEAN NOT NULL DEFAULT false,
|
|
"spouseName" TEXT,
|
|
"spouseEmail" TEXT,
|
|
"spousePhone" TEXT,
|
|
"spouseBirthday" TIMESTAMP(3),
|
|
"spouseOccupation" TEXT,
|
|
"spouseEmploymentStatus" TEXT,
|
|
"spouseDateOfSalvation" TIMESTAMP(3),
|
|
"spouseDateOfWaterBaptism" TIMESTAMP(3),
|
|
"spouseHolySpiritBaptism" BOOLEAN,
|
|
"homeAddress" TEXT,
|
|
"inFellowshipGroup" BOOLEAN NOT NULL DEFAULT false,
|
|
"fellowshipGroupId" TEXT,
|
|
"membershipConfirmed" BOOLEAN NOT NULL DEFAULT false,
|
|
"notes" TEXT,
|
|
"appliedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"approvedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ChurchMember_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChurchChild" (
|
|
"id" TEXT NOT NULL,
|
|
"memberId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"birthday" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "ChurchChild_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "MinistryInterest" (
|
|
"id" TEXT NOT NULL,
|
|
"memberId" TEXT NOT NULL,
|
|
"ministryId" TEXT NOT NULL,
|
|
"forSpouse" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
CONSTRAINT "MinistryInterest_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Donation" (
|
|
"id" TEXT NOT NULL,
|
|
"donorName" TEXT,
|
|
"donorEmail" TEXT,
|
|
"donorPhone" TEXT,
|
|
"amount" DOUBLE PRECISION NOT NULL,
|
|
"method" TEXT NOT NULL,
|
|
"reference" TEXT,
|
|
"note" TEXT,
|
|
"isAnonymous" BOOLEAN NOT NULL DEFAULT false,
|
|
"linkedMemberId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Donation_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Ministry_slug_key" ON "Ministry"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Ministry_isActive_order_idx" ON "Ministry"("isActive", "order");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Ministry_leaderId_idx" ON "Ministry"("leaderId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TeamMember_isActive_order_idx" ON "TeamMember"("isActive", "order");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ContentBlock_page_idx" ON "ContentBlock"("page");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ContentBlock_page_key_key" ON "ContentBlock"("page", "key");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FellowshipGroup_isActive_order_idx" ON "FellowshipGroup"("isActive", "order");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChurchMember_status_idx" ON "ChurchMember"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChurchMember_mainEmail_idx" ON "ChurchMember"("mainEmail");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChurchMember_fellowshipGroupId_idx" ON "ChurchMember"("fellowshipGroupId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChurchChild_memberId_idx" ON "ChurchChild"("memberId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "MinistryInterest_memberId_idx" ON "MinistryInterest"("memberId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "MinistryInterest_ministryId_idx" ON "MinistryInterest"("ministryId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "MinistryInterest_memberId_ministryId_forSpouse_key" ON "MinistryInterest"("memberId", "ministryId", "forSpouse");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Donation_linkedMemberId_idx" ON "Donation"("linkedMemberId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Donation_createdAt_idx" ON "Donation"("createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Donation_method_idx" ON "Donation"("method");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Ministry" ADD CONSTRAINT "Ministry_leaderId_fkey" FOREIGN KEY ("leaderId") REFERENCES "TeamMember"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChurchMember" ADD CONSTRAINT "ChurchMember_fellowshipGroupId_fkey" FOREIGN KEY ("fellowshipGroupId") REFERENCES "FellowshipGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChurchChild" ADD CONSTRAINT "ChurchChild_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "ChurchMember"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MinistryInterest" ADD CONSTRAINT "MinistryInterest_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "ChurchMember"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "MinistryInterest" ADD CONSTRAINT "MinistryInterest_ministryId_fkey" FOREIGN KEY ("ministryId") REFERENCES "Ministry"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Donation" ADD CONSTRAINT "Donation_linkedMemberId_fkey" FOREIGN KEY ("linkedMemberId") REFERENCES "ChurchMember"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|