diff options
Diffstat (limited to 'src/api/routes/guilds/#guild_id/roles/#role_id')
-rw-r--r-- | src/api/routes/guilds/#guild_id/roles/#role_id/index.ts | 20 | ||||
-rw-r--r-- | src/api/routes/guilds/#guild_id/roles/#role_id/members.ts | 62 |
2 files changed, 32 insertions, 50 deletions
diff --git a/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts b/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts index ea1a782a..ae10addf 100644 --- a/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -53,7 +53,7 @@ router.get( where: { guild_id, id: role_id }, }); return res.json(role); - }, + } ); router.delete( @@ -75,8 +75,7 @@ router.delete( }), async (req: Request, res: Response) => { const { guild_id, role_id } = req.params; - if (role_id === guild_id) - throw new HTTPError("You can't delete the @everyone role"); + if (role_id === guild_id) throw new HTTPError("You can't delete the @everyone role"); await Promise.all([ Role.delete({ @@ -94,7 +93,7 @@ router.delete( ]); res.sendStatus(204); - }, + } ); // TODO: check role hierarchy @@ -123,11 +122,7 @@ router.patch( const { role_id, guild_id } = req.params; const body = req.body as RoleModifySchema; - if (body.icon && body.icon.length) - body.icon = await handleFile( - `/role-icons/${role_id}`, - body.icon as string, - ); + if (body.icon && body.icon.length) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); else body.icon = undefined; const role = await Role.findOneOrFail({ @@ -135,10 +130,7 @@ router.patch( }); role.assign({ ...body, - permissions: String( - (req.permission?.bitfield || 0n) & - BigInt(body.permissions || "0"), - ), + permissions: String((req.permission?.bitfield || 0n) & BigInt(body.permissions || "0")), }); await Promise.all([ @@ -154,7 +146,7 @@ router.patch( ]); res.json(role); - }, + } ); 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 539cd5d8..a34908a6 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 @@ -22,41 +22,31 @@ 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; - - // don't mess with @everyone - if (role_id == guild_id) throw DiscordApiErrors.INVALID_ROLE; - - const members = await Member.find({ - where: { guild_id }, - relations: ["roles"], - }); - - const [add, remove] = partition( - members, - (member) => - member_ids.includes(member.id) && - !member.roles.map((role) => role.id).includes(role_id), - ); - - // TODO (erkin): have a bulk add/remove function that adds the roles in a single txn - await Promise.all([ - ...add.map((member) => - Member.addRole(member.id, guild_id, role_id), - ), - ...remove.map((member) => - Member.removeRole(member.id, guild_id, role_id), - ), - ]); - - res.sendStatus(204); - }, -); +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; + + // don't mess with @everyone + if (role_id == guild_id) throw DiscordApiErrors.INVALID_ROLE; + + const members = await Member.find({ + where: { guild_id }, + relations: ["roles"], + }); + + const [add, remove] = partition( + members, + (member) => member_ids.includes(member.id) && !member.roles.map((role) => role.id).includes(role_id) + ); + + // TODO (erkin): have a bulk add/remove function that adds the roles in a single txn + await Promise.all([ + ...add.map((member) => Member.addRole(member.id, guild_id, role_id)), + ...remove.map((member) => Member.removeRole(member.id, guild_id, role_id)), + ]); + + res.sendStatus(204); +}); export default router; |