Browse Source

Refactoring

pull/2484/head
Thomas 2 years ago
parent
commit
c0381114d1
  1. 12
      apps/api/src/app/account/account.controller.ts
  2. 9
      apps/api/src/app/account/interfaces/account-balances.interface.ts
  3. 9
      apps/api/src/services/account-balance/account-balance.service.ts
  4. 2
      libs/common/src/lib/interfaces/index.ts
  5. 5
      libs/common/src/lib/interfaces/responses/account-balances-response.interface.ts

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

@ -1,8 +1,12 @@
import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service';
import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response.interceptor'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response.interceptor';
import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service';
import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service';
import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config';
import { Accounts } from '@ghostfolio/common/interfaces'; import {
AccountBalancesResponse,
Accounts
} from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import type { import type {
AccountWithValue, AccountWithValue,
@ -31,8 +35,6 @@ import { AccountService } from './account.service';
import { CreateAccountDto } from './create-account.dto'; import { CreateAccountDto } from './create-account.dto';
import { TransferBalanceDto } from './transfer-balance.dto'; import { TransferBalanceDto } from './transfer-balance.dto';
import { UpdateAccountDto } from './update-account.dto'; import { UpdateAccountDto } from './update-account.dto';
import { AccountBalances } from './interfaces/account-balances.interface';
import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service';
@Controller('account') @Controller('account')
export class AccountController { export class AccountController {
@ -42,7 +44,7 @@ export class AccountController {
private readonly impersonationService: ImpersonationService, private readonly impersonationService: ImpersonationService,
private readonly portfolioService: PortfolioService, private readonly portfolioService: PortfolioService,
@Inject(REQUEST) private readonly request: RequestWithUser @Inject(REQUEST) private readonly request: RequestWithUser
) { } ) {}
@Delete(':id') @Delete(':id')
@UseGuards(AuthGuard('jwt')) @UseGuards(AuthGuard('jwt'))
@ -124,7 +126,7 @@ export class AccountController {
@UseInterceptors(RedactValuesInResponseInterceptor) @UseInterceptors(RedactValuesInResponseInterceptor)
public async getAccountBalancesById( public async getAccountBalancesById(
@Param('id') id: string @Param('id') id: string
): Promise<AccountBalances> { ): Promise<AccountBalancesResponse> {
return this.accountBalanceService.getAccountBalances({ return this.accountBalanceService.getAccountBalances({
accountId: id, accountId: id,
userId: this.request.user.id userId: this.request.user.id

9
apps/api/src/app/account/interfaces/account-balances.interface.ts

@ -1,9 +0,0 @@
export interface AccountBalances {
balances: AccountBalance[];
}
export interface AccountBalance {
date: Date;
id: string;
value: number;
}

9
apps/api/src/services/account-balance/account-balance.service.ts

@ -1,11 +1,11 @@
import { AccountBalances } from '@ghostfolio/api/app/account/interfaces/account-balances.interface';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { AccountBalancesResponse } from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { AccountBalance, Prisma } from '@prisma/client'; import { AccountBalance, Prisma } from '@prisma/client';
@Injectable() @Injectable()
export class AccountBalanceService { export class AccountBalanceService {
public constructor(private readonly prismaService: PrismaService) { } public constructor(private readonly prismaService: PrismaService) {}
public async createAccountBalance( public async createAccountBalance(
data: Prisma.AccountBalanceCreateInput data: Prisma.AccountBalanceCreateInput
@ -21,8 +21,11 @@ export class AccountBalanceService {
}: { }: {
accountId: string; accountId: string;
userId: string; userId: string;
}): Promise<AccountBalances> { }): Promise<AccountBalancesResponse> {
const balances = await this.prismaService.accountBalance.findMany({ const balances = await this.prismaService.accountBalance.findMany({
orderBy: {
date: 'asc'
},
select: { select: {
date: true, date: true,
id: true, id: true,

2
libs/common/src/lib/interfaces/index.ts

@ -33,6 +33,7 @@ import type { PortfolioReport } from './portfolio-report.interface';
import type { PortfolioSummary } from './portfolio-summary.interface'; import type { PortfolioSummary } from './portfolio-summary.interface';
import type { Position } from './position.interface'; import type { Position } from './position.interface';
import type { Product } from './product'; import type { Product } from './product';
import type { AccountBalancesResponse } from './responses/account-balances-response.interface';
import type { BenchmarkResponse } from './responses/benchmark-response.interface'; import type { BenchmarkResponse } from './responses/benchmark-response.interface';
import type { ResponseError } from './responses/errors.interface'; import type { ResponseError } from './responses/errors.interface';
import type { ImportResponse } from './responses/import-response.interface'; import type { ImportResponse } from './responses/import-response.interface';
@ -49,6 +50,7 @@ import type { User } from './user.interface';
export { export {
Access, Access,
AccountBalancesResponse,
Accounts, Accounts,
AdminData, AdminData,
AdminJobs, AdminJobs,

5
libs/common/src/lib/interfaces/responses/account-balances-response.interface.ts

@ -0,0 +1,5 @@
import { AccountBalance } from '@prisma/client';
export interface AccountBalancesResponse {
balances: Pick<AccountBalance, 'date' | 'id' | 'value'>[];
}
Loading…
Cancel
Save