summary refs log tree commit diff
path: root/api/src/routes/channels/#channel_id/messages/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/routes/channels/#channel_id/messages/index.ts')
-rw-r--r--api/src/routes/channels/#channel_id/messages/index.ts30
1 files changed, 14 insertions, 16 deletions
diff --git a/api/src/routes/channels/#channel_id/messages/index.ts b/api/src/routes/channels/#channel_id/messages/index.ts
index b5c650bb..6307c022 100644
--- a/api/src/routes/channels/#channel_id/messages/index.ts
+++ b/api/src/routes/channels/#channel_id/messages/index.ts
@@ -1,5 +1,5 @@
 import { Router, Response, Request } from "express";
-import { Attachment, Channel, ChannelType, getPermission, MessageDocument, Message, toObject } from "@fosscord/util";
+import { Attachment, Channel, ChannelType, getPermission, Message } from "@fosscord/util";
 import { HTTPError } from "lambert-server";
 import { MessageCreateSchema } from "../../../../schema/Message";
 import { check, instanceOf, Length } from "../../../../util/instanceOf";
@@ -7,6 +7,7 @@ import multer from "multer";
 import { Query } from "mongoose";
 import { sendMessage } from "../../../../util/Message";
 import { uploadFile } from "../../../../util/cdn";
+import { FindManyOptions, LessThan, MoreThan } from "typeorm";
 
 const router: Router = Router();
 
@@ -55,24 +56,21 @@ router.get("/", async (req: Request, res: Response) => {
 	permissions.hasThrow("VIEW_CHANNEL");
 	if (!permissions.has("READ_MESSAGE_HISTORY")) return res.json([]);
 
-	var query: Query<MessageDocument[], MessageDocument>;
-	if (after) query = Message.find({ channel_id, id: { $gt: after } });
-	else if (before) query = Message.find({ channel_id, id: { $lt: before } });
-	else if (around)
-		query = Message.find({
-			channel_id,
-			id: { $gt: (BigInt(around) - BigInt(halfLimit)).toString(), $lt: (BigInt(around) + BigInt(halfLimit)).toString() }
-		});
-	else {
-		query = Message.find({ channel_id });
-	}
+	var query: FindManyOptions<Message> & { where: { id?: any } } = { order: { id: "DESC" }, take: limit, where: { channel_id } };
 
-	query = query.sort({ id: -1 });
+	if (after) query.where.id = MoreThan(after);
+	else if (before) query.where.id = LessThan(before);
+	else if (around) {
+		query.where.id = [
+			MoreThan((BigInt(around) - BigInt(halfLimit)).toString()),
+			LessThan((BigInt(around) + BigInt(halfLimit)).toString())
+		];
+	}
 
-	const messages = await query.limit(limit);
+	const messages = await Message.find(query);
 
 	return res.json(messages).map((x) => {
-		(x.reactions || []).forEach((x) => {
+		(x.reactions || []).forEach((x: any) => {
 			// @ts-ignore
 			if ((x.user_ids || []).includes(req.user_id)) x.me = true;
 			// @ts-ignore
@@ -135,7 +133,7 @@ router.post("/", messageUpload.single("file"), async (req: Request, res: Respons
 		embeds,
 		channel_id,
 		attachments,
-		edited_timestamp: null
+		edited_timestamp: undefined
 	});
 
 	return res.send(data);