From 871cbdbb3e07fe5b172e5632e54e8731dbb49c2b Mon Sep 17 00:00:00 2001 From: Brian Nelson Date: Thu, 8 Oct 2026 09:04:17 -0400 Subject: [PATCH] ran db generate and migration --- .../migration.sql | 372 ++++++++++++++++++ prisma/migrations/migration_lock.toml | 3 + prisma/schema.prisma | 16 +- 3 files changed, 383 insertions(+), 8 deletions(-) create mode 100644 prisma/migrations/20261008125517_initial_migration/migration.sql create mode 100644 prisma/migrations/migration_lock.toml diff --git a/prisma/migrations/20261008125517_initial_migration/migration.sql b/prisma/migrations/20261008125517_initial_migration/migration.sql new file mode 100644 index 0000000..dc5cf7e --- /dev/null +++ b/prisma/migrations/20261008125517_initial_migration/migration.sql @@ -0,0 +1,372 @@ +-- CreateEnum +CREATE TYPE "Role" AS ENUM ('COUPLE', 'PLANNER'); + +-- CreateEnum +CREATE TYPE "RsvpStatus" AS ENUM ('PENDING', 'ACCEPTED', 'DECLINED'); + +-- CreateEnum +CREATE TYPE "VendorStatus" AS ENUM ('RESEARCHING', 'CONTACTING', 'RESPONDED', 'PROPOSAL_RECEIVED', 'NEGOTIATING', 'CONTRACT_SENT', 'CONTRACT_SIGNED', 'DECLINED', 'BACKUP'); + +-- CreateEnum +CREATE TYPE "FileKind" AS ENUM ('CONTRACT', 'PROPOSAL', 'OTHER'); + +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "email" TEXT NOT NULL, + "name" TEXT NOT NULL, + "username" TEXT NOT NULL, + "password" TEXT, + "authProvider" TEXT, + "providerId" TEXT, + "isAdmin" BOOLEAN NOT NULL DEFAULT false, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Project" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "archivedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Project_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Membership" ( + "id" TEXT NOT NULL, + "role" "Role" NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "userId" TEXT NOT NULL, + "projectId" TEXT NOT NULL, + "eventId" TEXT, + + CONSTRAINT "Membership_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "InviteToken" ( + "id" TEXT NOT NULL, + "email" TEXT NOT NULL, + "role" "Role" NOT NULL, + "token" TEXT NOT NULL, + "expiresAt" TIMESTAMP(3) NOT NULL, + "acceptedAt" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "projectId" TEXT NOT NULL, + "eventId" TEXT, + + CONSTRAINT "InviteToken_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Event" ( + "id" TEXT NOT NULL, + "slug" TEXT NOT NULL, + "name" TEXT NOT NULL, + "date" TIMESTAMP(3), + "notes" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "projectId" TEXT NOT NULL, + + CONSTRAINT "Event_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventTodo" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "complete" BOOLEAN NOT NULL DEFAULT false, + "dueDate" TIMESTAMP(3), + "notes" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "eventId" TEXT NOT NULL, + + CONSTRAINT "EventTodo_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Address" ( + "id" TEXT NOT NULL, + "line1" TEXT NOT NULL, + "line2" TEXT, + "city" TEXT NOT NULL, + "state" TEXT NOT NULL, + "postalCode" TEXT NOT NULL, + "country" TEXT NOT NULL DEFAULT 'United States', + + CONSTRAINT "Address_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Household" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "token" TEXT NOT NULL, + "notes" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "projectId" TEXT NOT NULL, + "addressId" TEXT NOT NULL, + + CONSTRAINT "Household_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Guest" ( + "id" TEXT NOT NULL, + "firstName" TEXT NOT NULL, + "lastName" TEXT, + "email" TEXT, + "phone" TEXT, + "notes" TEXT, + "side" TEXT, + "congratulated" BOOLEAN NOT NULL DEFAULT false, + "isPlaceHolder" BOOLEAN NOT NULL DEFAULT false, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "householdId" TEXT NOT NULL, + + CONSTRAINT "Guest_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventGuest" ( + "id" TEXT NOT NULL, + "rsvp" "RsvpStatus" NOT NULL DEFAULT 'PENDING', + "respodedAt" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "eventId" TEXT NOT NULL, + "guestId" TEXT NOT NULL, + + CONSTRAINT "EventGuest_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "VendorCategory" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "color" TEXT DEFAULT '#3B82F6', + + CONSTRAINT "VendorCategory_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Vendor" ( + "id" TEXT NOT NULL, + "slug" TEXT NOT NULL, + "name" TEXT NOT NULL, + "description" TEXT, + "website" TEXT, + "contactPerson" TEXT, + "email" TEXT, + "phone" TEXT, + "notes" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "categoryId" TEXT, + "addressId" TEXT, + + CONSTRAINT "Vendor_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventVendor" ( + "id" TEXT NOT NULL, + "status" "VendorStatus" NOT NULL DEFAULT 'RESEARCHING', + "bookedDate" TIMESTAMP(3), + "quotedPrice" DECIMAL(65,30), + "finalCost" DECIMAL(65,30), + "depositPaid" DECIMAL(65,30), + "depositDueDate" TIMESTAMP(3), + "finalPaymentDue" TIMESTAMP(3), + "paymentNotes" TEXT, + "notes" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "eventId" TEXT NOT NULL, + "vendorId" TEXT NOT NULL, + + CONSTRAINT "EventVendor_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "FileUpload" ( + "id" TEXT NOT NULL, + "originalName" TEXT NOT NULL, + "storageKey" TEXT NOT NULL, + "mimeType" TEXT NOT NULL, + "size" INTEGER NOT NULL, + "kind" "FileKind" NOT NULL DEFAULT 'OTHER', + "uploadedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "uploadedById" TEXT NOT NULL, + "eventId" TEXT, + "eventVendorId" TEXT, + + CONSTRAINT "FileUpload_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "RegistryItem" ( + "id" TEXT NOT NULL, + "slug" TEXT NOT NULL, + "name" TEXT NOT NULL, + "url" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "eventId" TEXT, + + CONSTRAINT "RegistryItem_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "AllowedOrigin" ( + "id" TEXT NOT NULL, + "origin" TEXT NOT NULL, + "isDefault" BOOLEAN NOT NULL DEFAULT false, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "addedById" TEXT, + + CONSTRAINT "AllowedOrigin_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_authProvider_providerId_key" ON "User"("authProvider", "providerId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Project_name_key" ON "Project"("name"); + +-- CreateIndex +CREATE INDEX "Membership_userId_idx" ON "Membership"("userId"); + +-- CreateIndex +CREATE INDEX "Membership_projectId_idx" ON "Membership"("projectId"); + +-- CreateIndex +CREATE UNIQUE INDEX "InviteToken_token_key" ON "InviteToken"("token"); + +-- CreateIndex +CREATE INDEX "InviteToken_email_idx" ON "InviteToken"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Event_slug_key" ON "Event"("slug"); + +-- CreateIndex +CREATE INDEX "Event_projectId_idx" ON "Event"("projectId"); + +-- CreateIndex +CREATE INDEX "EventTodo_eventId_idx" ON "EventTodo"("eventId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Household_token_key" ON "Household"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "Household_addressId_key" ON "Household"("addressId"); + +-- CreateIndex +CREATE INDEX "Household_projectId_idx" ON "Household"("projectId"); + +-- CreateIndex +CREATE INDEX "Guest_householdId_idx" ON "Guest"("householdId"); + +-- CreateIndex +CREATE INDEX "EventGuest_guestId_idx" ON "EventGuest"("guestId"); + +-- CreateIndex +CREATE UNIQUE INDEX "EventGuest_eventId_guestId_key" ON "EventGuest"("eventId", "guestId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Vendor_slug_key" ON "Vendor"("slug"); + +-- CreateIndex +CREATE UNIQUE INDEX "Vendor_addressId_key" ON "Vendor"("addressId"); + +-- CreateIndex +CREATE INDEX "EventVendor_vendorId_idx" ON "EventVendor"("vendorId"); + +-- CreateIndex +CREATE UNIQUE INDEX "EventVendor_vendorId_eventId_key" ON "EventVendor"("vendorId", "eventId"); + +-- CreateIndex +CREATE UNIQUE INDEX "FileUpload_storageKey_key" ON "FileUpload"("storageKey"); + +-- CreateIndex +CREATE UNIQUE INDEX "RegistryItem_eventId_slug_key" ON "RegistryItem"("eventId", "slug"); + +-- CreateIndex +CREATE UNIQUE INDEX "AllowedOrigin_origin_key" ON "AllowedOrigin"("origin"); + +-- AddForeignKey +ALTER TABLE "Membership" ADD CONSTRAINT "Membership_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Membership" ADD CONSTRAINT "Membership_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Membership" ADD CONSTRAINT "Membership_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InviteToken" ADD CONSTRAINT "InviteToken_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "InviteToken" ADD CONSTRAINT "InviteToken_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventTodo" ADD CONSTRAINT "EventTodo_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Household" ADD CONSTRAINT "Household_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Household" ADD CONSTRAINT "Household_addressId_fkey" FOREIGN KEY ("addressId") REFERENCES "Address"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Guest" ADD CONSTRAINT "Guest_householdId_fkey" FOREIGN KEY ("householdId") REFERENCES "Household"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventGuest" ADD CONSTRAINT "EventGuest_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventGuest" ADD CONSTRAINT "EventGuest_guestId_fkey" FOREIGN KEY ("guestId") REFERENCES "Guest"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Vendor" ADD CONSTRAINT "Vendor_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "VendorCategory"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Vendor" ADD CONSTRAINT "Vendor_addressId_fkey" FOREIGN KEY ("addressId") REFERENCES "Address"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventVendor" ADD CONSTRAINT "EventVendor_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventVendor" ADD CONSTRAINT "EventVendor_vendorId_fkey" FOREIGN KEY ("vendorId") REFERENCES "Vendor"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "FileUpload" ADD CONSTRAINT "FileUpload_uploadedById_fkey" FOREIGN KEY ("uploadedById") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "FileUpload" ADD CONSTRAINT "FileUpload_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "FileUpload" ADD CONSTRAINT "FileUpload_eventVendorId_fkey" FOREIGN KEY ("eventVendorId") REFERENCES "EventVendor"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "RegistryItem" ADD CONSTRAINT "RegistryItem_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "AllowedOrigin" ADD CONSTRAINT "AllowedOrigin_addedById_fkey" FOREIGN KEY ("addedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..044d57c --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "postgresql" diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 74cdfc2..4f2d7dc 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -184,8 +184,8 @@ model Guest { phone String? notes String? side String? - congratulated Boolean @default(false) - isPlaceHolder Boolean @default(false) + congratulated Boolean @default(false) + isPlaceHolder Boolean @default(false) createdAt DateTime @default(now()) household Household @relation(fields: [householdId], references: [id], onDelete: Cascade) @@ -236,18 +236,18 @@ model Vendor { category VendorCategory? @relation(fields: [categoryId], references: [id], onDelete: SetNull) categoryId String? address Address? @relation(fields: [addressId], references: [id]) - addressId String? + addressId String? @unique eventVendors EventVendor[] } model EventVendor { - id String @id @default(cuid()) + id String @id @default(cuid()) status VendorStatus @default(RESEARCHING) bookedDate DateTime? - quotedPrice Decimal? @db.decimal(10, 2) - finalCost Decimal? @db.decimal(10, 2) - depositPaid Decimal? @db.decimal(10, 2) + quotedPrice Decimal? + finalCost Decimal? + depositPaid Decimal? depositDueDate DateTime? finalPaymentDue DateTime? paymentNotes String? @@ -279,7 +279,7 @@ model FileUpload { uploadedById String event Event? @relation(fields: [eventId], references: [id], onDelete: Cascade) eventId String? - eventVendor Vendor? @relation(fields: [eventVendorId], references: [id], onDelete: Cascade) + eventVendor EventVendor? @relation(fields: [eventVendorId], references: [id], onDelete: Cascade) eventVendorId String? }