asmodehn / xest

Xest: Elixir client for online crypto exchanges
GNU General Public License v3.0
1 stars 9 forks source link

add a :xest_connector app to simplify dependencies ? #9

Open asmodehn opened 3 years ago

asmodehn commented 3 years ago

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

asmodehn commented 1 year 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.