diff --git a/server/web3bcspider/metadata/Contract.js b/server/web3bcspider/metadata/BlockChainDb.js similarity index 50% rename from server/web3bcspider/metadata/Contract.js rename to server/web3bcspider/metadata/BlockChainDb.js index a347a12..f258b04 100644 --- a/server/web3bcspider/metadata/Contract.js +++ b/server/web3bcspider/metadata/BlockChainDb.js @@ -1,8 +1,8 @@ const utils = require('j7/utils'); const basewrap = require('./basewrap'); -class Contract extends basewrap.BaseWrap { +class BlockChainDb extends basewrap.BaseWrap { } -module.exports = Contract; +module.exports = BlockChainDb; diff --git a/server/web3bcspider/metadata/GameDb.js b/server/web3bcspider/metadata/GameDb.js deleted file mode 100644 index 198762a..0000000 --- a/server/web3bcspider/metadata/GameDb.js +++ /dev/null @@ -1,8 +0,0 @@ -const utils = require('j7/utils'); -const basewrap = require('./basewrap'); - -class GameDb extends basewrap.BaseWrap { - -} - -module.exports = GameDb; diff --git a/server/web3bcspider/metadata/MarketDb.js b/server/web3bcspider/metadata/MarketDb.js deleted file mode 100644 index d8d8956..0000000 --- a/server/web3bcspider/metadata/MarketDb.js +++ /dev/null @@ -1,8 +0,0 @@ -const utils = require('j7/utils'); -const basewrap = require('./basewrap'); - -class MarketDb extends basewrap.BaseWrap { - -} - -module.exports = MarketDb; diff --git a/server/web3bcspider/metadata/Web3.js b/server/web3bcspider/metadata/Web3.js deleted file mode 100644 index c2193ad..0000000 --- a/server/web3bcspider/metadata/Web3.js +++ /dev/null @@ -1,8 +0,0 @@ -const utils = require('j7/utils'); -const basewrap = require('./basewrap'); - -class Web3 extends basewrap.BaseWrap { - -} - -module.exports = Web3; diff --git a/server/web3bcspider/metadata/factory.js b/server/web3bcspider/metadata/factory.js index 7c3ba48..9ff4918 100644 --- a/server/web3bcspider/metadata/factory.js +++ b/server/web3bcspider/metadata/factory.js @@ -4,8 +4,11 @@ const log = require('j7/log'); const metaClassList = []; const metaClasses = {}; +const web3ConfHash = {}; +let web3ServiceConf = null; +let configDir = './config/'; -function registerMetaClass(fileName, primKey, wrapClass, aliseName = '') { +function registerMetaClass(fileName, primKey, wrapClass) { const metaClass = { 'fileName' : fileName, 'primKey' : primKey, @@ -15,70 +18,59 @@ function registerMetaClass(fileName, primKey, wrapClass, aliseName = '') { 'rawHash' : {}, 'wrapList' : [], 'wrapHash' : {}, - 'aliseName': aliseName }; metaClassList.push(metaClass); - if (aliseName) { - metaClasses[aliseName] = metaClass; - } else { - metaClasses[wrapClass] = metaClass; - } -} - -function onAllLoadPost(classList) { - for (let i = 0; i < 3; ++i) { - classList.forEach((metaClass) => { - metaClass['wrapList'].forEach((item) => { - if (item['_init' + i]) { - item['_init' + i](exports); - } - }); - }); - } - classList.forEach((metaClass) => { - metaClass['wrapList'].forEach((item) => { - item.lock(); - }); - }); -} - -function loadMeta(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) { - const wrapOjb = new metaClass['wrapClass'](item, metaClass); - const wrapProxy = new Proxy(wrapOjb, wrapOjb._getHandler()); - metaClass['wrapList'].push(wrapProxy); - if (metaClass['primKey'] == '') { - metaClass['rawHash'][idx] = item; - metaClass['wrapHash'][idx] = wrapProxy; - } else { - metaClass['rawHash'][item[metaClass['primKey']]] = item; - metaClass['wrapHash'][item[metaClass['primKey']]] = wrapProxy; - } - ++idx; - }); + metaClasses[wrapClass] = metaClass; } function load() { metaClassList.forEach((metaClass) => { - loadMeta(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) { + const wrapOjb = new metaClass['wrapClass'](item, metaClass); + const wrapProxy = new Proxy(wrapOjb, wrapOjb._getHandler()); + metaClass['wrapList'].push(wrapProxy); + if (metaClass['primKey'] == '') { + metaClass['rawHash'][idx] = item; + metaClass['wrapHash'][idx] = wrapProxy; + } else { + metaClass['rawHash'][item[metaClass['primKey']]] = item; + metaClass['wrapHash'][item[metaClass['primKey']]] = wrapProxy; + } + ++idx; + }); //log.debug(utils.jsonEncode(metaClass)); }); - onAllLoadPost(metaClassList); + { + for (let i = 0; i < 3; ++i) { + metaClassList.forEach((metaClass) => { + metaClass['wrapList'].forEach((item) => { + if (item['_init' + i]) { + item['_init' + i](exports); + } + }); + }); + } + metaClassList.forEach((metaClass) => { + metaClass['wrapList'].forEach((item) => { + item.lock(); + }); + }); + } } -function init() { - let configDir = './config/'; +async function init() { + configDir = './config/'; if (utils.isOnlineEnv()) { configDir = '../config/'; } else if (utils.getArgv('env') == 'dev'){ @@ -92,50 +84,41 @@ function init() { } else if (utils.getArgv('env') == 'dev'){ resDir = './res_dev/'; } + console.log(resDir); registerMetaClass(configDir + 'config.json', '', 'Config' ); - registerMetaClass(configDir + 'web3.json', + registerMetaClass(configDir + 'blockchaindb_mysql.json', '', - 'Web3' + 'BlockChainDb' ); - registerMetaClass(configDir + 'contract.json', + registerMetaClass(configDir + 'web3service.cluster.json', '', - 'Contract' - ); - registerMetaClass(configDir + 'marketdb_mysql.json', - '', - 'MarketDb' - ); - registerMetaClass(configDir + 'gamedb_mysql.json', - '', - 'GameDb' + 'Web3Service' ); + + // registerMetaClass(resDir + 'item@item.json', + // 'id', + // 'Item' + // ); load(); { - const classList = []; - getMetaByKey('PresentList', '0')['list'].forEach((item) => { - registerMetaClass(resDir + item + '@present.json', - 'id', - 'Present', - 'Present' + item - ); - const metaClass = getMetaClass('Present' + item); - loadMeta(metaClass); - classList.push(metaClass); + traverseMetaList('BlockChainDb', (dbConf, idx) => { + app.registerDb('BlockChainDb' + idx, dbConf); }); - onAllLoadPost(classList); - } - { - traverseMetaList('MarketDb', (dbConf, idx) => { - app.registerDb('MarketDb' + idx, dbConf); - }); - } - { - traverseMetaList('GameDb', (dbConf, idx) => { - app.registerDb('GameDb' + idx, dbConf); + traverseMetaList('Web3Service', (item, idx) => { + if (item['instance_id'] == app.getInstanceId()) { + web3ServiceConf = item; + item['nets'].forEach((netId) => { + const netDir = configDir + 'nets/' + netId + '/'; + web3ConfHash[netId] = { + 'Web3': utils.readJsonFromFile(netDir + 'web3.json'), + 'Contract': utils.readJsonFromFile(netDir + 'contract.json') + }; + }); + } }); } } @@ -170,34 +153,42 @@ function traverseMetaList(name, cb) { } } -function getWeb3Conf() { - return getMetaByKey('Web3', '0'); -} - -function getContracts() { - return getMetaList('Contract'); -} - -function getContractByName(name) { - return getMetaByKey('Contract', name); -} - -function getContractByAddress(address) { - let contract = null; - getContracts().forEach((item) => { - if (item['address'] == address) { - contract = item; +function getWeb3Conf(netId) { + const keys = Object.keys(web3ConfHash); + for (let i = 0; i < keys.length; ++i) { + if (keys[i] == netId) { + return web3ConfHash[keys[i]]['Web3']; } - }); - return contract; + } + return null; } -function getUserAddress() { - return getWeb3Conf()['user_address']; +function getWeb3ServiceConf() { + return web3ServiceConf; } -function getPrivateKey() { - return getWeb3Conf()['private_key']; +function getContractsConf(netId) { + const keys = Object.keys(web3ConfHash); + for (let i = 0; i < keys.length; ++i) { + if (keys[i] == netId) { + return web3ConfHash[keys[i]]['Contract']; + } + } + return null; +} + +function getNetList() { + const netList = []; + const keys = Object.keys(web3ConfHash); + for (let i = 0; i < keys.length; ++i) { + netList.push(keys[i]); + } + return netList; +} + +function getNetDir(netId) { + const netDir = configDir + 'nets/' + netId + '/'; + return netDir; } exports.init = init; @@ -207,8 +198,7 @@ exports.traverseMetaList = traverseMetaList; exports.callMetaStatic = callMetaStatic; exports.getWeb3Conf = getWeb3Conf; -exports.getContracts = getContracts; -exports.getContractByName = getContractByName; -exports.getContractByAddress = getContractByAddress; -exports.getUserAddress = getUserAddress; -exports.getPrivateKey = getPrivateKey; +exports.getWeb3ServiceConf = getWeb3ServiceConf; +exports.getContractsConf = getContractsConf; +exports.getNetList = getNetList; +exports.getNetDir = getNetDir;