From 12b7c84faef12b18c43192dae9dbc5e478458eac Mon Sep 17 00:00:00 2001 From: Lorenzo Gigli Date: Sun, 18 Sep 2022 17:22:05 +0200 Subject: [PATCH] fix: close connection on application shutdown --- lib/tile38-core.module.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/tile38-core.module.ts b/lib/tile38-core.module.ts index b71de00..732712d 100644 --- a/lib/tile38-core.module.ts +++ b/lib/tile38-core.module.ts @@ -1,4 +1,6 @@ -import { DynamicModule, Global, Module, Provider } from '@nestjs/common'; +import { DynamicModule, Global, Module, OnApplicationShutdown, Provider } from '@nestjs/common'; +import { ModuleRef } from '@nestjs/core'; +import { Tile38 } from '@tiermobility/tile38-ts'; import { tile38ModuleOptions, tile38ModuleToken } from './constants'; import { Tile38ModuleAsyncOptions, Tile38ModuleOptions, Tile38OptionsFactory } from './interfaces'; @@ -7,7 +9,9 @@ import { getTile38Client } from './util'; @Global() @Module({}) -export class Tile38CoreModule { +export class Tile38CoreModule implements OnApplicationShutdown { + public constructor(private readonly moduleRef: ModuleRef) {} + public static forRoot(options: Tile38ModuleOptions): DynamicModule { const tile38Provider = createTile38Provider(options); @@ -33,6 +37,13 @@ export class Tile38CoreModule { }; } + public async onApplicationShutdown(): Promise { + const tile38 = this.moduleRef.get(tile38ModuleToken); + if (tile38) { + await tile38.quit(); + } + } + private static createAsyncProviders(options: Tile38ModuleAsyncOptions): Provider[] { if (options.useExisting || options.useFactory) { return [this.createAsyncOptionsProvider(options)];