feat: add type column to dm_messages for system message support

Adds a `type` column (TEXT NOT NULL DEFAULT 'user') to the dm_messages
table via schema, migration, and type definition. Updates
buildDmMessageWithUser and the inline replyTo builder in the GET
messages handler to include the field in all DM message responses.
This commit is contained in:
Jannis Braun
2026-03-27 05:30:42 +01:00
parent c5c7ab571a
commit 56e8fc8795
4 changed files with 10 additions and 0 deletions
+6
View File
@@ -196,6 +196,12 @@ export function runMigrations(db: Database.Database): void {
{ name: 'encryption_version', type: 'INTEGER DEFAULT 0' }, { name: 'encryption_version', type: 'INTEGER DEFAULT 0' },
] ]
}, },
{
name: 'dm_messages',
columns: [
{ name: 'type', type: "TEXT NOT NULL DEFAULT 'user'" },
]
},
{ {
name: 'attachments', name: 'attachments',
columns: [ columns: [
+1
View File
@@ -140,6 +140,7 @@ export const dmMessages = sqliteTable('dm_messages', {
userId: text('user_id').notNull().references(() => users.id), userId: text('user_id').notNull().references(() => users.id),
replyToId: text('reply_to_id'), replyToId: text('reply_to_id'),
content: text('content'), content: text('content'),
type: text('type').notNull().default('user'),
editedAt: integer('edited_at'), editedAt: integer('edited_at'),
sourceInstance: text('source_instance'), sourceInstance: text('source_instance'),
sourceMessageId: text('source_message_id'), sourceMessageId: text('source_message_id'),
+2
View File
@@ -90,6 +90,7 @@ export function buildDmMessageWithUser(
userId: message.userId, userId: message.userId,
replyToId: message.replyToId, replyToId: message.replyToId,
content: message.content, content: message.content,
type: (message.type ?? 'user') as 'user' | 'system',
editedAt: message.editedAt, editedAt: message.editedAt,
createdAt: message.createdAt, createdAt: message.createdAt,
sourceMessageId: message.sourceMessageId ?? null, sourceMessageId: message.sourceMessageId ?? null,
@@ -1270,6 +1271,7 @@ export async function dmRoutes(app: FastifyInstance): Promise<void> {
userId: rm.userId, userId: rm.userId,
replyToId: rm.replyToId, replyToId: rm.replyToId,
content: rm.content, content: rm.content,
type: (rm.type ?? 'user') as 'user' | 'system',
editedAt: rm.editedAt, editedAt: rm.editedAt,
createdAt: rm.createdAt, createdAt: rm.createdAt,
user: sanitizeUser(rUser), user: sanitizeUser(rUser),
+1
View File
@@ -281,6 +281,7 @@ export interface DmMessage {
dmChannelId: string; dmChannelId: string;
userId: string; userId: string;
content: string | null; content: string | null;
type?: 'user' | 'system';
createdAt: number; createdAt: number;
// Compatibility fields // Compatibility fields
channelId?: string; channelId?: string;