diff --git a/components/EditGuestBookEntryModal.tsx b/components/EditGuestBookEntryModal.tsx
index ac55203..505f3aa 100644
--- a/components/EditGuestBookEntryModal.tsx
+++ b/components/EditGuestBookEntryModal.tsx
@@ -13,6 +13,7 @@ export default function EditGuestBookEntryModal({ isOpen, onClose, initialData,
email?: string
phone?: string
address?: string
+ congratulated?: boolean | null
side?: string
notes?: string
}
@@ -109,6 +110,21 @@ export default function EditGuestBookEntryModal({ isOpen, onClose, initialData,
value={formData.address || ''}
onChange={handleChange}
/>
+
+
+ setFormData((prev) => ({
+ ...prev,
+ congratulated: e.target.checked,
+ }))
+ }
+ className="checkbox"
+ />
+
+
Email
Phone |
Address |
+ Congratulated Engagement |
Notes |
@@ -82,6 +86,7 @@ export default function GuestBookList({ entries, view }: { entries: GuestBookEnt
{entry.email || 'N/A'} |
{entry.phone || 'N/A'} |
{entry.address || 'N/A'} |
+ {entry.congratulated == true ? 'Yes' : "No"} |
{entry.notes || 'N/A'} |
))}
@@ -122,6 +127,7 @@ export default function GuestBookList({ entries, view }: { entries: GuestBookEnt
email: editingEntry.email || '',
phone: editingEntry.phone || '',
address: editingEntry.address || '',
+ congratulated: editingEntry.congratulated,
side: editingEntry.side,
notes: editingEntry.notes || '',
}}
diff --git a/drift_fix.sql b/drift_fix.sql
new file mode 100644
index 0000000..7059d14
--- /dev/null
+++ b/drift_fix.sql
@@ -0,0 +1,169 @@
+-- CreateEnum
+CREATE TYPE "Role" AS ENUM ('COUPLE', 'PLANNER', 'GUEST');
+
+-- CreateEnum
+CREATE TYPE "RsvpStatus" AS ENUM ('YES', 'NO', 'PENDING');
+
+-- CreateTable
+CREATE TABLE "User" (
+ "id" TEXT NOT NULL,
+ "email" TEXT NOT NULL,
+ "password" TEXT,
+ "name" TEXT,
+ "username" TEXT NOT NULL,
+ "role" "Role" NOT NULL DEFAULT 'GUEST',
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "User_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Event" (
+ "id" TEXT NOT NULL,
+ "name" TEXT NOT NULL,
+ "date" TIMESTAMP(3),
+ "locationid" TEXT,
+ "creatorId" TEXT NOT NULL,
+ "notes" TEXT,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Location" (
+ "id" TEXT NOT NULL,
+ "name" TEXT NOT NULL,
+ "address" TEXT NOT NULL,
+ "city" TEXT NOT NULL,
+ "state" TEXT NOT NULL,
+ "postalCode" TEXT NOT NULL,
+ "country" TEXT NOT NULL DEFAULT 'United States',
+ "phone" TEXT,
+ "email" TEXT,
+
+ CONSTRAINT "Location_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "Guest" (
+ "id" TEXT NOT NULL,
+ "eventId" TEXT NOT NULL,
+ "name" TEXT NOT NULL,
+ "email" TEXT,
+ "rsvp" "RsvpStatus" NOT NULL DEFAULT 'PENDING',
+
+ CONSTRAINT "Guest_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "InviteToken" (
+ "id" TEXT NOT NULL,
+ "email" TEXT NOT NULL,
+ "role" "Role" NOT NULL,
+ "token" TEXT NOT NULL,
+ "eventId" TEXT,
+ "expiresAt" TIMESTAMP(3) NOT NULL,
+ "accepted" BOOLEAN NOT NULL DEFAULT false,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "InviteToken_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "GuestBookEntry" (
+ "id" TEXT NOT NULL,
+ "fName" TEXT NOT NULL,
+ "lName" TEXT NOT NULL,
+ "email" TEXT,
+ "phone" TEXT,
+ "address" TEXT,
+ "notes" TEXT,
+ "side" TEXT NOT NULL,
+ "congratulated" BOOLEAN,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "GuestBookEntry_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "EventGuest" (
+ "id" TEXT NOT NULL,
+ "eventId" TEXT NOT NULL,
+ "guestBookEntryId" TEXT NOT NULL,
+ "rsvp" "RsvpStatus" NOT NULL DEFAULT 'PENDING',
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+ CONSTRAINT "EventGuest_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,
+ "eventId" TEXT NOT NULL,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updatedAt" TIMESTAMP(3) NOT NULL,
+
+ CONSTRAINT "EventTodo_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateTable
+CREATE TABLE "FileUpload" (
+ "id" TEXT NOT NULL,
+ "filepath" TEXT NOT NULL,
+ "filename" TEXT NOT NULL,
+ "filetype" TEXT NOT NULL,
+ "filesize" INTEGER NOT NULL,
+ "uploadedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "uploadedById" TEXT NOT NULL,
+ "eventId" TEXT,
+
+ CONSTRAINT "FileUpload_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 "InviteToken_email_key" ON "InviteToken"("email");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "InviteToken_token_key" ON "InviteToken"("token");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "EventGuest_eventId_guestBookEntryId_key" ON "EventGuest"("eventId", "guestBookEntryId");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "FileUpload_filename_uploadedById_key" ON "FileUpload"("filename", "uploadedById");
+
+-- AddForeignKey
+ALTER TABLE "Event" ADD CONSTRAINT "Event_locationid_fkey" FOREIGN KEY ("locationid") REFERENCES "Location"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "Event" ADD CONSTRAINT "Event_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "Guest" ADD CONSTRAINT "Guest_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "EventGuest" ADD CONSTRAINT "EventGuest_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "EventGuest" ADD CONSTRAINT "EventGuest_guestBookEntryId_fkey" FOREIGN KEY ("guestBookEntryId") REFERENCES "GuestBookEntry"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "EventTodo" ADD CONSTRAINT "EventTodo_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("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 SET NULL ON UPDATE CASCADE;
+
diff --git a/lib/queries.ts b/lib/queries.ts
index 7bb5a66..5a852c4 100644
--- a/lib/queries.ts
+++ b/lib/queries.ts
@@ -97,33 +97,33 @@ export const queries = {
}) {
// ⏱ Quick recent entries (e.g., homepage)
if (takeOnlyRecent) {
- const entries = await prisma.guestBookEntry.findMany({
- take: takeOnlyRecent,
- orderBy: { createdAt: 'desc' },
- })
- return entries
+ const entries = await prisma.guestBookEntry.findMany({
+ take: takeOnlyRecent,
+ orderBy: { createdAt: 'desc' },
+ })
+ return entries
}
// 📄 Paginated GuestBook view
const skip = ((page ?? 1) - 1) * pageSize
const [entries, totalCount] = await Promise.all([
- prisma.guestBookEntry.findMany({
- skip,
- take: pageSize,
- orderBy: newestFirst
- ? { createdAt: 'desc' }
- : [{ lName: 'asc' }, { fName: 'asc' }],
- }),
- prisma.guestBookEntry.count(),
+ prisma.guestBookEntry.findMany({
+ skip,
+ take: pageSize,
+ orderBy: newestFirst
+ ? { createdAt: 'desc' }
+ : [{ lName: 'asc' }, { fName: 'asc' }],
+ }),
+ prisma.guestBookEntry.count(),
])
const totalPages = Math.ceil(totalCount / pageSize)
return {
- entries,
- totalPages,
- currentPage: page ?? 1,
+ entries,
+ totalPages,
+ currentPage: page ?? 1,
}
},
diff --git a/prisma/migrations/.DS_Store b/prisma/migrations/.DS_Store
new file mode 100644
index 0000000..e9004e3
Binary files /dev/null and b/prisma/migrations/.DS_Store differ
diff --git a/prisma/migrations/20250715120700_added_congrats_to_guest/migration.sql b/prisma/migrations/20250715120700_added_congrats_to_guest/migration.sql
new file mode 100644
index 0000000..337a32d
--- /dev/null
+++ b/prisma/migrations/20250715120700_added_congrats_to_guest/migration.sql
@@ -0,0 +1,2 @@
+-- AlterTable
+ALTER TABLE "GuestBookEntry" ADD COLUMN "congratulated" BOOLEAN;
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 62daf70..8740779 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -84,16 +84,17 @@ model InviteToken {
}
model GuestBookEntry {
- id String @id @default(cuid())
- fName String
- lName String
- email String?
- phone String?
- address String?
- notes String?
- side String // e.g., "Brian", "Janice", etc.
- eventGuests EventGuest[]
- createdAt DateTime @default(now())
+ id String @id @default(cuid())
+ fName String
+ lName String
+ email String?
+ phone String?
+ address String?
+ notes String?
+ side String
+ congratulated Boolean?
+ eventGuests EventGuest[]
+ createdAt DateTime @default(now())
}
model EventGuest {