@ocap/indexdb-elasticsearch
Version:
OCAP indexdb adapter that uses elasticsearch as backend
57 lines (45 loc) • 1.65 kB
JavaScript
/* 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;