Updated description box and fixed title renaming
This commit is contained in:
@@ -835,6 +835,19 @@ app.put('/api/events/:slug', upload.single('wallpaper'), async (req: MulterReque
|
||||
return res.status(404).json({ error: 'Event not found' });
|
||||
}
|
||||
|
||||
// Generate new slug if title changed
|
||||
let newSlug = slug;
|
||||
if (title && title !== eventRows[0].title) {
|
||||
newSlug = title.toLowerCase().replace(/[^a-z0-9]+/g, '-');
|
||||
|
||||
// Check if new slug already exists (and it's not the current event)
|
||||
const existingEvent = await db.get('SELECT id FROM events WHERE slug = ? AND id != ?', [newSlug, eventRows[0].id]);
|
||||
if (existingEvent) {
|
||||
// Append a timestamp to make it unique
|
||||
newSlug = `${newSlug}-${Date.now()}`;
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure needed_items is properly formatted
|
||||
let parsedNeededItems: string[] = [];
|
||||
try {
|
||||
@@ -886,9 +899,9 @@ app.put('/api/events/:slug', upload.single('wallpaper'), async (req: MulterReque
|
||||
wallpaperPath = req.file.filename;
|
||||
}
|
||||
|
||||
// Update the event
|
||||
// Update the event (including the slug if it changed)
|
||||
await db.run(
|
||||
'UPDATE events SET title = ?, description = ?, date = ?, location = ?, needed_items = ?, rsvp_cutoff_date = ?, wallpaper = ?, max_guests_per_rsvp = ?, email_notifications_enabled = ?, email_recipients = ?, event_conclusion_email_enabled = ?, event_conclusion_message = ? WHERE slug = ?',
|
||||
'UPDATE events SET title = ?, description = ?, date = ?, location = ?, needed_items = ?, rsvp_cutoff_date = ?, wallpaper = ?, max_guests_per_rsvp = ?, email_notifications_enabled = ?, email_recipients = ?, event_conclusion_email_enabled = ?, event_conclusion_message = ?, slug = ? WHERE slug = ?',
|
||||
[
|
||||
title ?? eventRows[0].title,
|
||||
description === undefined ? eventRows[0].description : description,
|
||||
@@ -902,12 +915,13 @@ app.put('/api/events/:slug', upload.single('wallpaper'), async (req: MulterReque
|
||||
emailRecipients,
|
||||
eventConclusionEmailEnabled ? 1 : 0, // Update new field
|
||||
eventConclusionMessage, // Update new field
|
||||
slug
|
||||
newSlug, // Update slug if it changed
|
||||
slug // WHERE clause uses the old slug
|
||||
]
|
||||
);
|
||||
|
||||
// Get the updated event
|
||||
const updatedEvent = await db.get('SELECT * FROM events WHERE slug = ?', [slug]);
|
||||
// Get the updated event using the new slug
|
||||
const updatedEvent = await db.get('SELECT * FROM events WHERE slug = ?', [newSlug]);
|
||||
|
||||
// Add the full path to the wallpaper and parse JSON/boolean fields
|
||||
if (updatedEvent.wallpaper) {
|
||||
|
||||
Reference in New Issue
Block a user