Adaptadores

Adapters são componentes responsáveis por lidar com processos de I/O e integrações externas. Eles servem como a ponte entre sua lógica de negócio e sistemas externos, como bancos de dados, APIs, sistemas de arquivos ou stores de cache.

Propósito

Adapters abstraem os detalhes de implementação de dependências externas, permitindo:

  • Intercambiabilidade - Trocar implementações facilmente (por exemplo, PostgreSQL → MongoDB)

  • Testabilidade - Mockar dependências externas em testes

  • Isolamento - Manter a lógica de negócio independente de preocupações de infraestrutura

Localização

Todos os componentes adapter DEVEM ser colocados sob o src/adapters diretório no projeto.

src/
└── adapters/
    ├── database/
    ├── storage/
    ├── cache/
    └── external-api/

Interfaces Compartilhadas

Adapters DEVERIAM ser construídos com intercambiabilidade em mente. Defina interfaces compartilhadas em src/types.ts para que múltiplos adapters possam implementar o mesmo contrato.

Exemplo: Interface de Storage

Memory Storage Adapter

Aqui está uma implementação simples de um adapter de storage em memória, útil para testes ou desenvolvimento.

Estrutura de Diretórios

Implementação: component.ts

Redis Storage Adapter

Aqui está um adapter Redis pronto para produção que demonstra o gerenciamento de lifecycle.

Implementação: component.ts

Tratamento de Erros: errors.ts

Exemplo de Adapter de Banco de Dados

Aqui está um exemplo de um adapter de banco de dados PostgreSQL.

Métodos de Lifecycle

WKC fornece métodos de lifecycle especiais que são chamados automaticamente:

  • [Lifecycle.ComponentStarted] ou [START_COMPONENT] - Chamado quando o serviço inicia

  • [Lifecycle.ComponentStopped] ou [STOP_COMPONENT] - Chamado quando o serviço é encerrado

Quando Usar Métodos de Lifecycle

Use métodos de lifecycle quando seu adapter precisar:

  • Estabelecer conexões (banco de dados, cache, fila de mensagens)

  • Inicializar pools ou clients

  • Realizar checagens de saúde

  • Limpar recursos no shutdown

  • Fechar conexões graciosamente

Melhores Práticas

1. Tratamento de Erros

Sempre trate erros de conexão e lance erros customizados significativos:

2. Configuração

Use o componente config para gerenciar as configurações do adapter:

3. Logging

Registre operações importantes para depuração e monitoramento:

4. Segurança de Tipos

Sempre tipar corretamente seus valores de retorno:

5. Gerenciamento de Recursos

Sempre limpe recursos no método de lifecycle stop:

Testando Adapters

Veja a Testing Services (WKC) documentação para orientação detalhada sobre testes de adapters.

Exemplo Rápido

Atualizado