summary refs log tree commit diff
path: root/src/api/routes/guilds/#guild_id/emojis.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/routes/guilds/#guild_id/emojis.ts')
-rw-r--r--src/api/routes/guilds/#guild_id/emojis.ts157
1 files changed, 99 insertions, 58 deletions
diff --git a/src/api/routes/guilds/#guild_id/emojis.ts b/src/api/routes/guilds/#guild_id/emojis.ts
index cf9d742a..6e8570eb 100644
--- a/src/api/routes/guilds/#guild_id/emojis.ts
+++ b/src/api/routes/guilds/#guild_id/emojis.ts
@@ -1,5 +1,17 @@
 import { Router, Request, Response } from "express";
-import { Config, DiscordApiErrors, emitEvent, Emoji, GuildEmojisUpdateEvent, handleFile, Member, Snowflake, User, EmojiCreateSchema, EmojiModifySchema } from "@fosscord/util";
+import {
+	Config,
+	DiscordApiErrors,
+	emitEvent,
+	Emoji,
+	GuildEmojisUpdateEvent,
+	handleFile,
+	Member,
+	Snowflake,
+	User,
+	EmojiCreateSchema,
+	EmojiModifySchema,
+} from "@fosscord/util";
 import { route } from "@fosscord/api";
 
 const router = Router();
@@ -9,7 +21,10 @@ router.get("/", route({}), async (req: Request, res: Response) => {
 
 	await Member.IsInGuildOrFail(req.user_id, guild_id);
 
-	const emojis = await Emoji.find({ where: { guild_id: guild_id }, relations: ["user"] });
+	const emojis = await Emoji.find({
+		where: { guild_id: guild_id },
+		relations: ["user"],
+	});
 
 	return res.json(emojis);
 });
@@ -19,89 +34,115 @@ router.get("/:emoji_id", route({}), async (req: Request, res: Response) => {
 
 	await Member.IsInGuildOrFail(req.user_id, guild_id);
 
-	const emoji = await Emoji.findOneOrFail({ where: { guild_id: guild_id, id: emoji_id }, relations: ["user"] });
+	const emoji = await Emoji.findOneOrFail({
+		where: { guild_id: guild_id, id: emoji_id },
+		relations: ["user"],
+	});
 
 	return res.json(emoji);
 });
 
-router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
-	const { guild_id } = req.params;
-	const body = req.body as EmojiCreateSchema;
-
-	const id = Snowflake.generate();
-	const emoji_count = await Emoji.count({ where: { guild_id: guild_id } });
-	const { maxEmojis } = Config.get().limits.guild;
-
-	if (emoji_count >= maxEmojis) throw DiscordApiErrors.MAXIMUM_NUMBER_OF_EMOJIS_REACHED.withParams(maxEmojis);
-	if (body.require_colons == null) body.require_colons = true;
-
-	const user = await User.findOneOrFail({ where: { id: req.user_id } });
-	body.image = (await handleFile(`/emojis/${id}`, body.image)) as string;
-
-	const emoji = await Emoji.create({
-		id: id,
-		guild_id: guild_id,
-		...body,
-		require_colons: body.require_colons ?? undefined,	// schema allows nulls, db does not
-		user: user,
-		managed: false,
-		animated: false, // TODO: Add support animated emojis
-		available: true,
-		roles: []
-	}).save();
-
-	await emitEvent({
-		event: "GUILD_EMOJIS_UPDATE",
-		guild_id: guild_id,
-		data: {
+router.post(
+	"/",
+	route({
+		body: "EmojiCreateSchema",
+		permission: "MANAGE_EMOJIS_AND_STICKERS",
+	}),
+	async (req: Request, res: Response) => {
+		const { guild_id } = req.params;
+		const body = req.body as EmojiCreateSchema;
+
+		const id = Snowflake.generate();
+		const emoji_count = await Emoji.count({
+			where: { guild_id: guild_id },
+		});
+		const { maxEmojis } = Config.get().limits.guild;
+
+		if (emoji_count >= maxEmojis)
+			throw DiscordApiErrors.MAXIMUM_NUMBER_OF_EMOJIS_REACHED.withParams(
+				maxEmojis,
+			);
+		if (body.require_colons == null) body.require_colons = true;
+
+		const user = await User.findOneOrFail({ where: { id: req.user_id } });
+		body.image = (await handleFile(`/emojis/${id}`, body.image)) as string;
+
+		const emoji = await Emoji.create({
+			id: id,
 			guild_id: guild_id,
-			emojis: await Emoji.find({ where: { guild_id: guild_id } })
-		}
-	} as GuildEmojisUpdateEvent);
+			...body,
+			require_colons: body.require_colons ?? undefined, // schema allows nulls, db does not
+			user: user,
+			managed: false,
+			animated: false, // TODO: Add support animated emojis
+			available: true,
+			roles: [],
+		}).save();
 
-	return res.status(201).json(emoji);
-});
+		await emitEvent({
+			event: "GUILD_EMOJIS_UPDATE",
+			guild_id: guild_id,
+			data: {
+				guild_id: guild_id,
+				emojis: await Emoji.find({ where: { guild_id: guild_id } }),
+			},
+		} as GuildEmojisUpdateEvent);
+
+		return res.status(201).json(emoji);
+	},
+);
 
 router.patch(
 	"/:emoji_id",
-	route({ body: "EmojiModifySchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }),
+	route({
+		body: "EmojiModifySchema",
+		permission: "MANAGE_EMOJIS_AND_STICKERS",
+	}),
 	async (req: Request, res: Response) => {
 		const { emoji_id, guild_id } = req.params;
 		const body = req.body as EmojiModifySchema;
 
-		const emoji = await Emoji.create({ ...body, id: emoji_id, guild_id: guild_id }).save();
+		const emoji = await Emoji.create({
+			...body,
+			id: emoji_id,
+			guild_id: guild_id,
+		}).save();
 
 		await emitEvent({
 			event: "GUILD_EMOJIS_UPDATE",
 			guild_id: guild_id,
 			data: {
 				guild_id: guild_id,
-				emojis: await Emoji.find({ where: { guild_id: guild_id } })
-			}
+				emojis: await Emoji.find({ where: { guild_id: guild_id } }),
+			},
 		} as GuildEmojisUpdateEvent);
 
 		return res.json(emoji);
-	}
+	},
 );
 
-router.delete("/:emoji_id", route({ permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
-	const { emoji_id, guild_id } = req.params;
+router.delete(
+	"/:emoji_id",
+	route({ permission: "MANAGE_EMOJIS_AND_STICKERS" }),
+	async (req: Request, res: Response) => {
+		const { emoji_id, guild_id } = req.params;
 
-	await Emoji.delete({
-		id: emoji_id,
-		guild_id: guild_id
-	});
+		await Emoji.delete({
+			id: emoji_id,
+			guild_id: guild_id,
+		});
 
-	await emitEvent({
-		event: "GUILD_EMOJIS_UPDATE",
-		guild_id: guild_id,
-		data: {
+		await emitEvent({
+			event: "GUILD_EMOJIS_UPDATE",
 			guild_id: guild_id,
-			emojis: await Emoji.find({ where: { guild_id: guild_id } })
-		}
-	} as GuildEmojisUpdateEvent);
+			data: {
+				guild_id: guild_id,
+				emojis: await Emoji.find({ where: { guild_id: guild_id } }),
+			},
+		} as GuildEmojisUpdateEvent);
 
-	res.sendStatus(204);
-});
+		res.sendStatus(204);
+	},
+);
 
 export default router;