From bd9f59cc135bd9251c3a43b8a694d3f198837f59 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Thu, 16 Sep 2021 19:55:00 +0200 Subject: [PATCH] Improve search functionality for multiple data sources --- .../data-provider/data-provider.service.ts | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index b46c886ac..a9bcf4064 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -150,13 +150,24 @@ export class DataProviderService { } public async search(aSymbol: string): Promise<{ items: LookupItem[] }> { - const { items } = await this.getDataProvider( - this.configurationService.get('DATA_SOURCES')[0] - ).search(aSymbol); + const promises: Promise<{ items: LookupItem[] }>[] = []; + let lookupItems: LookupItem[] = []; - const filteredItems = items.filter((item) => { + for (const dataSource of this.configurationService.get('DATA_SOURCES')) { + promises.push( + this.getDataProvider(DataSource[dataSource]).search(aSymbol) + ); + } + + const searchResults = await Promise.all(promises); + + searchResults.forEach((searchResult) => { + lookupItems = lookupItems.concat(searchResult.items); + }); + + const filteredItems = lookupItems.filter((lookupItem) => { // Only allow symbols with supported currency - return item.currency ? true : false; + return lookupItem.currency ? true : false; }); return {