Browse Source

Refactoring

pull/649/head
Thomas 4 years ago
parent
commit
88a46ff90c
  1. 6
      apps/api/src/app/account/account.controller.ts
  2. 2
      apps/api/src/app/portfolio/portfolio-service.strategy.ts
  3. 27
      apps/api/src/app/portfolio/portfolio.controller.ts
  4. 6
      apps/api/src/app/portfolio/portfolio.module.ts

6
apps/api/src/app/account/account.controller.ts

@ -1,4 +1,4 @@
import { PortfolioServiceFactory } from '@ghostfolio/api/app/portfolio/portfolio-service.factory';
import { PortfolioServiceStrategy } from '@ghostfolio/api/app/portfolio/portfolio-service.strategy';
import { UserService } from '@ghostfolio/api/app/user/user.service';
import {
nullifyValuesInObject,
@ -35,7 +35,7 @@ export class AccountController {
public constructor(
private readonly accountService: AccountService,
private readonly impersonationService: ImpersonationService,
private readonly portfolioServiceFactory: PortfolioServiceFactory,
private readonly portfolioServiceStrategy: PortfolioServiceStrategy,
@Inject(REQUEST) private readonly request: RequestWithUser,
private readonly userService: UserService
) {}
@ -91,7 +91,7 @@ export class AccountController {
this.request.user.id
);
let accountsWithAggregations = await this.portfolioServiceFactory
let accountsWithAggregations = await this.portfolioServiceStrategy
.get()
.getAccountsWithAggregations(impersonationUserId || this.request.user.id);

2
apps/api/src/app/portfolio/portfolio-service.factory.ts → apps/api/src/app/portfolio/portfolio-service.strategy.ts

@ -6,7 +6,7 @@ import { PortfolioService } from './portfolio.service';
import { PortfolioServiceNew } from './portfolio.service-new';
@Injectable()
export class PortfolioServiceFactory {
export class PortfolioServiceStrategy {
public constructor(
private readonly portfolioService: PortfolioService,
private readonly portfolioServiceNew: PortfolioServiceNew,

27
apps/api/src/app/portfolio/portfolio.controller.ts

@ -35,7 +35,7 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { PortfolioPositionDetail } from './interfaces/portfolio-position-detail.interface';
import { PortfolioPositions } from './interfaces/portfolio-positions.interface';
import { PortfolioServiceFactory } from './portfolio-service.factory';
import { PortfolioServiceStrategy } from './portfolio-service.strategy';
@Controller('portfolio')
export class PortfolioController {
@ -43,7 +43,7 @@ export class PortfolioController {
private readonly accessService: AccessService,
private readonly configurationService: ConfigurationService,
private readonly exchangeRateDataService: ExchangeRateDataService,
private readonly portfolioServiceFactory: PortfolioServiceFactory,
private readonly portfolioServiceStrategy: PortfolioServiceStrategy,
@Inject(REQUEST) private readonly request: RequestWithUser,
private readonly userService: UserService
) {}
@ -55,7 +55,7 @@ export class PortfolioController {
@Query('range') range,
@Res() res: Response
): Promise<PortfolioChart> {
const historicalDataContainer = await this.portfolioServiceFactory
const historicalDataContainer = await this.portfolioServiceStrategy
.get()
.getChart(impersonationId, range);
@ -114,9 +114,10 @@ export class PortfolioController {
let hasError = false;
const { accounts, holdings, hasErrors } = await this.portfolioServiceFactory
.get()
.getDetails(impersonationId, this.request.user.id, range);
const { accounts, holdings, hasErrors } =
await this.portfolioServiceStrategy
.get()
.getDetails(impersonationId, this.request.user.id, range);
if (hasErrors || hasNotDefinedValuesInObject(holdings)) {
hasError = true;
@ -174,7 +175,7 @@ export class PortfolioController {
return <any>res.json({});
}
let investments = await this.portfolioServiceFactory
let investments = await this.portfolioServiceStrategy
.get()
.getInvestments(impersonationId);
@ -203,7 +204,7 @@ export class PortfolioController {
@Query('range') range,
@Res() res: Response
): Promise<{ hasErrors: boolean; performance: PortfolioPerformance }> {
const performanceInformation = await this.portfolioServiceFactory
const performanceInformation = await this.portfolioServiceStrategy
.get()
.getPerformance(impersonationId, range);
@ -227,7 +228,7 @@ export class PortfolioController {
@Query('range') range,
@Res() res: Response
): Promise<PortfolioPositions> {
const result = await this.portfolioServiceFactory
const result = await this.portfolioServiceStrategy
.get()
.getPositions(impersonationId, range);
@ -268,7 +269,7 @@ export class PortfolioController {
hasDetails = user.subscription.type === 'Premium';
}
const { holdings } = await this.portfolioServiceFactory
const { holdings } = await this.portfolioServiceStrategy
.get()
.getDetails(access.userId, access.userId);
@ -311,7 +312,7 @@ export class PortfolioController {
public async getSummary(
@Headers('impersonation-id') impersonationId
): Promise<PortfolioSummary> {
let summary = await this.portfolioServiceFactory
let summary = await this.portfolioServiceStrategy
.get()
.getSummary(impersonationId);
@ -342,7 +343,7 @@ export class PortfolioController {
@Headers('impersonation-id') impersonationId: string,
@Param('symbol') symbol
): Promise<PortfolioPositionDetail> {
let position = await this.portfolioServiceFactory
let position = await this.portfolioServiceStrategy
.get()
.getPosition(impersonationId, symbol);
@ -386,7 +387,7 @@ export class PortfolioController {
return <any>(
res.json(
await this.portfolioServiceFactory.get().getReport(impersonationId)
await this.portfolioServiceStrategy.get().getReport(impersonationId)
)
);
}

6
apps/api/src/app/portfolio/portfolio.module.ts

@ -13,14 +13,14 @@ import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile.mod
import { Module } from '@nestjs/common';
import { CurrentRateService } from './current-rate.service';
import { PortfolioServiceFactory } from './portfolio-service.factory';
import { PortfolioServiceStrategy } from './portfolio-service.strategy';
import { PortfolioController } from './portfolio.controller';
import { PortfolioService } from './portfolio.service';
import { PortfolioServiceNew } from './portfolio.service-new';
import { RulesService } from './rules.service';
@Module({
exports: [PortfolioServiceFactory],
exports: [PortfolioServiceStrategy],
imports: [
AccessModule,
ConfigurationModule,
@ -40,7 +40,7 @@ import { RulesService } from './rules.service';
CurrentRateService,
PortfolioService,
PortfolioServiceNew,
PortfolioServiceFactory,
PortfolioServiceStrategy,
RulesService
]
})

Loading…
Cancel
Save