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> { ): Promise<ImportResponse> {
const userCurrency = this.request.user.Settings.settings.baseCurrency; const userCurrency = this.request.user.Settings.settings.baseCurrency;
const result = await this.importService.getDividends({ const activities = await this.importService.getDividends({
dataSource, dataSource,
symbol, symbol,
userCurrency userCurrency
}); });
if (!result || isEmpty(result)) { return { activities };
throw new HttpException(
getReasonPhrase(StatusCodes.NOT_FOUND),
StatusCodes.NOT_FOUND
);
}
return result;
} }
} }

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

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

@ -5,10 +5,7 @@ import {
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { MarketDataService } from '@ghostfolio/api/services/market-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data.service';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { import { HistoricalDataItem } from '@ghostfolio/common/interfaces';
HistoricalDataItem,
ImportResponse
} from '@ghostfolio/common/interfaces';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { format, subDays } from 'date-fns'; 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); to = addDays(to, 1);
} }
const yahooFinanceSymbol = this.convertToYahooFinanceSymbol(symbol);
try { try {
const historicalResult = await yahooFinance.historical( const historicalResult = await yahooFinance.historical(
yahooFinanceSymbol, this.convertToYahooFinanceSymbol(symbol),
{ {
events: 'dividends', events: 'dividends',
interval: granularity === 'month' ? '1mo' : '1d', interval: granularity === 'month' ? '1mo' : '1d',
@ -227,11 +225,9 @@ export class YahooFinanceService implements DataProviderInterface {
to = addDays(to, 1); to = addDays(to, 1);
} }
const yahooFinanceSymbol = this.convertToYahooFinanceSymbol(aSymbol);
try { try {
const historicalResult = await yahooFinance.historical( const historicalResult = await yahooFinance.historical(
yahooFinanceSymbol, this.convertToYahooFinanceSymbol(aSymbol),
{ {
interval: '1d', interval: '1d',
period1: format(from, DATE_FORMAT), period1: format(from, DATE_FORMAT),

Loading…
Cancel
Save