Files
travel-planner/backend/libs/infrastructure/src/postgres/postgres.module.ts
2026-08-17 13:39:15 +02:00

28 lines
777 B
TypeScript

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 {}