From ec45ad3bdc19abd7764e311efa3912d6e480244c Mon Sep 17 00:00:00 2001 From: "zenix.huang" Date: Tue, 12 Mar 2024 12:10:42 +0900 Subject: [PATCH] feature: add ExchangePublic --- pkg/cache/cache.go | 6 +++--- pkg/cache/cache_test.go | 2 +- pkg/types/exchange.go | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index a1bfb9f84..81b688d19 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -126,7 +126,7 @@ func WithCache(key string, obj interface{}, fetcher DataFetcher) error { return nil } -func LoadExchangeMarketsWithCache(ctx context.Context, ex types.Exchange) (markets types.MarketMap, err error) { +func LoadExchangeMarketsWithCache(ctx context.Context, ex types.ExchangePublic) (markets types.MarketMap, err error) { inMem, ok := util.GetEnvVarBool("USE_MARKETS_CACHE_IN_MEMORY") if ok && inMem { return loadMarketsFromMem(ctx, ex) @@ -137,7 +137,7 @@ func LoadExchangeMarketsWithCache(ctx context.Context, ex types.Exchange) (marke } // loadMarketsFromMem is useful for one process to run multiple bbgos in different go routines. -func loadMarketsFromMem(ctx context.Context, ex types.Exchange) (markets types.MarketMap, _ error) { +func loadMarketsFromMem(ctx context.Context, ex types.ExchangePublic) (markets types.MarketMap, _ error) { exName := ex.Name().String() if globalMarketMemCache.IsOutdated(exName) { op := func() error { @@ -162,7 +162,7 @@ func loadMarketsFromMem(ctx context.Context, ex types.Exchange) (markets types.M return rst, nil } -func loadMarketsFromFile(ctx context.Context, ex types.Exchange) (markets types.MarketMap, err error) { +func loadMarketsFromFile(ctx context.Context, ex types.ExchangePublic) (markets types.MarketMap, err error) { key := fmt.Sprintf("%s-markets", ex.Name()) if futureExchange, implemented := ex.(types.FuturesExchange); implemented { settings := futureExchange.GetFuturesSettings() diff --git a/pkg/cache/cache_test.go b/pkg/cache/cache_test.go index 49ee23ab4..ba89f84b8 100644 --- a/pkg/cache/cache_test.go +++ b/pkg/cache/cache_test.go @@ -67,7 +67,7 @@ func Test_loadMarketsFromMem(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - mockEx := mocks.NewMockExchange(mockCtrl) + mockEx := mocks.NewMockExchangePublic(mockCtrl) mockEx.EXPECT().Name().Return(types.ExchangeName("max")).AnyTimes() mockEx.EXPECT().QueryMarkets(gomock.Any()).Return(nil, errors.New("faked")).Times(1) mockEx.EXPECT().QueryMarkets(gomock.Any()).Return(types.MarketMap{ diff --git a/pkg/types/exchange.go b/pkg/types/exchange.go index b67a9b2b2..bb5344600 100644 --- a/pkg/types/exchange.go +++ b/pkg/types/exchange.go @@ -87,6 +87,12 @@ type Exchange interface { ExchangeTradeService } +//go:generate mockgen -destination=mocks/mock_exchange_public.go -package=mocks . ExchangePublic +type ExchangePublic interface { + ExchangeMinimal + ExchangeMarketDataService +} + // ExchangeBasic is the new type for replacing the original Exchange interface type ExchangeBasic = Exchange