Browse Source

Feature/use asset profile resolutions in getQuotes() of FMP service (part 2) (#5750)

* Use asset profile resolutions in getQuotes()
pull/5747/head^2
Thomas Kaul 4 days ago
committed by GitHub
parent
commit
948df81a0d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 42
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

42
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -373,26 +373,42 @@ export class FinancialModelingPrepService implements DataProviderInterface {
{
signal: AbortSignal.timeout(requestTimeout)
}
).then((res) => res.json())
).then(
(res) => res.json() as unknown as { price: number; symbol: string }[]
)
]);
if (assetProfileResolutions.length === symbols.length) {
for (const { currency, symbolTarget } of assetProfileResolutions) {
currencyBySymbolMap[symbolTarget] = { currency };
for (const { currency, symbolTarget } of assetProfileResolutions) {
currencyBySymbolMap[symbolTarget] = { currency };
}
const resolvedSymbols = assetProfileResolutions.map(
({ symbolTarget }) => {
return symbolTarget;
}
} else {
);
const symbolsToFetch = quotes
.map(({ symbol }) => {
return symbol;
})
.filter((symbol) => {
return !resolvedSymbols.includes(symbol);
});
if (symbolsToFetch.length > 0) {
await Promise.all(
quotes.map(({ symbol }) => {
return this.getAssetProfile({
symbolsToFetch.map(async (symbol) => {
const assetProfile = await this.getAssetProfile({
requestTimeout,
symbol
}).then((assetProfile) => {
if (assetProfile?.currency) {
currencyBySymbolMap[symbol] = {
currency: assetProfile.currency
};
}
});
if (assetProfile?.currency) {
currencyBySymbolMap[symbol] = {
currency: assetProfile.currency
};
}
})
);
}

Loading…
Cancel
Save