Browse Source

Refactoring

pull/1560/head
Thomas 3 years ago
parent
commit
7743d69b9e
  1. 11
      apps/api/src/app/import/import.controller.ts
  2. 26
      apps/api/src/app/import/import.service.ts
  3. 1
      apps/api/src/app/symbol/symbol.controller.ts
  4. 5
      apps/api/src/app/symbol/symbol.service.ts
  5. 8
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

11
apps/api/src/app/import/import.controller.ts

@ -92,19 +92,12 @@ export class ImportController {
): Promise<ImportResponse> {
const userCurrency = this.request.user.Settings.settings.baseCurrency;
const result = await this.importService.getDividends({
const activities = await this.importService.getDividends({
dataSource,
symbol,
userCurrency
});
if (!result || isEmpty(result)) {
throw new HttpException(
getReasonPhrase(StatusCodes.NOT_FOUND),
StatusCodes.NOT_FOUND
);
}
return result;
return { activities };
}
}

26
apps/api/src/app/import/import.service.ts

@ -7,7 +7,7 @@ import { DataProviderService } from '@ghostfolio/api/services/data-provider/data
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service';
import { parseDate } from '@ghostfolio/common/helper';
import { ImportResponse, UniqueAsset } from '@ghostfolio/common/interfaces';
import { UniqueAsset } from '@ghostfolio/common/interfaces';
import {
AccountWithPlatform,
OrderWithAccount
@ -33,17 +33,11 @@ export class ImportService {
dataSource,
symbol,
userCurrency
}: UniqueAsset & { userCurrency: string }): Promise<ImportResponse> {
}: UniqueAsset & { userCurrency: string }): Promise<Activity[]> {
try {
const { firstBuyDate, historicalData, orders } =
await this.portfolioService.getPosition(dataSource, undefined, symbol);
const accounts = orders.map(({ Account }) => {
return Account;
});
const Account = this.isUniqueAccount(accounts) ? accounts[0] : undefined;
const [[assetProfile], dividends] = await Promise.all([
this.symbolProfileService.getSymbolProfiles([
{
@ -60,9 +54,13 @@ export class ImportService {
})
]);
return {
activities: Object.entries(dividends).map(
([dateString, { marketPrice }]) => {
const accounts = orders.map((order) => {
return order.Account;
});
const Account = this.isUniqueAccount(accounts) ? accounts[0] : undefined;
return Object.entries(dividends).map(([dateString, { marketPrice }]) => {
const quantity =
historicalData.find((historicalDataItem) => {
return historicalDataItem.date === dateString;
@ -95,11 +93,9 @@ export class ImportService {
userCurrency
)
};
}
)
};
});
} catch {
return { activities: [] };
return [];
}
}

1
apps/api/src/app/symbol/symbol.controller.ts

@ -1,7 +1,6 @@
import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request.interceptor';
import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response.interceptor';
import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces';
import { ImportResponse } from '@ghostfolio/common/interfaces';
import {
Controller,
Get,

5
apps/api/src/app/symbol/symbol.service.ts

@ -5,10 +5,7 @@ import {
} from '@ghostfolio/api/services/interfaces/interfaces';
import { MarketDataService } from '@ghostfolio/api/services/market-data.service';
import { DATE_FORMAT } from '@ghostfolio/common/helper';
import {
HistoricalDataItem,
ImportResponse
} from '@ghostfolio/common/interfaces';
import { HistoricalDataItem } from '@ghostfolio/common/interfaces';
import { Injectable, Logger } from '@nestjs/common';
import { format, subDays } from 'date-fns';

8
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -175,11 +175,9 @@ export class YahooFinanceService implements DataProviderInterface {
to = addDays(to, 1);
}
const yahooFinanceSymbol = this.convertToYahooFinanceSymbol(symbol);
try {
const historicalResult = await yahooFinance.historical(
yahooFinanceSymbol,
this.convertToYahooFinanceSymbol(symbol),
{
events: 'dividends',
interval: granularity === 'month' ? '1mo' : '1d',
@ -227,11 +225,9 @@ export class YahooFinanceService implements DataProviderInterface {
to = addDays(to, 1);
}
const yahooFinanceSymbol = this.convertToYahooFinanceSymbol(aSymbol);
try {
const historicalResult = await yahooFinance.historical(
yahooFinanceSymbol,
this.convertToYahooFinanceSymbol(aSymbol),
{
interval: '1d',
period1: format(from, DATE_FORMAT),

Loading…
Cancel
Save