From 675b8070ea98eafe55a42a92a109a1ccbf0c3cf5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 20 Jun 2026 16:30:50 +0200 Subject: [PATCH] Add data gathering mode to symbol profile and gather hourly --- .../data-gathering/data-gathering.service.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts index dfd371a13..2f208a899 100644 --- a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts @@ -156,6 +156,46 @@ export class DataGatheringService { } } + public async gatherHourlySymbols() { + const assetProfileIdentifiers = + await this.getHourlyAssetProfileIdentifiers(); + + if (assetProfileIdentifiers.length <= 0) { + return; + } + + const date = getStartOfUtcDate(new Date()); + + try { + const quotes = await this.dataProviderService.getQuotes({ + items: assetProfileIdentifiers, + useCache: false + }); + + const data: Prisma.MarketDataUpdateInput[] = []; + + for (const { dataSource, symbol } of assetProfileIdentifiers) { + const quote = quotes[symbol]; + + if (quote?.dataSource !== dataSource || !quote.marketPrice) { + continue; + } + + data.push({ + dataSource, + date, + symbol, + marketPrice: quote.marketPrice, + state: 'INTRADAY' + }); + } + + await this.marketDataService.updateMany({ data }); + } catch (error) { + this.logger.error('Could not gather hourly market data', error); + } + } + public async gatherAssetProfiles( aAssetProfileIdentifiers?: AssetProfileIdentifier[] ) {