aozhiwei aa3863aeec 1
2023-07-05 19:41:03 +08:00

83 lines
2.3 KiB
JavaScript

const app = require('j7/app');
const utils = require('j7/utils');
const bcutils = require('j7/bcutils');
const log = require('j7/log');
const BaseTask = require('./basetask');
const factory = require('./factory');
const serviceFactory = require('../services/factory');
const metaFactory = require('../metadata/factory');
class DbSpider extends BaseTask {
async init() {
const netList = metaFactory.getNetList();
netList.forEach
(
(net) => {
this.initNet(net);
});
}
async initNet(net) {
const events = [];
net['Events'].forEach
(
(eventConf) => {
const event = {
'eventConf': eventConf,
'progressInfo': {
'pullCount': 0,
'eventCount': 0,
'lastIdx': 0,
'maxIdx': 0
}
};
events.push(event);
this.createPullDbEventService(net, event);
});
this.outputProgressInfo(net, events);
}
createPullDbEventService(net, event) {
const pullDbEventService = serviceFactory.create('PullDbEvent');
event['pullDbEventService'] = pullDbEventService;
pullDbEventService.init(net, event);
return pullDbEventService;
}
createDbEventProcessService(net, event) {
const DbEventProcessService = serviceFactory.create('DbEventProcess');
event['DbEventProcessService'] = DbEventProcessService;
DbEventProcessService.init(net, event);
return DbEventProcessService;
}
async outputProgressInfo(net, events) {
let count = 0;
while (true) {
log.info('----------------------------------------------------------');
events.forEach
(
(event) => {
const eventConf = event['eventConf'];
const progInfo = event['progressInfo'];
const pullService = event['pullDbEventService'];
const logObj = 'net_id: ' + net['net_id'] + ' ' +
eventConf['contract_name'] + '.' +
eventConf['event_name'] + ' ' +
' pullCount:' + progInfo['pullCount'] +
' eventCount:' + progInfo['eventCount'] +
' lastIdx:' + progInfo['lastIdx'] +
' maxIdx:' + pullService.getMaxIdx().toString() +
'';
log.info(logObj);
}
);
await utils.sleep(1000 * 10);
}
}
}
module.exports = DbSpider;