fix: edit messages with votes (#737)

This commit is contained in:
Jeremy 2025-01-28 19:45:03 +05:30 committed by GitHub
parent 2d47ffbd77
commit 5bb62f1b14
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,7 +1,7 @@
import 'server-only';
import { genSaltSync, hashSync } from 'bcrypt-ts';
import { and, asc, desc, eq, gt, gte } from 'drizzle-orm';
import { and, asc, desc, eq, gt, gte, inArray } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
@ -301,11 +301,28 @@ export async function deleteMessagesByChatIdAfterTimestamp({
timestamp: Date;
}) {
try {
return await db
.delete(message)
const messagesToDelete = await db
.select({ id: message.id })
.from(message)
.where(
and(eq(message.chatId, chatId), gte(message.createdAt, timestamp)),
);
const messageIds = messagesToDelete.map((message) => message.id);
if (messageIds.length > 0) {
await db
.delete(vote)
.where(
and(eq(vote.chatId, chatId), inArray(vote.messageId, messageIds)),
);
return await db
.delete(message)
.where(
and(eq(message.chatId, chatId), inArray(message.id, messageIds)),
);
}
} catch (error) {
console.error(
'Failed to delete messages by id after timestamp from database',