const express = require('express'); const router = express.Router(); module.exports = (sequelize) => { const { User, Group } = sequelize.models; // POST /api/groups router.post('/', async (req, res) => { try { const { name, members } = req.body; const group = await Group.create({ name }); await group.setMembers(members); const populatedGroup = await Group.findByPk(group.id, { include: [{ model: User, as: 'members', through: { attributes: [] } }] }); res.status(201).json(populatedGroup); } catch (error) { res.status(400).json({ message: 'Error creating group', error: error.message }); } }); // PUT /api/groups/:id/members router.put('/:id/members', async (req, res) => { try { const { userIds } = req.body; const group = await Group.findByPk(req.params.id); if (!group) return res.status(404).json({ message: 'Group not found' }); await group.addMembers(userIds); const populatedGroup = await Group.findByPk(group.id, { include: [{ model: User, as: 'members', through: { attributes: [] } }] }); res.json(populatedGroup); } catch (error) { res.status(400).json({ message: 'Error adding members to group', error: error.message }); } }); // DELETE /api/groups/:id/members/:userId router.delete('/:id/members/:userId', async (req, res) => { try { const group = await Group.findByPk(req.params.id); if (!group) return res.status(404).json({ message: 'Group not found' }); await group.removeMember(req.params.userId); const populatedGroup = await Group.findByPk(group.id, { include: [{ model: User, as: 'members', through: { attributes: [] } }] }); res.json(populatedGroup); } catch (error) { res.status(400).json({ message: 'Error removing member from group', error: error.message }); } }); return router; };