fix chart, caching

This commit is contained in:
Ben Wilson 2023-12-07 09:40:32 -05:00
parent eb5d434157
commit 7be554a358
2 changed files with 32 additions and 12 deletions

View File

@ -1,20 +1,27 @@
import { Injectable } from '@nestjs/common';
import { Injectable, OnModuleDestroy } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { DataSource, QueryRunner, Repository } from 'typeorm';
import { ClientStatisticsEntity } from './client-statistics.entity';
@Injectable()
export class ClientStatisticsService {
export class ClientStatisticsService implements OnModuleDestroy {
private readUncommittedQueryRunner: QueryRunner;
constructor(
private readonly dataSource: DataSource,
@InjectRepository(ClientStatisticsEntity)
private clientStatisticsRepository: Repository<ClientStatisticsEntity>,
) {
this.readUncommittedQueryRunner = this.dataSource.createQueryRunner();
this.readUncommittedQueryRunner.query('SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;')
}
onModuleDestroy() {
this.readUncommittedQueryRunner.release();
}
public async save(clientStatistic: Partial<ClientStatisticsEntity>) {
@ -47,9 +54,9 @@ export class ClientStatisticsService {
var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000));
const query = `
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
var result = await this.readUncommittedQueryRunner.query(
`
SELECT
time AS label,
ROUND(((SUM(shares) * 4294967296) / 600)) AS data
@ -61,11 +68,9 @@ export class ClientStatisticsService {
time
ORDER BY
time
LIMIT 144;
`;
const result: any[] = await this.clientStatisticsRepository.query(query);
LIMIT 144;
`
);
return result.map(res => {

View File

@ -24,14 +24,29 @@ export class AppController {
@Get('info')
public async info() {
const CACHE_KEY = 'SITE_INFO';
const cachedResult = await this.cacheManager.get(CACHE_KEY);
if (cachedResult != null) {
return cachedResult;
}
const blockData = await this.blocksService.getFoundBlocks();
const userAgents = await this.clientService.getUserAgents();
return {
const data = {
blockData,
userAgents,
uptime: this.uptime
};
//1 min
await this.cacheManager.set(CACHE_KEY, data, 1 * 60 * 1000);
return data;
}
@Get('network')