Skip to content

Commit bb6d98a

Browse files
committed
feat: add delete event route
1 parent 4c76c96 commit bb6d98a

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

src/routes/eventRoutes.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import {
55
createEvent,
66
addCohost,
77
removeCohost,
8-
updateEvent,
8+
updateEvent,
9+
deleteEvent,
910
} from '../services/eventService';
1011
import { getUserByPhoneNumber } from '../services/userService';
1112
import { verifyIdToken } from '../middleware/verifyIdToken';
@@ -168,4 +169,44 @@ router.patch('/cohost/remove', verifyIdToken, async (req: Request, res: Response
168169
}
169170
})
170171

172+
router.delete('/:eventId', verifyIdToken, async (req: Request, res: Response) => {
173+
try {
174+
const userId = req.userId;
175+
const { eventId } = req.params;
176+
177+
if (!eventId) {
178+
res.status(400).json({ message: 'Event ID is required' });
179+
return;
180+
}
181+
182+
const user = await getUser(userId);
183+
if (!user) {
184+
res.status(404).json({ message: 'User not found' });
185+
return;
186+
}
187+
188+
const event = await getEvent(eventId);
189+
if (!event) {
190+
res.status(404).json({ message: 'Event not found' });
191+
return;
192+
}
193+
194+
if (event.hostId !== userId) {
195+
res.status(403).json({ message: 'Only the host can delete this event' });
196+
return;
197+
}
198+
199+
const { success, error } = await deleteEvent(eventId);
200+
201+
if (success) {
202+
res.status(200).json({ message: 'Event deleted successfully' });
203+
} else {
204+
res.status(500).json({ message: error ?? 'Internal Server Error' });
205+
}
206+
} catch (error) {
207+
console.error(error);
208+
res.status(500).json({ message: 'Internal Server Error' });
209+
}
210+
});
211+
171212
export default router

src/services/eventService.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,29 @@ export const updateEvent = async (eventId: string, data: {
192192
};
193193
}
194194
}
195+
};
196+
197+
export const deleteEvent = async (eventId: string) => {
198+
try {
199+
const event = await prisma.event.delete({
200+
where: { id: eventId }
201+
});
202+
203+
return {
204+
success: true,
205+
event
206+
};
207+
} catch (error: unknown) {
208+
if (error instanceof Error) {
209+
return {
210+
success: false,
211+
error: error.message,
212+
};
213+
} else {
214+
return {
215+
success: false,
216+
error: "Failed to delete event",
217+
};
218+
}
219+
}
195220
};

0 commit comments

Comments
 (0)