diff --git a/packages/server/src/db/migrate.ts b/packages/server/src/db/migrate.ts index 4dafb1e6..e1c737cc 100644 --- a/packages/server/src/db/migrate.ts +++ b/packages/server/src/db/migrate.ts @@ -157,6 +157,14 @@ export function runMigrations(db: Database.Database): void { { name: 'show_activity', type: 'INTEGER NOT NULL DEFAULT 1' }, ] }, + { + name: 'attachments', + columns: [ + { name: 'width', type: 'INTEGER' }, + { name: 'height', type: 'INTEGER' }, + { name: 'duration', type: 'REAL' }, + ] + }, // gif_api_key is handled by migrateRenameGifApiKey() — do NOT add it here // or it will race with the tenor_api_key → gif_api_key rename migration ]; diff --git a/packages/server/src/db/schema.ts b/packages/server/src/db/schema.ts index 946c0344..8721d19c 100644 --- a/packages/server/src/db/schema.ts +++ b/packages/server/src/db/schema.ts @@ -1,4 +1,4 @@ -import { sqliteTable, text, integer, primaryKey, foreignKey } from 'drizzle-orm/sqlite-core'; +import { sqliteTable, text, integer, primaryKey, foreignKey, real } from 'drizzle-orm/sqlite-core'; export const users = sqliteTable('users', { id: text('id').primaryKey(), @@ -90,6 +90,9 @@ export const attachments = sqliteTable('attachments', { mimetype: text('mimetype').notNull(), size: integer('size').notNull(), thumbnailFilename: text('thumbnail_filename'), + width: integer('width'), + height: integer('height'), + duration: real('duration'), createdAt: integer('created_at').notNull(), }); diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index 229969d3..e0eca8f8 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -217,6 +217,9 @@ export interface Attachment { mimetype: string; size: number; thumbnailFilename?: string | null; + width?: number | null; + height?: number | null; + duration?: number | null; createdAt: number; }