Open asmodehn opened 3 years ago
Related to that topic, I recently encountered dependency issues, when moving Xest.Datetime
to another app.
The tests in xest were (dynamically / implicitely) depending on the binance and kraken implementation, which needed behaviours from xest. Yet these were not rebuild, since the explicited dependency was in the opposite direction : xest_kraken
-> xest
meaning the test failed because xest_kraken
was not rebuilt with the updated behaviour.
What we want seems to be similar to a traditional strategy pattern:
xest_kraken
-> xest_connector
which contains all useful protocol and behaviors.
And then xest
-> xest_connector
with a dynamic dispatch to the backend (via a protocol - token pattern - or a behaviour and pattern matching - adapter pattern -, we ll see what seems best.)
Anyway since this was encountered recently and was quite annoying to pin down, I might get to addressing this issue somewhat sooner than expected initially.
The goal is to put there all utilities (like the proxy clock, behaviours?, protocols? ) that a connector can use.
We want to avoid multiple complex two ways dependency
:xest_* <-> :xest
, so we (probably) need an extra:xest_connector
app to have a dependency flow like so::xest -> :xest_connector -> :xest_* -> :xest
This way connector will only need to depend on
:xest_connector
, and we can manage complex dependencies graph only between:xest_connector
and:xest