// forwarded_from jsonb shape change: was a bare PublicUser snapshot, now a // ForwardOrigin {name, user} so channel forwards can carry a name without a // profile link. Rewrites existing rows in place (guarded, idempotent). /** @param {import('node-pg-migrate').MigrationBuilder} pgm */ exports.up = (pgm) => { pgm.sql(` UPDATE messages SET forwarded_from = jsonb_build_object( 'name', forwarded_from->>'displayName', 'user', forwarded_from ) WHERE forwarded_from IS NOT NULL AND forwarded_from ? 'displayName' AND NOT (forwarded_from ? 'user'); `); }; /** @param {import('node-pg-migrate').MigrationBuilder} pgm */ exports.down = (pgm) => { pgm.sql(` UPDATE messages SET forwarded_from = forwarded_from->'user' WHERE forwarded_from IS NOT NULL AND forwarded_from ? 'user' AND forwarded_from->'user' IS NOT NULL; `); };