feat: add api liveness and readiness checks

This commit is contained in:
Bastian Wagner
2026-08-17 13:39:15 +02:00
parent db6d62c303
commit 0815f702d2
12 changed files with 327 additions and 5 deletions

View File

@@ -0,0 +1,2 @@
export * from './postgres/postgres.module';
export * from './redis/redis.module';

View File

@@ -0,0 +1,27 @@
import { Inject, Injectable, Module, OnModuleDestroy } from '@nestjs/common';
import { Pool } from 'pg';
import { APP_ENVIRONMENT, AppEnvironment } from '../../../configuration/src';
export const POSTGRES_POOL = Symbol('POSTGRES_POOL');
export const postgresPoolProvider = {
provide: POSTGRES_POOL,
inject: [APP_ENVIRONMENT],
useFactory: (env: AppEnvironment) =>
new Pool({ connectionString: env.databaseUrl }),
};
@Injectable()
class PostgresLifecycle implements OnModuleDestroy {
constructor(@Inject(POSTGRES_POOL) private readonly pool: Pool) {}
async onModuleDestroy(): Promise<void> {
await this.pool.end();
}
}
@Module({
providers: [postgresPoolProvider, PostgresLifecycle],
exports: [postgresPoolProvider],
})
export class PostgresModule {}

View File

@@ -0,0 +1,27 @@
import { Inject, Injectable, Module, OnModuleDestroy } from '@nestjs/common';
import Redis from 'ioredis';
import { APP_ENVIRONMENT, AppEnvironment } from '../../../configuration/src';
export const REDIS_CLIENT = Symbol('REDIS_CLIENT');
export const redisClientProvider = {
provide: REDIS_CLIENT,
inject: [APP_ENVIRONMENT],
useFactory: (env: AppEnvironment) =>
new Redis(env.redisUrl, { lazyConnect: false }),
};
@Injectable()
class RedisLifecycle implements OnModuleDestroy {
constructor(@Inject(REDIS_CLIENT) private readonly client: Redis) {}
async onModuleDestroy(): Promise<void> {
await this.client.quit();
}
}
@Module({
providers: [redisClientProvider, RedisLifecycle],
exports: [redisClientProvider],
})
export class RedisModule {}