Browse Source

Fix storage of market data to store only newly fetched quotes

pull/7814/head
Thomas Kaul 4 days ago
parent
commit
5e9fc02fab
  1. 23
      apps/api/src/services/data-provider/data-provider.service.ts

23
apps/api/src/services/data-provider/data-provider.service.ts

@ -725,9 +725,7 @@ export class DataProviderService implements OnModuleInit {
promises.push( promises.push(
promise.then(async (result) => { promise.then(async (result) => {
// Collect the quotes of this chunk to store only the fetched const fetchedQuotes: (DataProviderResponse & {
// market data, not the entire response
const dataProviderResponses: (DataProviderResponse & {
symbol: string; symbol: string;
})[] = []; })[] = [];
@ -745,14 +743,16 @@ export class DataProviderService implements OnModuleInit {
continue; continue;
} }
dataProviderResponses.push({ ...dataProviderResponse, symbol }); const quote = { ...dataProviderResponse, symbol };
fetchedQuotes.push(quote);
response[ response[
getAssetProfileIdentifier({ getAssetProfileIdentifier({
symbol, symbol,
dataSource: DataSource[dataSource] dataSource: DataSource[dataSource]
}) })
] = { ...dataProviderResponse, symbol }; ] = quote;
this.redisCacheService.set( this.redisCacheService.set(
this.redisCacheService.getQuoteKey({ this.redisCacheService.getQuoteKey({
@ -780,20 +780,19 @@ export class DataProviderService implements OnModuleInit {
marketState: 'open' marketState: 'open'
}; };
dataProviderResponses.push({ const derivedQuote = {
...derivedDataProviderResponse, ...derivedDataProviderResponse,
symbol: `${DEFAULT_CURRENCY}${currency}` symbol: `${DEFAULT_CURRENCY}${currency}`
}); };
fetchedQuotes.push(derivedQuote);
response[ response[
getAssetProfileIdentifier({ getAssetProfileIdentifier({
dataSource: DataSource[dataSource], dataSource: DataSource[dataSource],
symbol: `${DEFAULT_CURRENCY}${currency}` symbol: `${DEFAULT_CURRENCY}${currency}`
}) })
] = { ] = derivedQuote;
...derivedDataProviderResponse,
symbol: `${DEFAULT_CURRENCY}${currency}`
};
this.redisCacheService.set( this.redisCacheService.set(
this.redisCacheService.getQuoteKey({ this.redisCacheService.getQuoteKey({
@ -818,7 +817,7 @@ export class DataProviderService implements OnModuleInit {
try { try {
await this.marketDataService.updateMany({ await this.marketDataService.updateMany({
data: dataProviderResponses data: fetchedQuotes
.filter(({ marketPrice, marketState }) => { .filter(({ marketPrice, marketState }) => {
return ( return (
isNumber(marketPrice) && isNumber(marketPrice) &&

Loading…
Cancel
Save