chore(auto): task completed - unknown

This commit is contained in:
MythEclipse
2026-06-13 13:12:29 +07:00
parent ff006980f8
commit e413cf9fca
4 changed files with 51 additions and 1 deletions
@@ -13,6 +13,7 @@ import {
import { import {
getMessageById, getMessageById,
insertAttachment, insertAttachment,
insertMessageEdit,
updateMessageAsDeleted, updateMessageAsDeleted,
updateMessageAsEdited, updateMessageAsEdited,
upsertMessageForCapture, upsertMessageForCapture,
@@ -293,6 +294,15 @@ export function registerMessageCapture(client: Client): void {
} }
const editedAt = Date.now(); const editedAt = Date.now();
const oldContent = existing.edited_content ?? existing.content ?? "";
// Save edit history snapshot before overwriting
if (oldContent) {
insertMessageEdit(newMessage.id, oldContent, editedAt).catch((err: unknown) => {
logger.error({ messageId: newMessage.id, error: err }, "Failed to save edit history");
});
}
await updateMessageAsEdited( await updateMessageAsEdited(
newMessage.id, newMessage.id,
getDisplayContent(newMessage as Message), getDisplayContent(newMessage as Message),
@@ -51,6 +51,12 @@ export class MessageStore {
this.retention = new RetentionDb(db, logger); this.retention = new RetentionDb(db, logger);
} }
// ── Edit History ────────────────────────────────────────────────────────
insertMessageEdit(messageId: string, oldContent: string, editedAt: number): Promise<void> {
return this.messages.insertMessageEdit(messageId, oldContent, editedAt);
}
// ── Messages ─────────────────────────────────────────────────────────── // ── Messages ───────────────────────────────────────────────────────────
insertMessage(message: MessageRecord): Promise<void> { insertMessage(message: MessageRecord): Promise<void> {
@@ -303,6 +309,12 @@ export class MessageStore {
// These delegate to a lazy singleton MessageStore instance so existing // These delegate to a lazy singleton MessageStore instance so existing
// code that imports individual functions continues to work unchanged. // code that imports individual functions continues to work unchanged.
export const insertMessageEdit = (
messageId: string,
oldContent: string,
editedAt: number,
): Promise<void> => getInstance().insertMessageEdit(messageId, oldContent, editedAt);
// Messages // Messages
export const insertMessage = (message: MessageRecord): Promise<void> => export const insertMessage = (message: MessageRecord): Promise<void> =>
getInstance().insertMessage(message); getInstance().insertMessage(message);
@@ -2,7 +2,7 @@ import { createChildLogger, type Logger } from "@bete/shared/logger";
import { and, desc, eq, or, type SQL } from "drizzle-orm"; import { and, desc, eq, or, type SQL } from "drizzle-orm";
import type { NodePgDatabase } from "drizzle-orm/node-postgres"; import type { NodePgDatabase } from "drizzle-orm/node-postgres";
import type * as schema from "../../shared/database/schema.js"; import type * as schema from "../../shared/database/schema.js";
import { messagesTable } from "../../shared/database/schema.js"; import { messagesTable, messageEditsTable } from "../../shared/database/schema.js";
import type { MessageRecord } from "../message-capture/types.js"; import type { MessageRecord } from "../message-capture/types.js";
// ─── Shared Helpers ────────────────────────────────────────────────────────── // ─── Shared Helpers ──────────────────────────────────────────────────────────
@@ -141,6 +141,28 @@ export class MessagesCrud {
} }
} }
// ── EDIT HISTORY ──────────────────────────────────────────────────────────────
async insertMessageEdit(
messageId: string,
oldContent: string,
editedAt: number,
): Promise<void> {
this.logger.debug({ messageId }, "insertMessageEdit entry");
try {
await this.db
.insert(messageEditsTable)
.values({ message_id: messageId, old_content: oldContent, edited_at: editedAt })
.onConflictDoNothing();
} catch (error) {
this.logger.error(
{ messageId, error: error instanceof Error ? error.message : String(error) },
"Failed to insert message edit",
);
throw error;
}
}
// ── GET ───────────────────────────────────────────────────────────────────── // ── GET ─────────────────────────────────────────────────────────────────────
async getMessagesByChannel( async getMessagesByChannel(
@@ -126,6 +126,12 @@ export class MessagesDb {
); );
} }
// ── Edit History ─────────────────────────────────────────────────────────
insertMessageEdit(messageId: string, oldContent: string, editedAt: number): Promise<void> {
return this.crud.insertMessageEdit(messageId, oldContent, editedAt);
}
// ── Search ────────────────────────────────────────────────────────────── // ── Search ──────────────────────────────────────────────────────────────
searchMessages(input: { searchMessages(input: {