diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 05d0c11de..20257596d 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -31,11 +31,14 @@ import { AccountService } from './account.service'; import { CreateAccountDto } from './create-account.dto'; import { TransferBalanceDto } from './transfer-balance.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') export class AccountController { public constructor( private readonly accountService: AccountService, + private readonly accountBalanceService: AccountBalanceService, private readonly impersonationService: ImpersonationService, private readonly portfolioService: PortfolioService, @Inject(REQUEST) private readonly request: RequestWithUser @@ -116,6 +119,16 @@ export class AccountController { return accountsWithAggregations.accounts[0]; } + @Get(':id/balances') + @UseGuards(AuthGuard('jwt')) + @UseInterceptors(RedactValuesInResponseInterceptor) + public async getAccountBalancesById( + @Param('id') id: string + ): Promise { + + return await this.accountBalanceService.getAccountBalances(id); + } + @Post() @UseGuards(AuthGuard('jwt')) public async createAccount( diff --git a/apps/api/src/app/account/interfaces/account-balances.interface.ts b/apps/api/src/app/account/interfaces/account-balances.interface.ts new file mode 100644 index 000000000..dd1cc3193 --- /dev/null +++ b/apps/api/src/app/account/interfaces/account-balances.interface.ts @@ -0,0 +1,9 @@ +export interface AccountBalances { + balances: AccountBalance[]; +} + +export interface AccountBalance { + date: Date; + id: string; + value: number; +} diff --git a/apps/api/src/services/account-balance/account-balance.service.ts b/apps/api/src/services/account-balance/account-balance.service.ts index 9cd2d31ac..ec4346dad 100644 --- a/apps/api/src/services/account-balance/account-balance.service.ts +++ b/apps/api/src/services/account-balance/account-balance.service.ts @@ -1,3 +1,4 @@ +import { AccountBalances } from '@ghostfolio/api/app/account/interfaces/account-balances.interface'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { Injectable } from '@nestjs/common'; import { AccountBalance, Prisma } from '@prisma/client'; @@ -13,4 +14,18 @@ export class AccountBalanceService { data }); } + + public async getAccountBalances(accountId: string): Promise { + const balances = await this.prismaService.accountBalance.findMany({ + where: { + accountId: accountId, + }, + select: { + date: true, + id: true, + value: true + } + }); + return { balances } + } }