I’d like to connect to different databases on the fly based on details obtained at runtime. The application could be talking to several of these simultaneously.
The advice given in the Ecto documentation on using put_dynamic_repo sounds like it would be fine for talking to a single runtime-configured database at a time - the Ecto repo module, let’s call it MyApp.DynamicRepo, can be pointed at or use different databases at different times. However it would be only one at a time.
I could put a genserver in front of it to serialise access but that’s likely to be a bottleneck. Or I could hard code (or generate at runtime) a group of repo modules to serve as a “repo pool” and have all the database access code receive a repo module to use for its calls.
Are there saner alternatives that I’m missing here?