From 5e9fc02fab3d2a1a5bae66993fb32f81b4a3b1b5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 5 Sep 2026 09:32:55 +0200 Subject: [PATCH] Fix storage of market data to store only newly fetched quotes --- .../data-provider/data-provider.service.ts | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 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 e4e49737a..0417315d4 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -725,9 +725,7 @@ export class DataProviderService implements OnModuleInit { promises.push( promise.then(async (result) => { - // Collect the quotes of this chunk to store only the fetched - // market data, not the entire response - const dataProviderResponses: (DataProviderResponse & { + const fetchedQuotes: (DataProviderResponse & { symbol: string; })[] = []; @@ -745,14 +743,16 @@ export class DataProviderService implements OnModuleInit { continue; } - dataProviderResponses.push({ ...dataProviderResponse, symbol }); + const quote = { ...dataProviderResponse, symbol }; + + fetchedQuotes.push(quote); response[ getAssetProfileIdentifier({ symbol, dataSource: DataSource[dataSource] }) - ] = { ...dataProviderResponse, symbol }; + ] = quote; this.redisCacheService.set( this.redisCacheService.getQuoteKey({ @@ -780,20 +780,19 @@ export class DataProviderService implements OnModuleInit { marketState: 'open' }; - dataProviderResponses.push({ + const derivedQuote = { ...derivedDataProviderResponse, symbol: `${DEFAULT_CURRENCY}${currency}` - }); + }; + + fetchedQuotes.push(derivedQuote); response[ getAssetProfileIdentifier({ dataSource: DataSource[dataSource], symbol: `${DEFAULT_CURRENCY}${currency}` }) - ] = { - ...derivedDataProviderResponse, - symbol: `${DEFAULT_CURRENCY}${currency}` - }; + ] = derivedQuote; this.redisCacheService.set( this.redisCacheService.getQuoteKey({ @@ -818,7 +817,7 @@ export class DataProviderService implements OnModuleInit { try { await this.marketDataService.updateMany({ - data: dataProviderResponses + data: fetchedQuotes .filter(({ marketPrice, marketState }) => { return ( isNumber(marketPrice) &&