const utils = require('./utils'); const log = require('./log'); const metaClasses = []; const MT_WEB3SERVEWR = 0; const MT_CONTRACT = 1; const MT_MYSQL = 2; function registerMetaClass(fileName, idx, primKey) { metaClasses.push({ 'fileName' : fileName, 'idx' : idx, 'primKey' : primKey, 'rawList' : [], 'rawHash' : {}, }); } function load() { metaClasses.forEach(function (metaClass) { const json = utils.readJsonFromFile(metaClass['fileName']); if (!json) { throw new Error('读取配置' + metaClass['fileName'] + '失败'); } if (Array.isArray(json)) { metaClass['rawList'] = json; } else { metaClass['rawList'].push(json); } let idx = 0; metaClass['rawList'].forEach(function (item) { if (metaClass['primKey'] == '') { metaClass['rawHash'][idx] = item; } else { metaClass['rawHash'][item[metaClass['primKey']]] = item; } ++idx; }); //log.debug(JSON.stringify(metaClass)); }); } function init() { registerMetaClass('web3server.json', MT_WEB3SERVEWR, '' ); registerMetaClass('contract.json', MT_CONTRACT, 'name', ); registerMetaClass('mysql.json', MT_MYSQL, '', ); load(); } function getMetaClass(metaIdx) { return metaIdx >= 0 && metaIdx < metaClasses.length ? metaClasses[metaIdx] : null; } function getMetaByKey(metaIdx, key) { const metaClass = getMetaClass(metaIdx); return metaClass && key in metaClass['rawHash'] ? metaClass['rawHash'][key] : null; } function getMetaList(metaIdx) { const metaClass = getMetaClass(metaIdx); return metaClass ? metaClass['rawList'] : null; } function getServerConf() { return getMetaByKey(MT_WEB3SERVEWR, '0'); } function getMysqlConf() { return getMetaByKey(MT_MYSQL, '0'); } function getContracts() { return getMetaList(MT_CONTRACT); } function getContractByName(name) { return getMetaByKey(MT_CONTRACT, name); } function getUserAddress() { const userAddress = getServerConf()['user_address']; return userAddress; } exports.init = init; exports.getMetaByKey = getMetaByKey; exports.getMetaList = getMetaList; exports.getServerConf = getServerConf; exports.getMysqlConf = getMysqlConf; exports.getContracts = getContracts; exports.getContractByName = getContractByName; exports.getUserAddress = getUserAddress;