UNPKG

@ocap/indexdb-elasticsearch

Version:
71 lines (57 loc) 1.64 kB
/* eslint-disable no-undef */ /* eslint-disable no-underscore-dangle */ const ESIndex = require('./base'); const getParams = require('../model/stake'); const { getTableName } = require('../util'); class Stake extends ESIndex { constructor(db) { super({ name: getTableName(db.config.prefix, 'stake'), docId: 'address', client: db.client, http: db.http, indexParams: getParams(), }); this.tokenLength = db.config.tokenLength; } static formatBeforeUpdate(data, tokenLength) { ['tokens', 'revokedTokens'].forEach((field) => { if (Array.isArray(data[field])) { data[field] = data[field].map((x) => { x.balance = super.padBalance(x.balance, tokenLength); return x; }); } }); return data; } static formatAfterRead(data) { if (!data) { return data; } ['tokens', 'revokedTokens'].forEach((field) => { if (Array.isArray(data[field])) { data[field] = data[field].map((x) => { x.balance = super.trimBalance(x.balance); return x; }); } }); return data; } batchInsert(rows) { const formatted = rows.map((x) => Stake.formatBeforeUpdate(x, this.tokenLength)); return super.batchInsert(formatted); } _insert(row) { return super._insert(Stake.formatBeforeUpdate(row, this.tokenLength)); } _update(key, updates) { return super._update(key, Stake.formatBeforeUpdate(updates, this.tokenLength)); } async _get(key) { const item = await super._get(key); return Stake.formatAfterRead(item); } } module.exports = Stake;