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:
@@ -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: [
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user