backend: Improve logging and response handling in bulkDeleteRooms function

This commit is contained in:
Carlos Santos 2025-04-15 12:15:02 +02:00
parent bc01ef1caf
commit 39f755d207

View File

@ -91,37 +91,31 @@ export const bulkDeleteRooms = async (req: Request, res: Response) => {
const roomService = container.get(RoomService); const roomService = container.get(RoomService);
const { roomIds, force } = req.query; const { roomIds, force } = req.query;
const forceDelete = force === 'true'; const forceDelete = force === 'true';
logger.info(`Deleting rooms: ${roomIds}`); logger.verbose(`Deleting rooms: ${roomIds}`);
try { try {
const roomIdsArray = roomIds as string[]; const roomIdsArray = roomIds as string[];
const { deleted, markedForDeletion } = await roomService.bulkDeleteRooms(roomIdsArray, forceDelete); const { deleted, markedForDeletion } = await roomService.bulkDeleteRooms(roomIdsArray, forceDelete);
const isSingleRoom = roomIdsArray.length === 1;
if (isSingleRoom) { logger.info(`Deleted rooms: ${deleted.length}, marked for deletion: ${markedForDeletion.length}`);
// For a single room, no content is sent if fully deleted.
if (deleted.length > 0) {
return res.sendStatus(204);
}
// For a single room marked as deleted, return a message. // All rooms were deleted
return res.status(202).json({ message: `Room ${roomIdsArray[0]} marked as deleted` });
}
// For multiple rooms
if (deleted.length > 0 && markedForDeletion.length === 0) { if (deleted.length > 0 && markedForDeletion.length === 0) {
// All rooms were deleted
return res.sendStatus(204); return res.sendStatus(204);
} }
// All room were marked for deletion
if (deleted.length === 0 && markedForDeletion.length > 0) { if (deleted.length === 0 && markedForDeletion.length > 0) {
// All rooms were marked as deleted const message =
return res markedForDeletion.length === 1
.status(202) ? `Room ${markedForDeletion[0]} marked for deletion`
.json({ message: `Rooms ${markedForDeletion.join(', ')} marked for deletion`, markedForDeletion }); : `Rooms ${markedForDeletion.join(', ')} marked for deletion`;
return res.status(202).json({ message });
} }
// Mixed result (some rooms deleted, some marked for deletion)
return res.status(200).json({ deleted, markedForDeletion }); return res.status(200).json({ deleted, markedForDeletion });
} catch (error) { } catch (error) {
logger.error(`Error deleting rooms: ${error}`); logger.error(`Error deleting rooms: ${error}`);