Browse Source

Improve validation of non-numeric numbers

pull/2916/head
Thomas Kaul 2 years ago
parent
commit
e110810a50
  1. 44
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

44
apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

@ -22,6 +22,7 @@ import {
} from '@prisma/client'; } from '@prisma/client';
import { addDays, format, isSameDay, isToday } from 'date-fns'; import { addDays, format, isSameDay, isToday } from 'date-fns';
import got from 'got'; import got from 'got';
import { isNumber } from 'lodash';
@Injectable() @Injectable()
export class EodHistoricalDataService implements DataProviderInterface { export class EodHistoricalDataService implements DataProviderInterface {
@ -144,10 +145,20 @@ export class EodHistoricalDataService implements DataProviderInterface {
).json<any>(); ).json<any>();
return response.reduce( return response.reduce(
(result, historicalItem, index, array) => { (result, { close, date }, index, array) => {
result[this.convertFromEodSymbol(symbol)][historicalItem.date] = { if (isNumber(close)) {
marketPrice: historicalItem.close result[this.convertFromEodSymbol(symbol)][date] = {
}; marketPrice: close
};
} else {
Logger.error(
`Could not get historical data for ${symbol} (${this.getName()}) from ${format(
from,
DATE_FORMAT
)} to ${format(to, DATE_FORMAT)}`,
'EodHistoricalDataService'
);
}
return result; return result;
}, },
@ -232,14 +243,23 @@ export class EodHistoricalDataService implements DataProviderInterface {
return lookupItem.symbol === code; return lookupItem.symbol === code;
})?.currency; })?.currency;
result[this.convertFromEodSymbol(code)] = { if (isNumber(close)) {
currency: result[this.convertFromEodSymbol(code)] = {
currency ?? currency:
this.convertFromEodSymbol(code)?.replace(DEFAULT_CURRENCY, ''), currency ??
dataSource: DataSource.EOD_HISTORICAL_DATA, this.convertFromEodSymbol(code)?.replace(DEFAULT_CURRENCY, ''),
marketPrice: close, dataSource: DataSource.EOD_HISTORICAL_DATA,
marketState: isToday(new Date(timestamp * 1000)) ? 'open' : 'closed' marketPrice: close,
}; marketState: isToday(new Date(timestamp * 1000))
? 'open'
: 'closed'
};
} else {
Logger.error(
`Could not get quotes for ${this.convertFromEodSymbol(code)} (${this.getName()})`,
'EodHistoricalDataService'
);
}
return result; return result;
}, },

Loading…
Cancel
Save