table-version.js 1.04 KB
/**
 * table-version.js —— `createTableVersion({ db, table })`:配置表的版本令牌(单一来源)。
 *
 * 版本令牌是 `createVersionedSource` 的失效信号:令牌变 → 重新 load。令牌直接来自按主键排序的
 * 完整配置行,不依赖 `updated_at` 精度:同一毫秒连续 UPDATE、删除任意行、原值回写都按数据库
 * 当前事实计算。配置表是小表,版本探测受外层 TTL 节流。
 *
 * 消费方仍自带 `load`(本包不认识行结构);本函数只产出令牌,db 注入,包内不建连接。
 */

/**
 * @param {object} deps
 * @param {import('knex').Knex} deps.db     注入的 knex(composition root 建连)。
 * @param {string} deps.table               配置表名(须有稳定的 `id` 主键)。
 * @returns {() => Promise<string>}         `createVersionedSource` 的 `version` 实参。
 */
export function createTableVersion({ db, table }) {
  return async () => {
    const rows = await db(table).select('*').orderBy('id', 'asc')
    return JSON.stringify(rows)
  }
}