From 4b3a94a91a830fccf82c48e1b0aa6cd10e1b2d87 Mon Sep 17 00:00:00 2001 From: Valentin Zickner Date: Wed, 6 Oct 2021 21:36:32 +0200 Subject: [PATCH] add sector data for ETFs Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- .../trackinsight-enhancer.service.ts | 17 +++++++++++++++++ apps/api/src/services/interfaces/interfaces.ts | 1 + 2 files changed, 18 insertions(+) diff --git a/apps/api/src/services/data-provider/trackinsight-enhancer/trackinsight-enhancer.service.ts b/apps/api/src/services/data-provider/trackinsight-enhancer/trackinsight-enhancer.service.ts index fdd8f2c5b..80a33d9c9 100644 --- a/apps/api/src/services/data-provider/trackinsight-enhancer/trackinsight-enhancer.service.ts +++ b/apps/api/src/services/data-provider/trackinsight-enhancer/trackinsight-enhancer.service.ts @@ -5,6 +5,13 @@ import bent from 'bent'; const countries = require('countries-list/dist/countries.json'); const getJSON = bent('json'); +const sectorsMapping = { + 'Consumer Discretionary': 'Consumer Cyclical', + 'Consumer Defensive': 'Consumer Staples', + 'Health Care': 'Healthcare', + 'Information Technology': 'Technology' +}; + export class TrackinsightEnhancerService implements DataEnhancerInterface { public async enhance( symbol: string, @@ -39,6 +46,16 @@ export class TrackinsightEnhancerService implements DataEnhancerInterface { } } + if (!response.sectors || response.sectors.length === 0) { + response.sectors = []; + for (const [name, value] of Object.entries(holdings.sectors)) { + response.sectors.push({ + name: sectorsMapping[name] ?? name, + weight: value.weight + }); + } + } + return Promise.resolve(response); } } diff --git a/apps/api/src/services/interfaces/interfaces.ts b/apps/api/src/services/interfaces/interfaces.ts index a7d2e8d9f..d4913a83b 100644 --- a/apps/api/src/services/interfaces/interfaces.ts +++ b/apps/api/src/services/interfaces/interfaces.ts @@ -45,6 +45,7 @@ export interface IDataProviderResponse { marketPrice: number; marketState: MarketState; name?: string; + sectors?: { name: string; weight: number }[]; url?: string; }