UNPKG

@ocap/statedb-memory

Version:

OCAP statedb adapter that uses memory as backend statedb, just for test purpose

119 lines (117 loc) 3.24 kB
Object.defineProperty(exports, '__esModule', { value: true }); const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs'); const require_package = require('./package.cjs'); const require_table_base = require('./table/base.cjs'); const require_table_account = require('./table/account.cjs'); const require_table_balance = require('./table/balance.cjs'); const require_table_rollup = require('./table/rollup.cjs'); const require_table_token = require('./table/token.cjs'); let _ocap_statedb = require("@ocap/statedb"); let lokijs = require("lokijs"); lokijs = require_rolldown_runtime.__toESM(lokijs); //#region src/db.ts const { name, version } = require_package.default; let instanceCounter = 0; /** * 内存 StateDB 实现 * 使用 LokiJS 作为内存存储引擎 */ var MemoryStateDB = class extends _ocap_statedb.StateDB { constructor() { super(); this.name = name; this.version = version; instanceCounter += 1; this.db = new lokijs.default(`ocap-memory-statedb-${instanceCounter}.db`); this.balance = new require_table_balance.default({ name: "balance", uniqIndex: ["address", "tokenAddress"], db: this.db }); this.account = new require_table_account.default({ name: "account", uniqIndex: "address", balanceTable: this.balance, syncBalance: true, db: this.db }); this.factory = new require_table_base.default({ name: "factory", uniqIndex: "address", syncBalance: true, balanceTable: this.balance, db: this.db }); this.stake = new require_table_base.default({ name: "stake", uniqIndex: "address", syncBalance: true, balanceTable: this.balance, db: this.db }); this.asset = new require_table_base.default({ name: "asset", uniqIndex: "address", db: this.db }); this.delegation = new require_table_base.default({ name: "delegation", uniqIndex: "address", db: this.db }); this.tx = new require_table_base.default({ name: "tx", uniqIndex: "hash", db: this.db }); this.token = new require_table_token.default({ name: "token", uniqIndex: "address", db: this.db }); this.chain = new require_table_base.default({ name: "chain", uniqIndex: "address", db: this.db }); this.rollup = new require_table_rollup.default({ name: "rollup", uniqIndex: "address", db: this.db }); this.rollupBlock = new require_table_base.default({ name: "rollupBlock", uniqIndex: "hash", db: this.db }); this.evidence = new require_table_base.default({ name: "evidence", uniqIndex: "hash", db: this.db }); this.tokenFactory = new require_table_base.default({ name: "tokenFactory", uniqIndex: "address", db: this.db }); this.attachReadyListeners(); } /** * Execute function - Memory adapter has no real transaction support * This is a no-op wrapper that simply executes the callback * * @param fn - Function to execute (txn parameter will be null) * @returns Result of the function */ async runAsLambda(fn, options) { const result = await fn(null); if (options?.onCommit) try { await options.onCommit(); } catch (_err) {} return result; } async close() {} }; var db_default = MemoryStateDB; //#endregion exports.default = db_default;