postgres doesn't support read UNCOMMITTED

This commit is contained in:
Ben Wilson
2023-12-07 09:55:07 -05:00
parent c5ff8521ac
commit 5b71632f8a
@@ -1,27 +1,20 @@
import { Injectable, OnModuleDestroy } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { DataSource, QueryRunner, Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { ClientStatisticsEntity } from './client-statistics.entity'; import { ClientStatisticsEntity } from './client-statistics.entity';
@Injectable() @Injectable()
export class ClientStatisticsService implements OnModuleDestroy { export class ClientStatisticsService {
private readUncommittedQueryRunner: QueryRunner;
constructor( constructor(
private readonly dataSource: DataSource,
@InjectRepository(ClientStatisticsEntity) @InjectRepository(ClientStatisticsEntity)
private clientStatisticsRepository: Repository<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>) { public async save(clientStatistic: Partial<ClientStatisticsEntity>) {
@@ -54,9 +47,9 @@ export class ClientStatisticsService implements OnModuleDestroy {
var yesterday = new Date(new Date().getTime() - (24 * 60 * 60 * 1000)); 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 SELECT
time AS label, time AS label,
ROUND(((SUM(shares) * 4294967296) / 600)) AS data ROUND(((SUM(shares) * 4294967296) / 600)) AS data
@@ -68,9 +61,11 @@ export class ClientStatisticsService implements OnModuleDestroy {
time time
ORDER BY ORDER BY
time time
LIMIT 144; LIMIT 144;
`
); `;
const result: any[] = await this.clientStatisticsRepository.query(query);
return result.map(res => { return result.map(res => {