diff --git a/packages/server/src/db/migrate.ts b/packages/server/src/db/migrate.ts index 08eccb13..edf1bfa4 100644 --- a/packages/server/src/db/migrate.ts +++ b/packages/server/src/db/migrate.ts @@ -196,6 +196,12 @@ export function runMigrations(db: Database.Database): void { { name: 'encryption_version', type: 'INTEGER DEFAULT 0' }, ] }, + { + name: 'dm_messages', + columns: [ + { name: 'type', type: "TEXT NOT NULL DEFAULT 'user'" }, + ] + }, { name: 'attachments', columns: [ diff --git a/packages/server/src/db/schema.ts b/packages/server/src/db/schema.ts index feea8f09..0a28211e 100644 --- a/packages/server/src/db/schema.ts +++ b/packages/server/src/db/schema.ts @@ -140,6 +140,7 @@ export const dmMessages = sqliteTable('dm_messages', { userId: text('user_id').notNull().references(() => users.id), replyToId: text('reply_to_id'), content: text('content'), + type: text('type').notNull().default('user'), editedAt: integer('edited_at'), sourceInstance: text('source_instance'), sourceMessageId: text('source_message_id'), diff --git a/packages/server/src/routes/dm.ts b/packages/server/src/routes/dm.ts index cefa7d5d..54155aaf 100644 --- a/packages/server/src/routes/dm.ts +++ b/packages/server/src/routes/dm.ts @@ -90,6 +90,7 @@ export function buildDmMessageWithUser( userId: message.userId, replyToId: message.replyToId, content: message.content, + type: (message.type ?? 'user') as 'user' | 'system', editedAt: message.editedAt, createdAt: message.createdAt, sourceMessageId: message.sourceMessageId ?? null, @@ -1270,6 +1271,7 @@ export async function dmRoutes(app: FastifyInstance): Promise { userId: rm.userId, replyToId: rm.replyToId, content: rm.content, + type: (rm.type ?? 'user') as 'user' | 'system', editedAt: rm.editedAt, createdAt: rm.createdAt, user: sanitizeUser(rUser), diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index a77f707b..6118fb0a 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -281,6 +281,7 @@ export interface DmMessage { dmChannelId: string; userId: string; content: string | null; + type?: 'user' | 'system'; createdAt: number; // Compatibility fields channelId?: string;