2022-04-19 17:37:06 +04:00
|
|
|
|
|
|
|
import DB from '../database';
|
|
|
|
import logger from '../logger';
|
|
|
|
import lightningApi from '../api/lightning-api-factory';
|
|
|
|
|
|
|
|
class LightningStatsUpdater {
|
|
|
|
constructor() {}
|
|
|
|
|
|
|
|
public async startService() {
|
2022-04-24 01:33:38 +04:00
|
|
|
logger.info('Starting Stats service');
|
2022-04-19 17:37:06 +04:00
|
|
|
|
|
|
|
const now = new Date();
|
|
|
|
const nextHourInterval = new Date(now.getFullYear(), now.getMonth(), now.getDate(), Math.floor(now.getHours() / 1) + 1, 0, 0, 0);
|
|
|
|
const difference = nextHourInterval.getTime() - now.getTime();
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
this.$logLightningStats();
|
|
|
|
setInterval(() => {
|
|
|
|
this.$logLightningStats();
|
|
|
|
}, 1000 * 60 * 60);
|
|
|
|
}, difference);
|
|
|
|
}
|
|
|
|
|
|
|
|
private async $logLightningStats() {
|
2022-04-24 01:33:38 +04:00
|
|
|
const networkInfo = await lightningApi.$getNetworkInfo();
|
2022-04-19 17:37:06 +04:00
|
|
|
|
|
|
|
try {
|
2022-04-24 01:33:38 +04:00
|
|
|
const query = `INSERT INTO statistics(
|
2022-04-19 17:37:06 +04:00
|
|
|
added,
|
|
|
|
channel_count,
|
|
|
|
node_count,
|
|
|
|
total_capacity,
|
|
|
|
average_channel_size
|
|
|
|
)
|
|
|
|
VALUES (NOW(), ?, ?, ?, ?)`;
|
|
|
|
|
|
|
|
await DB.query(query, [
|
|
|
|
networkInfo.channel_count,
|
|
|
|
networkInfo.node_count,
|
|
|
|
networkInfo.total_capacity,
|
|
|
|
networkInfo.average_channel_size
|
|
|
|
]);
|
|
|
|
} catch (e) {
|
|
|
|
logger.err('$logLightningStats() error: ' + (e instanceof Error ? e.message : e));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default new LightningStatsUpdater();
|