diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cb617d6a..64bf66cf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Respected the data source attribute in the symbol data endpoint +- Improved the search functionality of the data management (multiple data sources) ## 1.53.0 - 13.09.2021 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 {