Browse Source

Refactoring

pull/4567/head
Thomas Kaul 4 months ago
parent
commit
89f1d94f95
  1. 5
      apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts
  2. 4
      apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts
  3. 10
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  4. 5
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts
  5. 5
      apps/api/src/app/portfolio/calculator/roi/portfolio-calculator.ts
  6. 5
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

5
apps/api/src/app/portfolio/calculator/mwr/portfolio-calculator.ts

@ -4,12 +4,17 @@ import {
SymbolMetrics SymbolMetrics
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot } from '@ghostfolio/common/models'; import { PortfolioSnapshot } from '@ghostfolio/common/models';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
export class MwrPortfolioCalculator extends PortfolioCalculator { export class MwrPortfolioCalculator extends PortfolioCalculator {
protected calculateOverallPerformance(): PortfolioSnapshot { protected calculateOverallPerformance(): PortfolioSnapshot {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
protected getPerformanceCalculationType() {
return PerformanceCalculationType.MWR;
}
protected getSymbolMetrics({}: { protected getSymbolMetrics({}: {
end: Date; end: Date;
exchangeRates: { [dateString: string]: number }; exchangeRates: { [dateString: string]: number };

4
apps/api/src/app/portfolio/calculator/portfolio-calculator.factory.ts

@ -45,7 +45,6 @@ export class PortfolioCalculatorFactory {
return new MwrPortfolioCalculator({ return new MwrPortfolioCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
calculationType,
currency, currency,
filters, filters,
userId, userId,
@ -60,7 +59,6 @@ export class PortfolioCalculatorFactory {
return new RoaiPortfolioCalculator({ return new RoaiPortfolioCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
calculationType,
currency, currency,
filters, filters,
userId, userId,
@ -75,7 +73,6 @@ export class PortfolioCalculatorFactory {
return new RoiPortfolioCalculator({ return new RoiPortfolioCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
calculationType,
currency, currency,
filters, filters,
userId, userId,
@ -90,7 +87,6 @@ export class PortfolioCalculatorFactory {
return new TwrPortfolioCalculator({ return new TwrPortfolioCalculator({
accountBalanceItems, accountBalanceItems,
activities, activities,
calculationType,
currency, currency,
filters, filters,
userId, userId,

10
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -58,7 +58,6 @@ export abstract class PortfolioCalculator {
protected accountBalanceItems: HistoricalDataItem[]; protected accountBalanceItems: HistoricalDataItem[];
protected activities: PortfolioOrder[]; protected activities: PortfolioOrder[];
private calculationType: PerformanceCalculationType;
private configurationService: ConfigurationService; private configurationService: ConfigurationService;
private currency: string; private currency: string;
private currentRateService: CurrentRateService; private currentRateService: CurrentRateService;
@ -77,7 +76,6 @@ export abstract class PortfolioCalculator {
public constructor({ public constructor({
accountBalanceItems, accountBalanceItems,
activities, activities,
calculationType,
configurationService, configurationService,
currency, currency,
currentRateService, currentRateService,
@ -89,7 +87,6 @@ export abstract class PortfolioCalculator {
}: { }: {
accountBalanceItems: HistoricalDataItem[]; accountBalanceItems: HistoricalDataItem[];
activities: Activity[]; activities: Activity[];
calculationType: PerformanceCalculationType;
configurationService: ConfigurationService; configurationService: ConfigurationService;
currency: string; currency: string;
currentRateService: CurrentRateService; currentRateService: CurrentRateService;
@ -100,7 +97,6 @@ export abstract class PortfolioCalculator {
userId: string; userId: string;
}) { }) {
this.accountBalanceItems = accountBalanceItems; this.accountBalanceItems = accountBalanceItems;
this.calculationType = calculationType;
this.configurationService = configurationService; this.configurationService = configurationService;
this.currency = currency; this.currency = currency;
this.currentRateService = currentRateService; this.currentRateService = currentRateService;
@ -628,6 +624,8 @@ export abstract class PortfolioCalculator {
}; };
} }
protected abstract getPerformanceCalculationType(): PerformanceCalculationType;
public getDataProviderInfos() { public getDataProviderInfos() {
return this.dataProviderInfos; return this.dataProviderInfos;
} }
@ -1078,7 +1076,7 @@ export abstract class PortfolioCalculator {
// Compute in the background // Compute in the background
this.portfolioSnapshotService.addJobToQueue({ this.portfolioSnapshotService.addJobToQueue({
data: { data: {
calculationType: this.calculationType, calculationType: this.getPerformanceCalculationType(),
filters: this.filters, filters: this.filters,
userCurrency: this.currency, userCurrency: this.currency,
userId: this.userId userId: this.userId
@ -1095,7 +1093,7 @@ export abstract class PortfolioCalculator {
// Wait for computation // Wait for computation
await this.portfolioSnapshotService.addJobToQueue({ await this.portfolioSnapshotService.addJobToQueue({
data: { data: {
calculationType: this.calculationType, calculationType: this.getPerformanceCalculationType(),
filters: this.filters, filters: this.filters,
userCurrency: this.currency, userCurrency: this.currency,
userId: this.userId userId: this.userId

5
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts

@ -9,6 +9,7 @@ import {
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models'; import { PortfolioSnapshot, TimelinePosition } from '@ghostfolio/common/models';
import { DateRange } from '@ghostfolio/common/types'; import { DateRange } from '@ghostfolio/common/types';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import { Logger } from '@nestjs/common'; import { Logger } from '@nestjs/common';
import { Big } from 'big.js'; import { Big } from 'big.js';
@ -112,6 +113,10 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator {
}; };
} }
protected getPerformanceCalculationType() {
return PerformanceCalculationType.ROAI;
}
protected getSymbolMetrics({ protected getSymbolMetrics({
chartDateMap, chartDateMap,
dataSource, dataSource,

5
apps/api/src/app/portfolio/calculator/roi/portfolio-calculator.ts

@ -4,12 +4,17 @@ import {
SymbolMetrics SymbolMetrics
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot } from '@ghostfolio/common/models'; import { PortfolioSnapshot } from '@ghostfolio/common/models';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
export class RoiPortfolioCalculator extends PortfolioCalculator { export class RoiPortfolioCalculator extends PortfolioCalculator {
protected calculateOverallPerformance(): PortfolioSnapshot { protected calculateOverallPerformance(): PortfolioSnapshot {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
protected getPerformanceCalculationType() {
return PerformanceCalculationType.ROI;
}
protected getSymbolMetrics({}: { protected getSymbolMetrics({}: {
end: Date; end: Date;
exchangeRates: { [dateString: string]: number }; exchangeRates: { [dateString: string]: number };

5
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -4,12 +4,17 @@ import {
SymbolMetrics SymbolMetrics
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { PortfolioSnapshot } from '@ghostfolio/common/models'; import { PortfolioSnapshot } from '@ghostfolio/common/models';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
export class TwrPortfolioCalculator extends PortfolioCalculator { export class TwrPortfolioCalculator extends PortfolioCalculator {
protected calculateOverallPerformance(): PortfolioSnapshot { protected calculateOverallPerformance(): PortfolioSnapshot {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
protected getPerformanceCalculationType() {
return PerformanceCalculationType.TWR;
}
protected getSymbolMetrics({}: { protected getSymbolMetrics({}: {
end: Date; end: Date;
exchangeRates: { [dateString: string]: number }; exchangeRates: { [dateString: string]: number };

Loading…
Cancel
Save