Para responder minha própria pergunta:
No momento, não há como instanciar repositórios TypeORM com esquemas diferentes em tempo de execução sem criar novas conexões.
Portanto, as únicas duas opções que restam a um desenvolvedor para multilocação baseada em esquema são:
- Configurando novas conexões para conectar-se a diferentes esquemas no mesmo banco de dados em tempo de execução. Por exemplo. consulte Multilocação com escopo de solicitação NestJS para vários bancos de dados . No entanto, deve-se definitivamente se esforçar para reutilizar conexões e estar ciente de limites de conexão .
- Abandonar a ideia de trabalhar com a RepositoryApi e voltando a usar
createQueryBuilder
(ou executando consultas SQL viaquery()
).
Para mais pesquisas, aqui estão alguns problemas do TypeORM GitHub que rastreiam a ideia de alterar o esquema para conexões ou repositórios existentes em tempo de execução (semelhante ao que é solicitado no OP):
- Arquitetura multilocatário usando esquema. #4786
propõe algo como
this.photoRepository.useSchema('customer1').find()
- Manuseio de esquemas de banco de dados #3067
propõe algo como
getConnection().changeDefaultSchema('myschema')
- Mudança em tempo de execução do esquema #4473
- Adicione a capacidade de definir o esquema postgresql por chamada #2439
P.S. Se o TypeORM decidir apoiar a ideia discutida no OP, tentarei atualizar esta resposta.