Browse Source

Improve handling of derived currencies (getHistoricalRaw())

pull/2891/head
Thomas Kaul 2 years ago
parent
commit
8205c7e3f1
  1. 44
      apps/api/src/services/data-provider/data-provider.service.ts

44
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;
}

Loading…
Cancel
Save