summary refs log tree commit diff
path: root/src/api/routes/guilds/#guild_id/messages/search.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/routes/guilds/#guild_id/messages/search.ts')
-rw-r--r--src/api/routes/guilds/#guild_id/messages/search.ts100
1 files changed, 64 insertions, 36 deletions
diff --git a/src/api/routes/guilds/#guild_id/messages/search.ts b/src/api/routes/guilds/#guild_id/messages/search.ts
index a7516ebd..f2d8087e 100644
--- a/src/api/routes/guilds/#guild_id/messages/search.ts
+++ b/src/api/routes/guilds/#guild_id/messages/search.ts
@@ -10,36 +10,62 @@ router.get("/", route({}), async (req: Request, res: Response) => {
 	const {
 		channel_id,
 		content,
-		include_nsfw,		// TODO
+		include_nsfw, // TODO
 		offset,
 		sort_order,
-		sort_by,			// TODO: Handle 'relevance'
+		sort_by, // TODO: Handle 'relevance'
 		limit,
 		author_id,
 	} = req.query;
 
 	const parsedLimit = Number(limit) || 50;
-	if (parsedLimit < 1 || parsedLimit > 100) throw new HTTPError("limit must be between 1 and 100", 422);
+	if (parsedLimit < 1 || parsedLimit > 100)
+		throw new HTTPError("limit must be between 1 and 100", 422);
 
 	if (sort_order) {
-		if (typeof sort_order != "string"
-			|| ["desc", "asc"].indexOf(sort_order) == -1)
-			throw FieldErrors({ sort_order: { message: "Value must be one of ('desc', 'asc').", code: "BASE_TYPE_CHOICES" } }); // todo this is wrong
+		if (
+			typeof sort_order != "string" ||
+			["desc", "asc"].indexOf(sort_order) == -1
+		)
+			throw FieldErrors({
+				sort_order: {
+					message: "Value must be one of ('desc', 'asc').",
+					code: "BASE_TYPE_CHOICES",
+				},
+			}); // todo this is wrong
 	}
 
-	const permissions = await getPermission(req.user_id, req.params.guild_id, channel_id as string);
+	const permissions = await getPermission(
+		req.user_id,
+		req.params.guild_id,
+		channel_id as string,
+	);
 	permissions.hasThrow("VIEW_CHANNEL");
-	if (!permissions.has("READ_MESSAGE_HISTORY")) return res.json({ messages: [], total_results: 0 });
+	if (!permissions.has("READ_MESSAGE_HISTORY"))
+		return res.json({ messages: [], total_results: 0 });
 
 	var query: FindManyOptions<Message> = {
-		order: { timestamp: sort_order ? sort_order.toUpperCase() as "ASC" | "DESC" : "DESC" },
+		order: {
+			timestamp: sort_order
+				? (sort_order.toUpperCase() as "ASC" | "DESC")
+				: "DESC",
+		},
 		take: parsedLimit || 0,
 		where: {
 			guild: {
 				id: req.params.guild_id,
 			},
 		},
-		relations: ["author", "webhook", "application", "mentions", "mention_roles", "mention_channels", "sticker_items", "attachments"],
+		relations: [
+			"author",
+			"webhook",
+			"application",
+			"mentions",
+			"mention_roles",
+			"mention_channels",
+			"sticker_items",
+			"attachments",
+		],
 		skip: offset ? Number(offset) : 0,
 	};
 	//@ts-ignore
@@ -51,32 +77,34 @@ router.get("/", route({}), async (req: Request, res: Response) => {
 
 	const messages: Message[] = await Message.find(query);
 
-	const messagesDto = messages.map(x => [{
-		id: x.id,
-		type: x.type,
-		content: x.content,
-		channel_id: x.channel_id,
-		author: {
-			id: x.author?.id,
-			username: x.author?.username,
-			avatar: x.author?.avatar,
-			avatar_decoration: null,
-			discriminator: x.author?.discriminator,
-			public_flags: x.author?.public_flags,
+	const messagesDto = messages.map((x) => [
+		{
+			id: x.id,
+			type: x.type,
+			content: x.content,
+			channel_id: x.channel_id,
+			author: {
+				id: x.author?.id,
+				username: x.author?.username,
+				avatar: x.author?.avatar,
+				avatar_decoration: null,
+				discriminator: x.author?.discriminator,
+				public_flags: x.author?.public_flags,
+			},
+			attachments: x.attachments,
+			embeds: x.embeds,
+			mentions: x.mentions,
+			mention_roles: x.mention_roles,
+			pinned: x.pinned,
+			mention_everyone: x.mention_everyone,
+			tts: x.tts,
+			timestamp: x.timestamp,
+			edited_timestamp: x.edited_timestamp,
+			flags: x.flags,
+			components: x.components,
+			hit: true,
 		},
-		attachments: x.attachments,
-		embeds: x.embeds,
-		mentions: x.mentions,
-		mention_roles: x.mention_roles,
-		pinned: x.pinned,
-		mention_everyone: x.mention_everyone,
-		tts: x.tts,
-		timestamp: x.timestamp,
-		edited_timestamp: x.edited_timestamp,
-		flags: x.flags,
-		components: x.components,
-		hit: true,
-	}]);
+	]);
 
 	return res.json({
 		messages: messagesDto,
@@ -84,4 +112,4 @@ router.get("/", route({}), async (req: Request, res: Response) => {
 	});
 });
 
-export default router;
\ No newline at end of file
+export default router;