@ocap/statedb-memory
Version:
OCAP statedb adapter that uses memory as backend statedb, just for test purpose
119 lines (117 loc) • 3.24 kB
JavaScript
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;