From 0c5d4176f30d91ba58a7848969184b7fd25b813d Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:39:32 +0100 Subject: [PATCH] Support multiple symbols in getQuotes() --- .../ghostfolio-scraper-api.service.ts | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/apps/api/src/services/data-provider/ghostfolio-scraper-api/ghostfolio-scraper-api.service.ts b/apps/api/src/services/data-provider/ghostfolio-scraper-api/ghostfolio-scraper-api.service.ts index bd126e235..fb4df11e8 100644 --- a/apps/api/src/services/data-provider/ghostfolio-scraper-api/ghostfolio-scraper-api.service.ts +++ b/apps/api/src/services/data-provider/ghostfolio-scraper-api/ghostfolio-scraper-api.service.ts @@ -84,33 +84,42 @@ export class GhostfolioScraperApiService implements DataProviderInterface { public async getQuotes( aSymbols: string[] ): Promise<{ [symbol: string]: IDataProviderResponse }> { + const response: { [symbol: string]: IDataProviderResponse } = {}; + if (aSymbols.length <= 0) { - return {}; + return response; } try { - const [symbol] = aSymbols; - const [symbolProfile] = await this.symbolProfileService.getSymbolProfiles( - [symbol] + const symbolProfiles = await this.symbolProfileService.getSymbolProfiles( + aSymbols ); - const { marketPrice } = await this.prismaService.marketData.findFirst({ + const marketData = await this.prismaService.marketData.findMany({ + distinct: ['symbol'], orderBy: { date: 'desc' }, + take: aSymbols.length, where: { - symbol + symbol: { + in: aSymbols + } } }); - return { - [symbol]: { - marketPrice, - currency: symbolProfile?.currency, + for (const symbolProfile of symbolProfiles) { + response[symbolProfile.symbol] = { + currency: symbolProfile.currency, dataSource: this.getName(), + marketPrice: marketData.find((marketDataItem) => { + return marketDataItem.symbol === symbolProfile.symbol; + }).marketPrice, marketState: MarketState.delayed - } - }; + }; + } + + return response; } catch (error) { Logger.error(error, 'GhostfolioScraperApiService'); }