Pular para conteúdo

ADR-0007: ORM — TypeORM

Status

Accepted

Context and Problem Statement

O atenvi-bff precisa de uma camada de abstração para acesso ao PostgreSQL com suporte a migrations, relacionamentos e integração com o ecossistema NestJS/TypeScript.

Decision Drivers

  • Integração nativa com NestJS (@nestjs/typeorm)
  • Migrations versionadas
  • Decorators TypeScript para definição de entidades
  • Suporte a relacionamentos complexos (ERP)

Considered Options

  • TypeORM
  • Prisma
  • Drizzle

Decision Outcome

Chosen option: TypeORM, porque o módulo @nestjs/typeorm oferece integração first-class com injeção de dependência do NestJS, e os decorators de entidade alinham com o estilo declarativo do framework.

Positive Consequences

  • Entidades como classes TypeScript com decorators
  • Repository pattern integrado ao DI do NestJS
  • Migrations automáticas ou manuais via CLI
  • Query Builder para queries complexas sem SQL raw

Negative Consequences

  • Performance inferior ao Prisma/Drizzle em queries muito complexas
  • Tipagem de queries menos rigorosa que Prisma

More Information

  • Projeto: atenvi-bff
  • Banco: PostgreSQL