chore(auto): task completed - unknown
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
import {
|
||||
getMessageById,
|
||||
insertAttachment,
|
||||
insertMessageEdit,
|
||||
updateMessageAsDeleted,
|
||||
updateMessageAsEdited,
|
||||
upsertMessageForCapture,
|
||||
@@ -293,6 +294,15 @@ export function registerMessageCapture(client: Client): void {
|
||||
}
|
||||
|
||||
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(
|
||||
newMessage.id,
|
||||
getDisplayContent(newMessage as Message),
|
||||
|
||||
@@ -51,6 +51,12 @@ export class MessageStore {
|
||||
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 ───────────────────────────────────────────────────────────
|
||||
|
||||
insertMessage(message: MessageRecord): Promise<void> {
|
||||
@@ -303,6 +309,12 @@ export class MessageStore {
|
||||
// These delegate to a lazy singleton MessageStore instance so existing
|
||||
// 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
|
||||
export const insertMessage = (message: MessageRecord): Promise<void> =>
|
||||
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 type { NodePgDatabase } from "drizzle-orm/node-postgres";
|
||||
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";
|
||||
|
||||
// ─── 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 ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
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 ──────────────────────────────────────────────────────────────
|
||||
|
||||
searchMessages(input: {
|
||||
|
||||
Reference in New Issue
Block a user