Skip to content

fix: resolve N+1 query problem nos resolvers GraphQL#410

Open
DenisCDev wants to merge 1 commit into
alura:mainfrom
DenisCDev:main
Open

fix: resolve N+1 query problem nos resolvers GraphQL#410
DenisCDev wants to merge 1 commit into
alura:mainfrom
DenisCDev:main

Conversation

@DenisCDev
Copy link
Copy Markdown

@DenisCDev DenisCDev commented Jan 20, 2026

Problema

Os resolvers Card.expertises e Card.collaborations estavam chamando guidesRepository().getAll() pra cada card retornado na query. Isso causava um problema clássico de N+1:

  • Query com 50 cards = 100+ chamadas ao repositório
  • Performance degradava exponencialmente com mais dados

Solução

Implementei DataLoader pra fazer batch loading e resolver o problema:

  • Criado _api/infra/dataloaders/ com loaders pra guides e cards
  • Criado contexto GraphQL tipado com os loaders
  • Refatorado os resolvers pra usar os loaders
  • Adicionado TTL de 5 min no cache do storage

Testes

  • TypeScript compila sem erros
  • Testes existentes passam

Os resolvers de Card.expertises e Card.collaborations estavam
chamando guidesRepository().getAll() pra cada card retornado.
Com 50 cards, eram 100+ chamadas ao repositório por request.

Solução:
- Adicionado DataLoader pra fazer batch loading
- Criado contexto GraphQL com loaders por request
- Refatorado resolvers pra usar os loaders
- Adicionado TTL no cache do storage (5min)

Agora uma query com 50 cards faz apenas 1 chamada ao repositório
em vez de 100+.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant