package usecase import ( "blockchain/internal/domain/blockchain" "blockchain/internal/domain/repository" "blockchain/internal/domain/usecase" "context" "code.30cm.net/digimon/library-go/errs" "github.com/zeromicro/go-zero/core/logx" ) type BinanceUseCaseParam struct { BinanceRepo repository.DataSourceRepository } type BinanceUseCase struct { BinanceUseCaseParam } func MustBinanceUseCase(param BinanceUseCaseParam) usecase.DataSourceUseCase { return &BinanceUseCase{ BinanceUseCaseParam: param, } } // GetSymbols implements usecase.DataSourceUseCase. func (use *BinanceUseCase) GetSymbols(ctx context.Context) ([]*usecase.Symbol, error) { result, err := use.BinanceRepo.GetSymbols(ctx) if err != nil { // 錯誤代碼 20-201-04 e := errs.ThirdPartyErrorL( blockchain.CodeBlockchain, blockchain.FailedToGetSymbolFormBinanceErrorCode, logx.WithContext(ctx), []logx.LogField{ {Key: "func", Value: "BinanceUseCase.ThirdPartyErrorL"}, {Key: "err", Value: err.Error()}, }, "failed to get symbols from binance").Wrap(err) return nil, e } rpy := make([]*usecase.Symbol, 0, len(result)) for _, item := range result { rpy = append(rpy, &usecase.Symbol{ Symbol: item.Symbol, Status: item.Status, BaseAsset: item.BaseAsset, BaseAssetPrecision: item.BaseAssetPrecision, QuoteAsset: item.QuoteAsset, QuoteAssetPrecision: item.QuoteAssetPrecision, }) } return rpy, nil }