UNPKG

@ocap/indexdb-elasticsearch

Version:
57 lines (45 loc) 1.65 kB
/* eslint-disable no-undef */ /* eslint-disable no-underscore-dangle */ const { DEFAULT_TOKEN_DECIMAL } = require('@ocap/util/lib/constant'); const ESIndex = require('./base'); const getParams = require('../model/token'); const { getTableName } = require('../util'); class Token extends ESIndex { constructor(db) { super({ name: getTableName(db.config.prefix, 'token'), docId: 'address', client: db.client, http: db.http, indexParams: getParams(), }); this.tokenLength = db.config.tokenLength; } static formatBeforeUpdate(data, tokenLength) { data.totalSupply = super.padBalance(data.totalSupply, tokenLength); data.initialSupply = super.padBalance(data.initialSupply, tokenLength); data.maxTotalSupply = data.maxTotalSupply ? super.padBalance(data.maxTotalSupply, tokenLength) : ''; return data; } static formatAfterRead(data) { if (data) { data.totalSupply = super.trimBalance(data.totalSupply); data.initialSupply = super.trimBalance(data.initialSupply); data.maxTotalSupply = data.maxTotalSupply ? super.trimBalance(data.maxTotalSupply) : ''; data.decimal = typeof data.decimal === 'undefined' ? DEFAULT_TOKEN_DECIMAL : data.decimal; } return data; } batchInsert(rows) { const formatted = rows.map((x) => Token.formatBeforeUpdate(x, this.tokenLength)); return super.batchInsert(formatted); } _insert(row) { return super._insert(Token.formatBeforeUpdate(row, this.tokenLength)); } async _get(key) { const item = await super._get(key); return Token.formatAfterRead(item); } } module.exports = Token;