Fix sort order when using ?around

This commit is contained in:
TomatoCake 2024-07-28 05:48:21 +02:00 committed by Madeline
parent d3ece937e6
commit 481cf38373

View File

@ -130,19 +130,25 @@ router.get(
query.take = Math.floor(limit / 2); query.take = Math.floor(limit / 2);
if (query.take != 0) { if (query.take != 0) {
const [right, left] = await Promise.all([ const [right, left] = await Promise.all([
Message.find({ ...query, where: { id: LessThan(around) } }),
Message.find({ Message.find({
...query, ...query,
where: { id: MoreThanOrEqual(around) }, where: { channel_id, id: LessThan(around) },
}),
Message.find({
...query,
where: { channel_id, id: MoreThanOrEqual(around) },
order: { timestamp: "ASC" },
}), }),
]); ]);
left.push(...right); left.push(...right);
messages = left; messages = left.sort(
(a, b) => a.timestamp.getTime() - b.timestamp.getTime(),
);
} else { } else {
query.take = 1; query.take = 1;
const message = await Message.findOne({ const message = await Message.findOne({
...query, ...query,
where: { id: around }, where: { channel_id, id: around },
}); });
messages = message ? [message] : []; messages = message ? [message] : [];
} }