import { Module } from '@nestjs/common'; import { Pool } from 'pg'; import { DispositionService } from './disposition.service'; import { DispositionController } from './disposition.controller'; import { DispositionRepository, InMemoryDispositionRepository, } from './disposition.repository'; import { PostgresDispositionRepository } from './postgres-disposition.repository'; import { PG_POOL } from '../../common/db/db.tokens'; import { createSealerFromEnv } from '../../common/crypto/field-sealer'; import { FollowupModule } from '../followup/followup.module'; @Module({ imports: [FollowupModule], controllers: [DispositionController], providers: [ DispositionService, { provide: DispositionRepository, useFactory: (pool: Pool | null): DispositionRepository => pool ? new PostgresDispositionRepository(pool, createSealerFromEnv()) : new InMemoryDispositionRepository(), inject: [PG_POOL], }, ], exports: [DispositionService], }) export class DispositionModule {}