@ocap/indexdb-elasticsearch
Version:
OCAP indexdb adapter that uses elasticsearch as backend
52 lines (42 loc) • 1.47 kB
JavaScript
const ESIndex = require('./base');
const getParams = require('../model/rollup-block');
const { getTableName } = require('../util');
class RollupBlock extends ESIndex {
constructor(db) {
super({
name: getTableName(db.config.prefix, 'rollup_block'),
docId: 'hash',
client: db.client,
http: db.http,
indexParams: getParams(),
});
}
static formatBeforeUpdate(data, tokenLength) {
data.rewardAmount = super.padBalance(data.rewardAmount, tokenLength);
data.mintedAmount = super.padBalance(data.mintedAmount, tokenLength);
data.burnedAmount = super.padBalance(data.burnedAmount, tokenLength);
data.minReward = super.padBalance(data.minReward, tokenLength);
return data;
}
static formatAfterRead(data) {
if (data) {
data.rewardAmount = super.trimBalance(data.rewardAmount);
data.minReward = super.trimBalance(data.minReward);
data.mintedAmount = super.trimBalance(data.mintedAmount);
data.burnedAmount = super.trimBalance(data.burnedAmount);
}
return data;
}
batchInsert(rows) {
const formatted = rows.map((x) => RollupBlock.formatBeforeUpdate(x, this.tokenLength));
return super.batchInsert(formatted);
}
_insert(row) {
return super._insert(RollupBlock.formatBeforeUpdate(row, this.tokenLength));
}
async _get(key) {
const item = await super._get(key);
return RollupBlock.formatAfterRead(item);
}
}
module.exports = RollupBlock;