Banco de dados

Configuração TypeORM com PostgreSQL via DatabaseModule e DataSource factory.

A infraestrutura de banco usa TypeORM com PostgreSQL. A conexão é gerenciada por um DataSource singleton injetado via token customizado.

typescript
@Module({
  providers: [
    EnvService,
    {
      provide: DATA_SOURCE_PROVIDER_TOKEN,
      useFactory: dataSourceFactory,
      inject: [EnvService],
    },
  ],
  exports: [EnvService, DATA_SOURCE_PROVIDER_TOKEN],
})
export class DatabaseModule {}
typescript
export const DATA_SOURCE_PROVIDER_TOKEN = 'DATA_SOURCE';

export async function dataSourceFactory(env: EnvService) {
  const dataSource = new DataSource({
    type: 'postgres',
    url: env.get('DATABASE_URL'),
    entities: [Person, PersonAddress, PersonContact],
    invalidWhereValuesBehavior: {
      undefined: 'ignore',
    },
  });

  await dataSource.initialize();

  return dataSource;
}

Repositórios recebem o DataSource via token, não pela classe diretamente:

typescript
constructor(@Inject(DATA_SOURCE_PROVIDER_TOKEN) dataSource: DataSource) {
  super(dataSource, Person);
}

A URL de conexão vem de DATABASE_URL, validada no schema Zod (formato do .env.example):

env
DATABASE_URL=postgresql://postgres:root@localhost:5432/koala_nest
  1. Crie a entidade em src/domain/entities/.
  2. Inclua-a no array entities do dataSourceFactory.
  3. Gere e aplique a migration.

O migration-datasource.ts descobre entidades automaticamente via glob — não é necessário registrá-las manualmente lá.

O InfraModule agrega repositórios e exporta o RepositoryModule:

typescript
@Module({
  imports: [RepositoryModule],
  exports: [RepositoryModule],
})
export class InfraModule {}

Koala Nest

Facilitador para criar APIs NestJS com arquitetura DDD. Código copiado para o seu repositório — legível, adaptável e sob seu controle.

Creator

igordrangel.com.br

Design, back-end e estratégia de produto.

Comandos rápidos

CLI global e scripts no projeto gerado

  • bun install -g @koalarx/nest
  • kl-nest new
  • kl-nest add cache
  • bun run migration:run # template CRUD
  • kl-nest --help
© 2026 Koala NestFeito para desenvolvedores NestJS e fluxos assistidos por IA.