From e6572a59f0d72cbe3675259c382eabe7c41bb3c3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 3 Jul 2023 22:03:34 +0800 Subject: [PATCH] 1 --- server/web3bcspider/services/factory.js | 34 ++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/server/web3bcspider/services/factory.js b/server/web3bcspider/services/factory.js index 02c2d3e..343687e 100644 --- a/server/web3bcspider/services/factory.js +++ b/server/web3bcspider/services/factory.js @@ -1,24 +1,34 @@ const services = {}; -function add(clsNames, modName) { +async function internalAdd(clsName, modName, isSingle) { const modClass = require('./' + modName); - clsNames.forEach((clsName) => { - services[clsName] = { - 'clsName': clsName, - 'modName': modName, - 'class': modClass - }; - }); + services[clsName] = { + 'clsName': clsName, + 'modName': modName, + 'class': modClass, + 'isSingle': isSingle + }; + if (modClass.staticInit) { + await modClass.staticInit(); + } +} + +async function add(clsName, modName) { + await internalAdd(clsName, modName, false); +} + +async function addSingle(clsName, modName) { + await internalAdd(clsName, modName, true); } async function init() { - add(['BlockChain'], 'blockchain'); + await add("BlockChain", 'blockchain'); add(['PullBcEvent'], 'pull_bcevent'); } -function create(name, session) { - const module = services[name]; - return new module['class'](session); +function create(name, session = null) { + const service = services[name]; + return new service['class'](session); } exports.init = init;