diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index df369859b..22e9d19ca 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -7,7 +7,13 @@ import { Filter } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { Account, Order, Platform, Prisma } from '@prisma/client'; +import { + Account, + AccountBalance, + Order, + Platform, + Prisma +} from '@prisma/client'; import { Big } from 'big.js'; import { format } from 'date-fns'; import { groupBy } from 'lodash'; @@ -56,13 +62,14 @@ export class AccountService { orderBy?: Prisma.AccountOrderByWithRelationInput; }): Promise< (Account & { + balances?: AccountBalance[]; Order?: Order[]; Platform?: Platform; })[] > { const { include = {}, skip, take, cursor, where, orderBy } = params; - include.balances = { orderBy: { date: 'desc' }, take: 1 }; + include.balances = { orderBy: { date: 'desc' } }; const accounts = await this.prismaService.account.findMany({ cursor, @@ -76,8 +83,6 @@ export class AccountService { return accounts.map((account) => { account = { ...account, balance: account.balances[0]?.value ?? 0 }; - delete account.balances; - return account; }); } diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index c6c24d6af..d658e4972 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -41,6 +41,7 @@ export class ExportService { ).map( ({ balance, + balances, comment, currency, id, @@ -55,6 +56,7 @@ export class ExportService { return { balance, + balances, comment, currency, id, @@ -94,7 +96,14 @@ export class ExportService { return { meta: { date: new Date().toISOString(), version: environment.version }, - accounts, + accounts: accounts.map(({ balances, ...account }) => { + return { + balances: balances.map(({ date, value }) => { + return { date: date.toISOString(), value }; + }), + ...account + }; + }), platforms: Object.values(platformsMap), tags, activities: activities.map( diff --git a/libs/common/src/lib/interfaces/export.interface.ts b/libs/common/src/lib/interfaces/export.interface.ts index 14a017428..0772159e6 100644 --- a/libs/common/src/lib/interfaces/export.interface.ts +++ b/libs/common/src/lib/interfaces/export.interface.ts @@ -1,7 +1,9 @@ import { Account, Order, Platform, Tag } from '@prisma/client'; export interface Export { - accounts: Omit[]; + accounts: (Omit & { + balances: { date: string; value: number }[]; + })[]; activities: (Omit< Order, | 'accountUserId'