diff --git a/src/ORM/client/client.service.ts b/src/ORM/client/client.service.ts index b8cf974..ec9604d 100644 --- a/src/ORM/client/client.service.ts +++ b/src/ORM/client/client.service.ts @@ -1,15 +1,18 @@ import { Injectable } from '@nestjs/common'; +import { Cron, CronExpression } from '@nestjs/schedule'; import { InjectRepository } from '@nestjs/typeorm'; +import { setTimeout } from 'timers/promises'; import { IsNull, LessThan, Repository } from 'typeorm'; import { ClientEntity } from './client.entity'; - @Injectable() export class ClientService { + private bulkInsertClients: ClientEntity[] = []; + constructor( @InjectRepository(ClientEntity) private clientRepository: Repository @@ -17,6 +20,18 @@ export class ClientService { } + @Cron(CronExpression.EVERY_SECOND) + private async bulkInsert() { + + if (this.bulkInsertClients.length < 1) { + return; + } + + const clientsToInsert = [...this.bulkInsertClients];; + this.bulkInsertClients = []; + await this.clientRepository.insert(clientsToInsert); + } + public async killDeadClients() { var tenMinutes = new Date(new Date().getTime() - (60 * 60 * 1000)); @@ -36,15 +51,13 @@ export class ClientService { // return await this.clientRepository.save(client); // } + public async insert(partialClient: Partial): Promise { - const insertResult = await this.clientRepository.insert(partialClient); - const client = { - ...partialClient, - ...insertResult.generatedMaps[0] - }; - - return client as ClientEntity; + const client = this.clientRepository.create(partialClient); + this.bulkInsertClients.push(client); + await setTimeout(2000); + return client; } public async delete(sessionId: string) {