From 96eca65ed0e9db5c169594319de7fd2a8e0725af Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Wed, 7 Jun 2023 20:45:21 +0200 Subject: [PATCH] add back health module to server --- package.json | 2 +- pnpm-lock.yaml | 3 +++ server/package.json | 3 ++- server/src/app.module.ts | 2 ++ server/src/health/health.controller.ts | 22 ++++++++++++++++++++++ server/src/health/health.module.ts | 11 +++++++++++ 6 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 server/src/health/health.controller.ts create mode 100644 server/src/health/health.module.ts diff --git a/package.json b/package.json index f77a4534..ee730ba1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "reactive-resume", - "version": "3.7.4", + "version": "3.7.5", "private": true, "scripts": { "dev": "env-cmd --silent cross-var cross-env VERSION=$npm_package_version turbo run dev", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89815185..b6b69e6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -326,6 +326,9 @@ importers: '@types/passport': specifier: ^1.0.12 version: 1.0.12 + axios: + specifier: ^1.4.0 + version: 1.4.0 bcryptjs: specifier: ^2.4.3 version: 2.4.3 diff --git a/server/package.json b/server/package.json index ddda78af..d4e53aed 100644 --- a/server/package.json +++ b/server/package.json @@ -22,6 +22,7 @@ "@nestjs/terminus": "^9.2.2", "@nestjs/typeorm": "^9.0.1", "@types/passport": "^1.0.12", + "axios": "^1.4.0", "bcryptjs": "^2.4.3", "cache-manager": "^5.2.2", "class-transformer": "^0.5.1", @@ -50,7 +51,6 @@ "devDependencies": { "@nestjs/cli": "^9.5.0", "@nestjs/schematics": "^9.2.0", - "schema": "workspace:*", "@types/bcryptjs": "^2.4.2", "@types/cookie-parser": "^1.4.3", "@types/express": "^4.17.17", @@ -64,6 +64,7 @@ "eslint-plugin-unused-imports": "^2.0.0", "prettier": "^2.8.8", "rimraf": "^5.0.1", + "schema": "workspace:*", "source-map-support": "^0.5.21", "ts-loader": "^9.4.3", "ts-node": "^10.9.1", diff --git a/server/src/app.module.ts b/server/src/app.module.ts index d1763270..5e0efa5d 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -9,6 +9,7 @@ import { ConfigModule } from './config/config.module'; import { DatabaseModule } from './database/database.module'; import { AllExceptionsFilter } from './filters/all-exceptions.filter'; import { FontsModule } from './fonts/fonts.module'; +import { HealthModule } from './health/health.module'; import { IntegrationsModule } from './integrations/integrations.module'; import { MailModule } from './mail/mail.module'; import { PrinterModule } from './printer/printer.module'; @@ -32,6 +33,7 @@ import { UsersModule } from './users/users.module'; FontsModule, IntegrationsModule, PrinterModule, + HealthModule, ], providers: [ { diff --git a/server/src/health/health.controller.ts b/server/src/health/health.controller.ts new file mode 100644 index 00000000..8e134899 --- /dev/null +++ b/server/src/health/health.controller.ts @@ -0,0 +1,22 @@ +import { Controller, Get } from '@nestjs/common'; +import { HealthCheck, HealthCheckService, HttpHealthIndicator, TypeOrmHealthIndicator } from '@nestjs/terminus'; + +@Controller('health') +export class HealthController { + constructor( + private health: HealthCheckService, + private http: HttpHealthIndicator, + private db: TypeOrmHealthIndicator + ) {} + + @Get() + @HealthCheck() + check() { + return this.health.check([ + () => this.http.pingCheck('app', 'https://rxresu.me'), + () => this.http.pingCheck('blog', 'https://blog.rxresu.me'), + () => this.http.pingCheck('docs', 'https://docs.rxresu.me'), + () => this.db.pingCheck('database'), + ]); + } +} diff --git a/server/src/health/health.module.ts b/server/src/health/health.module.ts new file mode 100644 index 00000000..e4889872 --- /dev/null +++ b/server/src/health/health.module.ts @@ -0,0 +1,11 @@ +import { HttpModule } from '@nestjs/axios'; +import { Module } from '@nestjs/common'; +import { TerminusModule } from '@nestjs/terminus'; + +import { HealthController } from './health.controller'; + +@Module({ + imports: [TerminusModule, HttpModule], + controllers: [HealthController], +}) +export class HealthModule {}