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)
}
}