Packages
tai
0.0.8
0.0.75
0.0.74
0.0.73
0.0.72
0.0.71
0.0.70
0.0.69
0.0.68
0.0.67
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
0.0.53
0.0.52
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
A composable, real time, market data and trade execution toolkit
Current section
Files
Jump to
Current section
Files
lib/tai/exchanges/boot/asset_balances.ex
defmodule Tai.Exchanges.Boot.AssetBalances do
@type adapter :: Tai.Exchanges.Adapter.t()
@spec hydrate(adapter :: adapter) :: :ok | {:error, reason :: term}
def hydrate(adapter) do
adapter.accounts
|> Enum.reduce(
:ok,
&fetch_and_upsert(&1, &2, adapter)
)
end
defp fetch_and_upsert({account_id, _}, :ok, adapter) do
with {:ok, balances} <- Tai.Exchanges.Exchange.asset_balances(adapter, account_id) do
Enum.each(balances, &Tai.Exchanges.AssetBalances.upsert/1)
:ok
else
{:error, _} = error ->
error
end
end
defp fetch_and_upsert({_, _}, {:error, _} = error, _), do: error
end