45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import DB from '../../database';
|
|
import logger from '../../logger';
|
|
import lightningApi from '../../api/lightning/lightning-api-factory';
|
|
import LightningStatsImporter from './sync-tasks/stats-importer';
|
|
import config from '../../config';
|
|
|
|
class LightningStatsUpdater {
|
|
public async $startService(): Promise<void> {
|
|
logger.info('Starting Lightning Stats service');
|
|
|
|
// LightningStatsImporter.$run();
|
|
this.$runTasks();
|
|
}
|
|
|
|
private setDateMidnight(date: Date): void {
|
|
date.setUTCHours(0);
|
|
date.setUTCMinutes(0);
|
|
date.setUTCSeconds(0);
|
|
date.setUTCMilliseconds(0);
|
|
}
|
|
|
|
private async $runTasks(): Promise<void> {
|
|
await this.$logStatsDaily();
|
|
|
|
setTimeout(() => {
|
|
this.$runTasks();
|
|
}, 1000 * config.LIGHTNING.NODE_STATS_REFRESH_INTERVAL);
|
|
}
|
|
|
|
/**
|
|
* Update the latest entry for each node every config.LIGHTNING.NODE_STATS_REFRESH_INTERVAL seconds
|
|
*/
|
|
private async $logStatsDaily(): Promise<void> {
|
|
const date = new Date();
|
|
this.setDateMidnight(date);
|
|
date.setUTCHours(24);
|
|
|
|
logger.info(`Updating latest node stats`);
|
|
const networkGraph = await lightningApi.$getNetworkGraph();
|
|
LightningStatsImporter.computeNetworkStats(date.getTime() / 1000, networkGraph);
|
|
}
|
|
}
|
|
|
|
export default new LightningStatsUpdater();
|