From bed535d041b1bf868a4edab83ded25e9a25cf5b7 Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 00:14:26 +1000 Subject: Create role subdirectory and add GET api route --- api/src/routes/guilds/#guild_id/roles.ts | 164 --------------------- .../guilds/#guild_id/roles/#role_id/index.ts | 145 ++++++++++++++++++ api/src/routes/guilds/#guild_id/roles/index.ts | 164 +++++++++++++++++++++ 3 files changed, 309 insertions(+), 164 deletions(-) delete mode 100644 api/src/routes/guilds/#guild_id/roles.ts create mode 100644 api/src/routes/guilds/#guild_id/roles/#role_id/index.ts create mode 100644 api/src/routes/guilds/#guild_id/roles/index.ts (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles.ts b/api/src/routes/guilds/#guild_id/roles.ts deleted file mode 100644 index b6894e3f..00000000 --- a/api/src/routes/guilds/#guild_id/roles.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { Request, Response, Router } from "express"; -import { - Role, - getPermission, - Member, - GuildRoleCreateEvent, - GuildRoleUpdateEvent, - GuildRoleDeleteEvent, - emitEvent, - Config, - DiscordApiErrors, - handleFile -} from "@fosscord/util"; -import { HTTPError } from "lambert-server"; -import { route } from "@fosscord/api"; - -const router: Router = Router(); - -export interface RoleModifySchema { - name?: string; - permissions?: string; - color?: number; - hoist?: boolean; // whether the role should be displayed separately in the sidebar - mentionable?: boolean; // whether the role should be mentionable - position?: number; - icon?: string; - unicode_emoji?: string; -} - -export type RolePositionUpdateSchema = { - id: string; - position: number; -}[]; - -router.get("/", route({}), async (req: Request, res: Response) => { - const guild_id = req.params.guild_id; - - await Member.IsInGuildOrFail(req.user_id, guild_id); - - const roles = await Role.find({ guild_id: guild_id }); - - return res.json(roles); -}); - -router.post("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { - const guild_id = req.params.guild_id; - const body = req.body as RoleModifySchema; - - const role_count = await Role.count({ guild_id }); - const { maxRoles } = Config.get().limits.guild; - - if (role_count > maxRoles) throw DiscordApiErrors.MAXIMUM_ROLES.withParams(maxRoles); - - const role = new Role({ - // values before ...body are default and can be overriden - position: 0, - hoist: false, - color: 0, - mentionable: false, - ...body, - guild_id: guild_id, - managed: false, - permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")), - tags: undefined, - icon: null, - unicode_emoji: null - }); - - await Promise.all([ - role.save(), - emitEvent({ - event: "GUILD_ROLE_CREATE", - guild_id, - data: { - guild_id, - role: role - } - } as GuildRoleCreateEvent) - ]); - - res.json(role); -}); - -router.delete("/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { - const guild_id = req.params.guild_id; - const { role_id } = req.params; - if (role_id === guild_id) throw new HTTPError("You can't delete the @everyone role"); - - await Promise.all([ - Role.delete({ - id: role_id, - guild_id: guild_id - }), - emitEvent({ - event: "GUILD_ROLE_DELETE", - guild_id, - data: { - guild_id, - role_id - } - } as GuildRoleDeleteEvent) - ]); - - res.sendStatus(204); -}); - -// TODO: check role hierarchy - -router.patch("/:role_id", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { - const { role_id, guild_id } = req.params; - const body = req.body as RoleModifySchema; - - if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); - - const role = new Role({ - ...body, - id: role_id, - guild_id, - permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")) - }); - - await Promise.all([ - role.save(), - emitEvent({ - event: "GUILD_ROLE_UPDATE", - guild_id, - data: { - guild_id, - role - } - } as GuildRoleUpdateEvent) - ]); - - res.json(role); -}); - -router.patch("/", route({ body: "RolePositionUpdateSchema" }), async (req: Request, res: Response) => { - const { guild_id } = req.params; - const body = req.body as RolePositionUpdateSchema; - - const perms = await getPermission(req.user_id, guild_id); - perms.hasThrow("MANAGE_ROLES"); - - await Promise.all(body.map(async (x) => Role.update({ guild_id, id: x.id }, { position: x.position }))); - - const roles = await Role.find({ where: body.map((x) => ({ id: x.id, guild_id })) }); - - await Promise.all( - roles.map((x) => - emitEvent({ - event: "GUILD_ROLE_UPDATE", - guild_id, - data: { - guild_id, - role: x - } - } as GuildRoleUpdateEvent) - ) - ); - - res.json(roles); -}); - -export default router; diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts new file mode 100644 index 00000000..69c2143d --- /dev/null +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -0,0 +1,145 @@ +import { Router, Request, Response } from "express"; +import { + Role, + getPermission, + Member, + GuildRoleCreateEvent, + GuildRoleUpdateEvent, + GuildRoleDeleteEvent, + emitEvent, + Config, + DiscordApiErrors, + handleFile +} from "@fosscord/util"; +import { route } from "@fosscord/api"; +import {RoleModifySchema, RolePositionUpdateSchema} from '../' + +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 role = await Role.find({ guild_id: guild_id }).find((r: {id: string}) => r.id === role_id); + return res.json(role); +}); + +// router.post("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { +// const guild_id = req.params.guild_id; +// const body = req.body as RoleModifySchema; + +// const role_count = await Role.count({ guild_id }); +// const { maxRoles } = Config.get().limits.guild; + +// if (role_count > maxRoles) throw DiscordApiErrors.MAXIMUM_ROLES.withParams(maxRoles); + +// const role = new Role({ +// // values before ...body are default and can be overriden +// position: 0, +// hoist: false, +// color: 0, +// mentionable: false, +// ...body, +// guild_id: guild_id, +// managed: false, +// permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")), +// tags: undefined, +// icon: null, +// unicode_emoji: null +// }); + +// await Promise.all([ +// role.save(), +// emitEvent({ +// event: "GUILD_ROLE_CREATE", +// guild_id, +// data: { +// guild_id, +// role: role +// } +// } as GuildRoleCreateEvent) +// ]); + +// res.json(role); +// }); + +// router.delete("/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { +// const guild_id = req.params.guild_id; +// const { role_id } = req.params; +// if (role_id === guild_id) throw new HTTPError("You can't delete the @everyone role"); + +// await Promise.all([ +// Role.delete({ +// id: role_id, +// guild_id: guild_id +// }), +// emitEvent({ +// event: "GUILD_ROLE_DELETE", +// guild_id, +// data: { +// guild_id, +// role_id +// } +// } as GuildRoleDeleteEvent) +// ]); + +// res.sendStatus(204); +// }); + +// // TODO: check role hierarchy + +// router.patch("/:role_id", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { +// const { role_id, guild_id } = req.params; +// const body = req.body as RoleModifySchema; + +// if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); + +// const role = new Role({ +// ...body, +// id: role_id, +// guild_id, +// permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")) +// }); + +// await Promise.all([ +// role.save(), +// emitEvent({ +// event: "GUILD_ROLE_UPDATE", +// guild_id, +// data: { +// guild_id, +// role +// } +// } as GuildRoleUpdateEvent) +// ]); + +// res.json(role); +// }); + +// router.patch("/", route({ body: "RolePositionUpdateSchema" }), async (req: Request, res: Response) => { +// const { guild_id } = req.params; +// const body = req.body as RolePositionUpdateSchema; + +// const perms = await getPermission(req.user_id, guild_id); +// perms.hasThrow("MANAGE_ROLES"); + +// await Promise.all(body.map(async (x) => Role.update({ guild_id, id: x.id }, { position: x.position }))); + +// const roles = await Role.find({ where: body.map((x) => ({ id: x.id, guild_id })) }); + +// await Promise.all( +// roles.map((x) => +// emitEvent({ +// event: "GUILD_ROLE_UPDATE", +// guild_id, +// data: { +// guild_id, +// role: x +// } +// } as GuildRoleUpdateEvent) +// ) +// ); + +// res.json(roles); +// }); + +export default router; diff --git a/api/src/routes/guilds/#guild_id/roles/index.ts b/api/src/routes/guilds/#guild_id/roles/index.ts new file mode 100644 index 00000000..b6894e3f --- /dev/null +++ b/api/src/routes/guilds/#guild_id/roles/index.ts @@ -0,0 +1,164 @@ +import { Request, Response, Router } from "express"; +import { + Role, + getPermission, + Member, + GuildRoleCreateEvent, + GuildRoleUpdateEvent, + GuildRoleDeleteEvent, + emitEvent, + Config, + DiscordApiErrors, + handleFile +} from "@fosscord/util"; +import { HTTPError } from "lambert-server"; +import { route } from "@fosscord/api"; + +const router: Router = Router(); + +export interface RoleModifySchema { + name?: string; + permissions?: string; + color?: number; + hoist?: boolean; // whether the role should be displayed separately in the sidebar + mentionable?: boolean; // whether the role should be mentionable + position?: number; + icon?: string; + unicode_emoji?: string; +} + +export type RolePositionUpdateSchema = { + id: string; + position: number; +}[]; + +router.get("/", route({}), async (req: Request, res: Response) => { + const guild_id = req.params.guild_id; + + await Member.IsInGuildOrFail(req.user_id, guild_id); + + const roles = await Role.find({ guild_id: guild_id }); + + return res.json(roles); +}); + +router.post("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { + const guild_id = req.params.guild_id; + const body = req.body as RoleModifySchema; + + const role_count = await Role.count({ guild_id }); + const { maxRoles } = Config.get().limits.guild; + + if (role_count > maxRoles) throw DiscordApiErrors.MAXIMUM_ROLES.withParams(maxRoles); + + const role = new Role({ + // values before ...body are default and can be overriden + position: 0, + hoist: false, + color: 0, + mentionable: false, + ...body, + guild_id: guild_id, + managed: false, + permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")), + tags: undefined, + icon: null, + unicode_emoji: null + }); + + await Promise.all([ + role.save(), + emitEvent({ + event: "GUILD_ROLE_CREATE", + guild_id, + data: { + guild_id, + role: role + } + } as GuildRoleCreateEvent) + ]); + + res.json(role); +}); + +router.delete("/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { + const guild_id = req.params.guild_id; + const { role_id } = req.params; + if (role_id === guild_id) throw new HTTPError("You can't delete the @everyone role"); + + await Promise.all([ + Role.delete({ + id: role_id, + guild_id: guild_id + }), + emitEvent({ + event: "GUILD_ROLE_DELETE", + guild_id, + data: { + guild_id, + role_id + } + } as GuildRoleDeleteEvent) + ]); + + res.sendStatus(204); +}); + +// TODO: check role hierarchy + +router.patch("/:role_id", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { + const { role_id, guild_id } = req.params; + const body = req.body as RoleModifySchema; + + if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); + + const role = new Role({ + ...body, + id: role_id, + guild_id, + permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")) + }); + + await Promise.all([ + role.save(), + emitEvent({ + event: "GUILD_ROLE_UPDATE", + guild_id, + data: { + guild_id, + role + } + } as GuildRoleUpdateEvent) + ]); + + res.json(role); +}); + +router.patch("/", route({ body: "RolePositionUpdateSchema" }), async (req: Request, res: Response) => { + const { guild_id } = req.params; + const body = req.body as RolePositionUpdateSchema; + + const perms = await getPermission(req.user_id, guild_id); + perms.hasThrow("MANAGE_ROLES"); + + await Promise.all(body.map(async (x) => Role.update({ guild_id, id: x.id }, { position: x.position }))); + + const roles = await Role.find({ where: body.map((x) => ({ id: x.id, guild_id })) }); + + await Promise.all( + roles.map((x) => + emitEvent({ + event: "GUILD_ROLE_UPDATE", + guild_id, + data: { + guild_id, + role: x + } + } as GuildRoleUpdateEvent) + ) + ); + + res.json(roles); +}); + +export default router; -- cgit 1.5.1 From 04f22cbfd0c522770164be3f27c6dffef595e250 Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 00:19:33 +1000 Subject: Fix compile error in get request --- .../guilds/#guild_id/roles/#role_id/index.ts | 46 ++-------------------- 1 file changed, 4 insertions(+), 42 deletions(-) (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts index 69c2143d..f01b81c9 100644 --- a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -19,52 +19,14 @@ 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 role = await Role.find({ guild_id: guild_id }).find((r: {id: string}) => r.id === role_id); + const roles = await Role.find({ guild_id: guild_id }) + const role = roles.find((r: {id: string}) => r.id === role_id); return res.json(role); }); -// router.post("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { -// const guild_id = req.params.guild_id; -// const body = req.body as RoleModifySchema; - -// const role_count = await Role.count({ guild_id }); -// const { maxRoles } = Config.get().limits.guild; - -// if (role_count > maxRoles) throw DiscordApiErrors.MAXIMUM_ROLES.withParams(maxRoles); - -// const role = new Role({ -// // values before ...body are default and can be overriden -// position: 0, -// hoist: false, -// color: 0, -// mentionable: false, -// ...body, -// guild_id: guild_id, -// managed: false, -// permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")), -// tags: undefined, -// icon: null, -// unicode_emoji: null -// }); - -// await Promise.all([ -// role.save(), -// emitEvent({ -// event: "GUILD_ROLE_CREATE", -// guild_id, -// data: { -// guild_id, -// role: role -// } -// } as GuildRoleCreateEvent) -// ]); - -// res.json(role); -// }); -// router.delete("/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { -// const guild_id = req.params.guild_id; -// const { role_id } = req.params; +// router.delete("/", route({ permission: "MANAGE_ROLES" }), 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"); // await Promise.all([ -- cgit 1.5.1 From 9f8aa049c9da9db0ad7095324d434bbd3a815efe Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 00:42:03 +1000 Subject: Move role_id specific api routes to correct file --- .../guilds/#guild_id/roles/#role_id/index.ts | 137 ++++++++------------- api/src/routes/guilds/#guild_id/roles/index.ts | 53 -------- 2 files changed, 53 insertions(+), 137 deletions(-) (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts index f01b81c9..88c1219b 100644 --- a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -1,18 +1,15 @@ import { Router, Request, Response } from "express"; import { Role, - getPermission, Member, - GuildRoleCreateEvent, GuildRoleUpdateEvent, GuildRoleDeleteEvent, emitEvent, - Config, - DiscordApiErrors, - handleFile + handleFile } from "@fosscord/util"; import { route } from "@fosscord/api"; -import {RoleModifySchema, RolePositionUpdateSchema} from '../' +import { HTTPError } from "lambert-server"; +import {RoleModifySchema} from '../' const router = Router(); @@ -24,84 +21,56 @@ router.get("/",route({}), async (req: Request, res: Response) => { return res.json(role); }); +router.delete("/", route({ permission: "MANAGE_ROLES" }), 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"); + + await Promise.all([ + Role.delete({ + id: role_id, + guild_id: guild_id + }), + emitEvent({ + event: "GUILD_ROLE_DELETE", + guild_id, + data: { + guild_id, + role_id + } + } as GuildRoleDeleteEvent) + ]); + + res.sendStatus(204); +}); -// router.delete("/", route({ permission: "MANAGE_ROLES" }), 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"); - -// await Promise.all([ -// Role.delete({ -// id: role_id, -// guild_id: guild_id -// }), -// emitEvent({ -// event: "GUILD_ROLE_DELETE", -// guild_id, -// data: { -// guild_id, -// role_id -// } -// } as GuildRoleDeleteEvent) -// ]); - -// res.sendStatus(204); -// }); - -// // TODO: check role hierarchy - -// router.patch("/:role_id", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { -// const { role_id, guild_id } = req.params; -// const body = req.body as RoleModifySchema; - -// if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); - -// const role = new Role({ -// ...body, -// id: role_id, -// guild_id, -// permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")) -// }); - -// await Promise.all([ -// role.save(), -// emitEvent({ -// event: "GUILD_ROLE_UPDATE", -// guild_id, -// data: { -// guild_id, -// role -// } -// } as GuildRoleUpdateEvent) -// ]); - -// res.json(role); -// }); - -// router.patch("/", route({ body: "RolePositionUpdateSchema" }), async (req: Request, res: Response) => { -// const { guild_id } = req.params; -// const body = req.body as RolePositionUpdateSchema; - -// const perms = await getPermission(req.user_id, guild_id); -// perms.hasThrow("MANAGE_ROLES"); - -// await Promise.all(body.map(async (x) => Role.update({ guild_id, id: x.id }, { position: x.position }))); - -// const roles = await Role.find({ where: body.map((x) => ({ id: x.id, guild_id })) }); - -// await Promise.all( -// roles.map((x) => -// emitEvent({ -// event: "GUILD_ROLE_UPDATE", -// guild_id, -// data: { -// guild_id, -// role: x -// } -// } as GuildRoleUpdateEvent) -// ) -// ); - -// res.json(roles); -// }); +// TODO: check role hierarchy + +router.patch("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { + const { role_id, guild_id } = req.params; + const body = req.body as RoleModifySchema; + + if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); + + const role = new Role({ + ...body, + id: role_id, + guild_id, + permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")) + }); + + await Promise.all([ + role.save(), + emitEvent({ + event: "GUILD_ROLE_UPDATE", + guild_id, + data: { + guild_id, + role + } + } as GuildRoleUpdateEvent) + ]); + + res.json(role); +}); export default router; diff --git a/api/src/routes/guilds/#guild_id/roles/index.ts b/api/src/routes/guilds/#guild_id/roles/index.ts index b6894e3f..53465105 100644 --- a/api/src/routes/guilds/#guild_id/roles/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/index.ts @@ -81,59 +81,6 @@ router.post("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }) res.json(role); }); -router.delete("/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { - const guild_id = req.params.guild_id; - const { role_id } = req.params; - if (role_id === guild_id) throw new HTTPError("You can't delete the @everyone role"); - - await Promise.all([ - Role.delete({ - id: role_id, - guild_id: guild_id - }), - emitEvent({ - event: "GUILD_ROLE_DELETE", - guild_id, - data: { - guild_id, - role_id - } - } as GuildRoleDeleteEvent) - ]); - - res.sendStatus(204); -}); - -// TODO: check role hierarchy - -router.patch("/:role_id", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => { - const { role_id, guild_id } = req.params; - const body = req.body as RoleModifySchema; - - if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); - - const role = new Role({ - ...body, - id: role_id, - guild_id, - permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")) - }); - - await Promise.all([ - role.save(), - emitEvent({ - event: "GUILD_ROLE_UPDATE", - guild_id, - data: { - guild_id, - role - } - } as GuildRoleUpdateEvent) - ]); - - res.json(role); -}); - router.patch("/", route({ body: "RolePositionUpdateSchema" }), async (req: Request, res: Response) => { const { guild_id } = req.params; const body = req.body as RolePositionUpdateSchema; -- cgit 1.5.1 From 5dc1479431bb90d91443c3b08b73890fc96b22bc Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 01:03:35 +1000 Subject: Simplify role query as per code review --- api/src/routes/guilds/#guild_id/roles/#role_id/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts index 88c1219b..2c1a4c7e 100644 --- a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -16,8 +16,7 @@ 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 roles = await Role.find({ guild_id: guild_id }) - const role = roles.find((r: {id: string}) => r.id === role_id); + const role = await Role.find({ guild_id, id: role_id }) return res.json(role); }); -- cgit 1.5.1 From 73416102a039714a7e16f21692cd6ec37ec9fb89 Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 01:04:16 +1000 Subject: Add semicolon --- api/src/routes/guilds/#guild_id/roles/#role_id/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts index 2c1a4c7e..79cf39cc 100644 --- a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -16,7 +16,7 @@ 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 role = await Role.find({ guild_id, id: role_id }) + const role = await Role.find({ guild_id, id: role_id }); return res.json(role); }); -- cgit 1.5.1 From 078c87ae17c66db5b01bf38c47d573ac298da124 Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 01:08:12 +1000 Subject: Ensure query fails if role with specified id does not exist --- api/src/routes/guilds/#guild_id/roles/#role_id/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts index 79cf39cc..c9a4f662 100644 --- a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -16,7 +16,7 @@ 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 role = await Role.find({ guild_id, id: role_id }); + const role = await Role.findOneOrFail({ guild_id, id: role_id }); return res.json(role); }); -- cgit 1.5.1 From d47c0d6a82ff900c9d9b9a37f726c7cff6fcec9b Mon Sep 17 00:00:00 2001 From: LachlanCourt Date: Tue, 5 Jul 2022 01:23:54 +1000 Subject: Format changed files --- .../routes/guilds/#guild_id/roles/#role_id/index.ts | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) (limited to 'api/src/routes') diff --git a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts index c9a4f662..2ad01682 100644 --- a/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts +++ b/api/src/routes/guilds/#guild_id/roles/#role_id/index.ts @@ -1,21 +1,14 @@ import { Router, Request, Response } from "express"; -import { - Role, - Member, - GuildRoleUpdateEvent, - GuildRoleDeleteEvent, - emitEvent, - handleFile -} from "@fosscord/util"; +import { Role, Member, GuildRoleUpdateEvent, GuildRoleDeleteEvent, emitEvent, handleFile } from "@fosscord/util"; import { route } from "@fosscord/api"; import { HTTPError } from "lambert-server"; -import {RoleModifySchema} from '../' +import { RoleModifySchema } from "../"; 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); +router.get("/", route({}), async (req: Request, res: Response) => { + const { guild_id, role_id } = req.params; + await Member.IsInGuildOrFail(req.user_id, guild_id); const role = await Role.findOneOrFail({ guild_id, id: role_id }); return res.json(role); }); @@ -48,7 +41,7 @@ router.patch("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" } const { role_id, guild_id } = req.params; const body = req.body as RoleModifySchema; - if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); + if (body.icon) body.icon = await handleFile(`/role-icons/${role_id}`, body.icon as string); const role = new Role({ ...body, -- cgit 1.5.1