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 0e7788edb..6d92cec60 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -19,7 +19,7 @@ import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; import { Inject, Injectable, Logger } from '@nestjs/common'; import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; import Big from 'big.js'; -import { format, isValid } from 'date-fns'; +import { eachDayOfInterval, format, isValid } from 'date-fns'; import { groupBy, isEmpty, isNumber } from 'lodash'; import ms from 'ms'; @@ -209,8 +209,6 @@ export class DataProviderService { ): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { - // TODO - const result: { [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; } = {}; @@ -222,16 +220,36 @@ export class DataProviderService { for (const { dataSource, symbol } of aDataGatheringItems) { const dataProvider = this.getDataProvider(dataSource); if (dataProvider.canHandle(symbol)) { - promises.push( - dataProvider - .getHistorical({ - from, - symbol, - to, - requestTimeout: ms('30 seconds') + // TODO: Handle derived currencies + if (symbol === `${DEFAULT_CURRENCY}USX`) { + const data: { + [date: string]: IDataProviderHistoricalResponse; + } = {}; + + for (const date of eachDayOfInterval({ end: to, start: from })) { + data[format(date, DATE_FORMAT)] = { marketPrice: 100 }; + } + + promises.push( + Promise.resolve({ + data, + symbol }) - .then((data) => ({ data: data?.[symbol], symbol })) - ); + ); + } else { + promises.push( + dataProvider + .getHistorical({ + from, + symbol, + to, + requestTimeout: ms('30 seconds') + }) + .then((data) => { + return { symbol, data: data?.[symbol] }; + }) + ); + } } } @@ -244,6 +262,8 @@ export class DataProviderService { Logger.error(error, 'DataProviderService'); } + console.log({ result }); + return result; }