From d630f75e320efa961352ee6f03699b4b8f7b3a54 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 5 Jul 2023 15:46:47 +0800 Subject: [PATCH] 1 --- database/bcevent.sql | 3 +- server/web3dbspider/services/pull_dbevent.js | 38 +++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/database/bcevent.sql b/database/bcevent.sql index 5dba483..f799c0b 100644 --- a/database/bcevent.sql +++ b/database/bcevent.sql @@ -41,7 +41,8 @@ CREATE TABLE `t_blockchain_event` ( `createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', `modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', PRIMARY KEY (`idx`), - UNIQUE KEY `unikey` (`txhash`, `hash_code`, `log_index`, `net_id`, `event_name`, `contract_address`) + UNIQUE KEY `unikey` (`txhash`, `hash_code`, `log_index`, `net_id`, `event_name`, `contract_address`), + KEY `net_id_event_name_contract_address` (`net_id`, `event_name`, `contract_address`) ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/server/web3dbspider/services/pull_dbevent.js b/server/web3dbspider/services/pull_dbevent.js index 9172f29..af3dce9 100644 --- a/server/web3dbspider/services/pull_dbevent.js +++ b/server/web3dbspider/services/pull_dbevent.js @@ -4,6 +4,8 @@ const bcutils = require('j7/bcutils'); const log = require('j7/log'); const BaseService = require('./baseservice'); +const LIMIT_COUNT = 100; + class PullDbEvent extends BaseService { async init(net, event) { @@ -25,7 +27,41 @@ class PullDbEvent extends BaseService { } async pullEvent() { - const logHead = this.getInstanceName() + ' pullEvent: '; + const logHead = this.getInstanceName() + ' pullDbEvent: '; + try { + const startIdx = this.getStartIdx(); + const endIdx = this.getEndIdx(); + const {err, rows} = await this.conn.execQuery( + 'SELECT * FROM t_blockchain_event WHERE `idx` > ? AND `idx` < ? ' + + 'AND net_id = ? AND event_name = ? AND contract_address = ? ' + + 'LIMIT ' + LIMIT_COUNT, + [ + startIdx, + endIdx, + this.getNetId(), + this.getEventName(), + this.getContractAddress() + ]); + if (err) { + throw err; + } + if (rows.length > 0) { + + } else { + this.lastIdx = endIdx; + } + } catch (err) { + log.error(logHead + err); + await utils.sleep(5000 + utils.randRange(1000, 3000)); + } + } + + async getStartIdx() { + + } + + async getEndIdx() { + } getEventName() {