diff options
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts | 22 | ||||
-rw-r--r-- | src/api/routes/guilds/#guild_id/roles/#role_id/members.ts | 56 |
2 files changed, 43 insertions, 35 deletions
diff --git a/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts b/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts index 6353e1f6..e0e7bd20 100644 --- a/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts +++ b/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts @@ -23,16 +23,18 @@ import { route } from "@spacebar/api"; const router = Router(); router.get("/", route({}), async (req: Request, res: Response) => { - const { guild_id, role_id } = req.params; - await Member.IsInGuildOrFail(req.user_id, guild_id); - const members = await Member.find({ - select: ["id"], - relations: ["roles"], - }); - const member_ids = members.filter((member) => { - return member.roles.map((role) => role.id).includes(role_id); - }).map((member) => member.id); - return res.json(member_ids); + const { guild_id, role_id } = req.params; + await Member.IsInGuildOrFail(req.user_id, guild_id); + const members = await Member.find({ + select: ["id"], + relations: ["roles"], + }); + const member_ids = members + .filter((member) => { + return member.roles.map((role) => role.id).includes(role_id); + }) + .map((member) => member.id); + return res.json(member_ids); }); export default router; diff --git a/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts b/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts index 26359a69..a1238382 100644 --- a/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts +++ b/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts @@ -23,31 +23,37 @@ import { route } from "@spacebar/api"; const router = Router(); router.patch( - "/", - route({ permission: "MANAGE_ROLES" }), - async (req: Request, res: Response) => { - // Payload is JSON containing a list of member_ids, the new list of members to have the role - const { guild_id, role_id } = req.params; - const { member_ids } = req.body; - await Member.IsInGuildOrFail(req.user_id, guild_id); - const members = await Member.find({ - where: { guild_id }, - relations: ["roles"], - }); - const members_to_add = members.filter((member) => { - return member_ids.includes(member.id) && !member.roles.map((role) => role.id).includes(role_id); - }); - const members_to_remove = members.filter((member) => { - return !member_ids.includes(member.id) && member.roles.map((role) => role.id).includes(role_id); - }); - for (const member of members_to_add) { - Member.addRole(member.id, guild_id, role_id); - } - for (const member of members_to_remove) { - Member.removeRole(member.id, guild_id, role_id); - } - res.sendStatus(204); - } + "/", + route({ permission: "MANAGE_ROLES" }), + async (req: Request, res: Response) => { + // Payload is JSON containing a list of member_ids, the new list of members to have the role + const { guild_id, role_id } = req.params; + const { member_ids } = req.body; + await Member.IsInGuildOrFail(req.user_id, guild_id); + const members = await Member.find({ + where: { guild_id }, + relations: ["roles"], + }); + const members_to_add = members.filter((member) => { + return ( + member_ids.includes(member.id) && + !member.roles.map((role) => role.id).includes(role_id) + ); + }); + const members_to_remove = members.filter((member) => { + return ( + !member_ids.includes(member.id) && + member.roles.map((role) => role.id).includes(role_id) + ); + }); + for (const member of members_to_add) { + Member.addRole(member.id, guild_id, role_id); + } + for (const member of members_to_remove) { + Member.removeRole(member.id, guild_id, role_id); + } + res.sendStatus(204); + }, ); export default router; |