Olá, Danilo! Tudo bem com você? Espero que sim.
Desde já peço perdão pela demora em responder.
Para ter diferentes instâncias do repositório de usuários no ProdutoModule
, você pode utilizar o recurso de escopo do Nest.js. O escopo permite que você defina como as instâncias dos seus serviços são criadas e compartilhadas dentro do módulo.
Uma opção é utilizar o escopo Scope.DEFAULT
, que é o escopo padrão. Nesse caso, uma nova instância do serviço é criada a cada requisição. Para compartilhar a mesma instância entre os módulos, você pode utilizar o escopo Scope.REQUEST
, que cria uma única instância do serviço por requisição.
No seu caso, você pode definir o escopo do serviço do repositório de usuários como Scope.REQUEST
no módulo de usuários, e então injetar o mesmo serviço no módulo de produtos. Isso garantirá que você tenha acesso à mesma instância do repositório de usuários em ambos os módulos.
Aqui está um exemplo de como fazer isso:
// No módulo de usuários
@Module({
providers: [
{
provide: UsuarioRepository,
useClass: UsuarioRepository,
scope: Scope.REQUEST, // Definindo o escopo como REQUEST
},
],
exports: [UsuarioRepository],
})
export class UsuarioModule {}
// No módulo de produtos
@Module({
imports: [UsuarioModule],
providers: [ProdutoService],
})
export class ProdutoModule {
constructor(private usuarioRepository: UsuarioRepository) {}
}
Dessa forma, você terá acesso à mesma instância do UsuarioRepository
tanto no módulo de usuários quanto no módulo de produtos.
Espero ter ajudado. Caso tenha mais dúvidas, estarei à disposição.
Grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.