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