mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-30 23:16:52 +00:00
accounts: Move to instance methods, fix races and isolate tests (#1923)
* Bybit: Fix race in TestUpdateAccountInfo and TestWSHandleData * DriveBy rename TestWSHandleData * This doesn't address running with -race=2+ due to the singleton * Accounts: Add account.GetService() * exchange: Assertify TestSetupDefaults * Exchanges: Add account.Service override for testing * Exchanges: Remove duplicate IsWebsocketEnabled test from TestSetupDefaults * Dispatch: Replace nil checks with NilGuard * Engine: Remove deprecated printAccountHoldingsChangeSummary * Dispatcher: Add EnsureRunning method * Accounts: Move singleton accounts service to exchange Accounts * Move singleton accounts service to exchange Accounts This maintains the concept of a global store, whilst allowing exchanges to override it when needed, particularly for testing. APIServer: * Remove getAllActiveAccounts from apiserver Deprecated apiserver only thing using this, so remove it instead of updating it * Update comment for UpdateAccountBalances everywhere * Docs: Add punctuation to function comments * Bybit: Coverage for wsProcessWalletPushData Save
This commit is contained in:
@@ -28,7 +28,6 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/dispatch"
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/account"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/binance"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/binanceus"
|
||||
@@ -539,45 +538,6 @@ func GetRelatableCurrencies(p currency.Pair, incOrig, incUSDT bool) currency.Pai
|
||||
return pairs
|
||||
}
|
||||
|
||||
// GetCollatedExchangeAccountInfoByCoin collates individual exchange account
|
||||
// information and turns it into a map string of exchange.AccountCurrencyInfo
|
||||
func GetCollatedExchangeAccountInfoByCoin(accounts []account.Holdings) map[currency.Code]account.Balance {
|
||||
result := make(map[currency.Code]account.Balance)
|
||||
for x := range accounts {
|
||||
for y := range accounts[x].Accounts {
|
||||
for z := range accounts[x].Accounts[y].Currencies {
|
||||
currencyName := accounts[x].Accounts[y].Currencies[z].Currency
|
||||
total := accounts[x].Accounts[y].Currencies[z].Total
|
||||
onHold := accounts[x].Accounts[y].Currencies[z].Hold
|
||||
avail := accounts[x].Accounts[y].Currencies[z].AvailableWithoutBorrow
|
||||
free := accounts[x].Accounts[y].Currencies[z].Free
|
||||
borrowed := accounts[x].Accounts[y].Currencies[z].Borrowed
|
||||
|
||||
info, ok := result[currencyName]
|
||||
if !ok {
|
||||
accountInfo := account.Balance{
|
||||
Currency: currencyName,
|
||||
Total: total,
|
||||
Hold: onHold,
|
||||
Free: free,
|
||||
AvailableWithoutBorrow: avail,
|
||||
Borrowed: borrowed,
|
||||
}
|
||||
result[currencyName] = accountInfo
|
||||
} else {
|
||||
info.Hold += onHold
|
||||
info.Total += total
|
||||
info.Free += free
|
||||
info.AvailableWithoutBorrow += avail
|
||||
info.Borrowed += borrowed
|
||||
result[currencyName] = info
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// GetExchangeHighestPriceByCurrencyPair returns the exchange with the highest
|
||||
// price for a given currency pair and asset type
|
||||
func GetExchangeHighestPriceByCurrencyPair(p currency.Pair, a asset.Item) (string, error) {
|
||||
|
||||
Reference in New Issue
Block a user