UNPKG

@ocap/indexdb-elasticsearch

Version:
59 lines (47 loc) 1.76 kB
const ESIndex = require('./base'); const getParams = require('../model/rollup-validator'); const { getTableName } = require('../util'); const DEFAULT_TIME = '2000-01-01T00:00:00.000Z'; class RollupValidator extends ESIndex { constructor(db) { super({ name: getTableName(db.config.prefix, 'rollup_validator'), docId: 'address', client: db.client, http: db.http, indexParams: getParams(), }); } static formatBeforeUpdate(data, tokenLength) { data.totalStake = super.padBalance(data.totalStake, tokenLength); data.availableStake = super.padBalance(data.availableStake, tokenLength); data.totalGain = super.padBalance(data.totalGain, tokenLength); data.joinTime = data.joinTime || DEFAULT_TIME; data.leaveTime = data.leaveTime || DEFAULT_TIME; return data; } static formatAfterRead(data) { if (data) { data.totalStake = super.trimBalance(data.totalStake); data.availableStake = super.trimBalance(data.availableStake); data.totalGain = super.trimBalance(data.totalGain); data.joinTime = data.joinTime === DEFAULT_TIME ? '' : data.joinTime; data.leaveTime = data.leaveTime === DEFAULT_TIME ? '' : data.leaveTime; } return data; } batchInsert(rows) { const formatted = rows.map((x) => RollupValidator.formatBeforeUpdate(x, this.tokenLength)); return super.batchInsert(formatted); } _insert(row) { return super._insert(RollupValidator.formatBeforeUpdate(row, this.tokenLength)); } _get(key) { return super._get(key).then((doc) => RollupValidator.formatAfterRead(doc)); } _update(key, updates) { return super._update(key, RollupValidator.formatBeforeUpdate(updates)); } } module.exports = RollupValidator;