mode_model_config.cjs 1.08 KB
/**
 * mode_model_config —— 场景 → 模型链(小配置表),定义抄录自 schema.md(唯一事实源)。
 *
 * 无 version 列:配置变更的缓存失效走 @drama/config-source 的版本机制(version = max(updated_at))。
 * `chain` JSON 承载 `[{provider,model}, ...fallback]`,扩展加键不加列。`{ tableName, buildTable }`
 * 形态与 llm_model.cjs 同构,经 @drama/db applyCurrentSchema 建表。
 */

const tableName = 'mode_model_config'

/**
 * @param {import('knex').Knex.CreateTableBuilder} t
 * @param {import('knex').Knex} db
 */
function buildTable(t, db) {
  t.bigIncrements('id').unsigned().primary()
  t.string('mode', 64).notNullable()
  t.json('chain').notNullable()
  t.boolean('enabled').notNullable().defaultTo(1)
  t.datetime('created_at', { precision: 3 }).notNullable().defaultTo(db.raw('CURRENT_TIMESTAMP(3)'))
  t.datetime('updated_at', { precision: 3 })
    .notNullable()
    .defaultTo(db.raw('CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)'))
  t.unique(['mode'], { indexName: 'uk_mode' })
}

module.exports = { tableName, buildTable }