From 8307bda5627c624d6f1101942398fec1ae3de031 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 18 Feb 2024 13:24:16 +0100 Subject: [PATCH] Eliminate search request to get quotes --- .../eod-historical-data.service.ts | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index 3d3bf39e5..798973be6 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -11,6 +11,7 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; +import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { DEFAULT_CURRENCY, REPLACE_NAME_PARTS @@ -35,7 +36,8 @@ export class EodHistoricalDataService implements DataProviderInterface { private readonly URL = 'https://eodhistoricaldata.com/api'; public constructor( - private readonly configurationService: ConfigurationService + private readonly configurationService: ConfigurationService, + private readonly symbolProfileService: SymbolProfileService ) { this.apiKey = this.configurationService.get('API_KEY_EOD_HISTORICAL_DATA'); } @@ -228,27 +230,22 @@ export class EodHistoricalDataService implements DataProviderInterface { ? [realTimeResponse] : realTimeResponse; - const searchResponse = await Promise.all( - eodHistoricalDataSymbols - .filter((symbol) => { - return !symbol.endsWith('.FOREX'); - }) - .map((symbol) => { - return this.search({ query: symbol }); - }) + const symbolProfiles = await this.symbolProfileService.getSymbolProfiles( + symbols.map((symbol) => { + return { + symbol, + dataSource: this.getName() + }; + }) ); - const lookupItems = searchResponse.flat().map(({ items }) => { - return items[0]; - }); - response = quotes.reduce( ( result: { [symbol: string]: IDataProviderResponse }, { close, code, timestamp } ) => { - const currency = lookupItems.find((lookupItem) => { - return lookupItem.symbol === code; + const currency = symbolProfiles.find(({ symbol }) => { + return symbol === code; })?.currency; if (isNumber(close)) {