import { onChangelog } from '../db/notify.js';
import { cacheDelPattern } from './cache.js';
import { invalidateRegistry } from '../rpc/dispatcher.js';

/**
 * Подписывается на changelog и сносит соответствующий кэш в Redis.
 * Стратегия: для каждой изменившейся таблицы — invalidate все query, в чьих
 * `trackedtable` она перечислена. На этом этапе делаем грубо: cacheDelPattern('q:*')
 * при любом write; точечную инвалидацию по trackedtable добавим, когда появятся реальные
 * процедуры с tablesUsed.
 */
export function startInvalidator(): void {
  onChangelog(n => {
    void cacheDelPattern('q:*').catch(err => console.error('[invalidator] cache flush failed', err));
    if (n.t === 'core.saved') {
      invalidateRegistry();
    }
  });
}
