52 lines
1.5 KiB
JavaScript
Raw Normal View History

/**
* 双写模式工具
* Phase 2/3 启用
*
* 功能新数据同时写入 Notion + persona-brain-db
* 确保数据一致性支持从Notion主persona-brain-db主的渐进切换
*/
/**
* 双写同时写入Notion和persona-brain-db
* @param {string} table - 目标表名
* @param {object} data - 写入数据
* @param {object} options - 配置选项
*/
async function dualWrite(table, data, options = {}) {
const { notionClient, brainDbClient, primarySource = 'notion' } = options;
console.log(`📝 双写模式 [${primarySource}为主] → ${table}`);
const results = { notion: null, brainDb: null, errors: [] };
// 写入主数据源
try {
if (primarySource === 'notion') {
results.notion = await writeToNotion(notionClient, table, data);
results.brainDb = await writeToBrainDb(brainDbClient, table, data);
} else {
results.brainDb = await writeToBrainDb(brainDbClient, table, data);
results.notion = await writeToNotion(notionClient, table, data);
}
} catch (err) {
results.errors.push(err.message);
console.error(`❌ 双写失败: ${err.message}`);
}
return results;
}
async function writeToNotion(client, table, data) {
// Phase 2/3 实现
console.log(` → Notion写入 [${table}]: 占位`);
return { status: 'placeholder' };
}
async function writeToBrainDb(client, table, data) {
// Phase 2/3 实现
console.log(` → BrainDB写入 [${table}]: 占位`);
return { status: 'placeholder' };
}
module.exports = { dualWrite };