/** * Track per-game catalog sync runs (staleness, upsert counts, errors). */ export const shorthands = undefined; export const up = (pgm) => { pgm.createTable('catalog_sync_log', { id: 'id', game: { type: 'varchar(20)', notNull: true }, mode: { type: 'varchar(20)', notNull: true }, upserted: { type: 'integer', notNull: true, default: 0 }, errors: { type: 'integer', notNull: true, default: 0 }, source_updated_at: { type: 'timestamptz' }, ran_at: { type: 'timestamptz', notNull: true, default: pgm.func('CURRENT_TIMESTAMP') }, details: { type: 'jsonb' }, }); pgm.createIndex('catalog_sync_log', 'game'); pgm.createIndex('catalog_sync_log', 'ran_at'); }; export const down = (pgm) => { pgm.dropTable('catalog_sync_log'); };