diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index 22e9d19ca..aab4c0766 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -69,7 +69,12 @@ export class AccountService { > { const { include = {}, skip, take, cursor, where, orderBy } = params; - include.balances = { orderBy: { date: 'desc' } }; + const isBalancesIncluded = !!include.balances; + + include.balances = { + orderBy: { date: 'desc' }, + ...(isBalancesIncluded ? {} : { take: 1 }) + }; const accounts = await this.prismaService.account.findMany({ cursor, @@ -83,6 +88,10 @@ export class AccountService { return accounts.map((account) => { account = { ...account, balance: account.balances[0]?.value ?? 0 }; + if (!isBalancesIncluded) { + 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 d658e4972..8b9d2c56c 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -31,6 +31,7 @@ export class ExportService { const accounts = ( await this.accountService.accounts({ include: { + balances: true, Platform: true }, orderBy: { @@ -56,7 +57,9 @@ export class ExportService { return { balance, - balances, + balances: balances.map(({ date, value }) => { + return { date: date.toISOString(), value }; + }), comment, currency, id, @@ -96,14 +99,7 @@ export class ExportService { return { meta: { date: new Date().toISOString(), version: environment.version }, - accounts: accounts.map(({ balances, ...account }) => { - return { - balances: balances.map(({ date, value }) => { - return { date: date.toISOString(), value }; - }), - ...account - }; - }), + accounts, platforms: Object.values(platformsMap), tags, activities: activities.map(