openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
41 lines (40 loc) • 1.63 kB
JavaScript
import { t as extractSqliteTableSchema } from "./sqlite-schema-sql-CKIqAlrf.mjs";
import { a as runSqliteImmediateTransactionSync } from "./sqlite-transaction-DsZ3X6nD.mjs";
import { t as OPENCLAW_AGENT_SCHEMA_SQL } from "./openclaw-agent-schema-BcJs-SM4.mjs";
//#region src/infra/sqlite-schema-ensure.ts
/** Cache additive DDL only after its owning transaction commits. */
function createSqliteSchemaEnsurer(schemaSql) {
const committed = /* @__PURE__ */ new WeakSet();
return {
recordCommitted(database) {
committed.add(database);
},
ensure(database) {
if (committed.has(database)) return false;
const install = () => {
database.exec(schemaSql());
};
if (database.isTransaction) {
install();
return true;
}
runSqliteImmediateTransactionSync(database, install);
committed.add(database);
return false;
}
};
}
//#endregion
//#region src/state/openclaw-agent-session-transcript-archive-schema.ts
const SESSION_TRANSCRIPT_ARCHIVES_TABLE = "session_transcript_archives";
const schema = createSqliteSchemaEnsurer(() => extractSqliteTableSchema(OPENCLAW_AGENT_SCHEMA_SQL, SESSION_TRANSCRIPT_ARCHIVES_TABLE, {
endMarker: "CREATE TABLE IF NOT EXISTS transcript_rewrite_watermarks (",
includeEndMarker: false,
errorMessage: "OpenClaw session transcript archive schema markers are missing."
}));
/** Lazily installs the additive canonical archive owner on first archive use. */
function ensureSessionTranscriptArchiveSchema(db) {
schema.ensure(db);
}
//#endregion
export { ensureSessionTranscriptArchiveSchema as n, createSqliteSchemaEnsurer as r, SESSION_TRANSCRIPT_ARCHIVES_TABLE as t };