From b9e4c65927588bdf69fc0cf1d60f97bb45c92ea5 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Fri, 27 Mar 2026 04:32:58 +0100 Subject: [PATCH] feat(federation): add schema columns for upload size mismatch tracking Adds federation_status and federation_meta to attachments table, and remote_max_upload_size to federation_peers, with idempotent migrations. --- packages/server/src/db/migrate.ts | 13 +++++++++++++ packages/server/src/db/schema.ts | 3 +++ 2 files changed, 16 insertions(+) diff --git a/packages/server/src/db/migrate.ts b/packages/server/src/db/migrate.ts index b54f7b5c..08eccb13 100644 --- a/packages/server/src/db/migrate.ts +++ b/packages/server/src/db/migrate.ts @@ -616,6 +616,19 @@ export function runMigrations(db: Database.Database): void { migrateGeneralizeOutbox(db); + // ─── Federation upload size mismatch columns ───────────────────────────── + try { + db.exec(`ALTER TABLE attachments ADD COLUMN federation_status TEXT`); + } catch { /* column already exists */ } + + try { + db.exec(`ALTER TABLE attachments ADD COLUMN federation_meta TEXT`); + } catch { /* column already exists */ } + + try { + db.exec(`ALTER TABLE federation_peers ADD COLUMN remote_max_upload_size INTEGER`); + } catch { /* column already exists */ } + console.log('Migrations complete.'); } diff --git a/packages/server/src/db/schema.ts b/packages/server/src/db/schema.ts index a20581b2..feea8f09 100644 --- a/packages/server/src/db/schema.ts +++ b/packages/server/src/db/schema.ts @@ -94,6 +94,8 @@ export const attachments = sqliteTable('attachments', { height: integer('height'), duration: real('duration'), sourceUrl: text('source_url'), + federationStatus: text('federation_status'), + federationMeta: text('federation_meta'), createdAt: integer('created_at').notNull(), }); @@ -315,6 +317,7 @@ export const federationPeers = sqliteTable('federation_peers', { lastFailureAt: integer('last_failure_at'), consecutiveFailures: integer('consecutive_failures').default(0), lastSyncedAt: integer('last_synced_at').default(0), + remoteMaxUploadSize: integer('remote_max_upload_size'), createdAt: integer('created_at').notNull(), });