From f69d9c2814dd3f604dca47ff616a410c9ac8544d Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Sun, 12 Nov 2023 18:19:35 +0100 Subject: [PATCH] Added the GET /guilds/:guildId route --- api/routes/guilds.ts | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/api/routes/guilds.ts b/api/routes/guilds.ts index 3f816ca..39f0a26 100644 --- a/api/routes/guilds.ts +++ b/api/routes/guilds.ts @@ -6,7 +6,6 @@ import {validateSchema} from "../../util/validate"; import {getGuildById} from "../../controller/guild"; import {patchGuild} from "../validations/guildValidation"; - const app = Router(); app.get("/", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response) => { @@ -19,22 +18,44 @@ app.get("/", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response }); }); -app.patch("/:guildId", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response) => { - const validationError = validateSchema(patchGuild, req.body); - if (validationError) return res.status(400).json({message: validationError}); - +/** + * Handles the guild id error + * @param req The request + * @param res The response + */ +const guildIdErrorHandler = async (req: AuthenticatedRequest, res: Response) => { if (!await canEditGuild(req.user.refreshDate!, req.user.refreshToken, req.user.accessToken, req.params.guildId.toString())) { res.status(403).json({message: "You are not allowed to edit this guild"}); return; } - const guild = await getGuildById(parseInt(req.params.guildId)); + const guild = await getGuildById(req.params.guildId); if (!guild) { res.status(404).json({message: "The provided guild is not registered"}) return; } + return guild; +} + +app.get("/:guildId", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response) => { + const guild = await guildIdErrorHandler(req, res); + if (!guild) return; + + res.json(guild); +}); + +app.patch("/:guildId", hasRank(Rank.USER), async (req: AuthenticatedRequest, res: Response) => { + const validationError = validateSchema(patchGuild, req.body); + if (validationError) return res.status(400).json({message: validationError}); + + const guild = await guildIdErrorHandler(req, res); + if (!guild) return; + + if (Object.keys(req.body).length === 0) + return res.status(400).json({message: "You need to provide at least one field to update"}); + await guild.update(req.body); res.json({message: "The guild has been updated successfully"});