2baf29b3ae
Deliver encrypted health zone, observation API, baseline maturity pipeline, page-data bindings, and H5/WeChat channel integration for health P0. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
950 B
JavaScript
33 lines
950 B
JavaScript
import { HEALTH_PAGE_DATA_DATASETS, healthPageDataDdlForBackend } from './health-page-data-schema.mjs';
|
|
|
|
const bootstrappedUsers = new Set();
|
|
|
|
function resolveUserDataBackend(userDataSpace) {
|
|
if (userDataSpace?.backend) return userDataSpace.backend;
|
|
if (userDataSpace?.privateDataDb) return 'sqlite';
|
|
return 'postgres';
|
|
}
|
|
|
|
export function resetHealthPageDataBootstrapCache() {
|
|
bootstrappedUsers.clear();
|
|
}
|
|
|
|
export async function ensureHealthPageDataForUser(userDataSpace, userId) {
|
|
if (!userDataSpace || !userId) return false;
|
|
const key = String(userId);
|
|
if (bootstrappedUsers.has(key)) return true;
|
|
|
|
const backend = resolveUserDataBackend(userDataSpace);
|
|
const ddl = healthPageDataDdlForBackend(backend);
|
|
|
|
for (const sql of ddl) {
|
|
await userDataSpace.executeSql(sql);
|
|
}
|
|
for (const dataset of HEALTH_PAGE_DATA_DATASETS) {
|
|
await userDataSpace.upsertDataset(dataset);
|
|
}
|
|
|
|
bootstrappedUsers.add(key);
|
|
return true;
|
|
}
|