Browse Source

Export extended by account balances

pull/4390/head
csehatt741 6 months ago
committed by Thomas Kaul
parent
commit
c570bf6572
  1. 13
      apps/api/src/app/account/account.service.ts
  2. 11
      apps/api/src/app/export/export.service.ts
  3. 4
      libs/common/src/lib/interfaces/export.interface.ts

13
apps/api/src/app/account/account.service.ts

@ -7,7 +7,13 @@ import { Filter } from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter'; 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 { Big } from 'big.js';
import { format } from 'date-fns'; import { format } from 'date-fns';
import { groupBy } from 'lodash'; import { groupBy } from 'lodash';
@ -56,13 +62,14 @@ export class AccountService {
orderBy?: Prisma.AccountOrderByWithRelationInput; orderBy?: Prisma.AccountOrderByWithRelationInput;
}): Promise< }): Promise<
(Account & { (Account & {
balances?: AccountBalance[];
Order?: Order[]; Order?: Order[];
Platform?: Platform; Platform?: Platform;
})[] })[]
> { > {
const { include = {}, skip, take, cursor, where, orderBy } = params; 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({ const accounts = await this.prismaService.account.findMany({
cursor, cursor,
@ -76,8 +83,6 @@ export class AccountService {
return accounts.map((account) => { return accounts.map((account) => {
account = { ...account, balance: account.balances[0]?.value ?? 0 }; account = { ...account, balance: account.balances[0]?.value ?? 0 };
delete account.balances;
return account; return account;
}); });
} }

11
apps/api/src/app/export/export.service.ts

@ -41,6 +41,7 @@ export class ExportService {
).map( ).map(
({ ({
balance, balance,
balances,
comment, comment,
currency, currency,
id, id,
@ -55,6 +56,7 @@ export class ExportService {
return { return {
balance, balance,
balances,
comment, comment,
currency, currency,
id, id,
@ -94,7 +96,14 @@ export class ExportService {
return { return {
meta: { date: new Date().toISOString(), version: environment.version }, 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), platforms: Object.values(platformsMap),
tags, tags,
activities: activities.map( activities: activities.map(

4
libs/common/src/lib/interfaces/export.interface.ts

@ -1,7 +1,9 @@
import { Account, Order, Platform, Tag } from '@prisma/client'; import { Account, Order, Platform, Tag } from '@prisma/client';
export interface Export { export interface Export {
accounts: Omit<Account, 'createdAt' | 'updatedAt' | 'userId'>[]; accounts: (Omit<Account, 'createdAt' | 'updatedAt' | 'userId'> & {
balances: { date: string; value: number }[];
})[];
activities: (Omit< activities: (Omit<
Order, Order,
| 'accountUserId' | 'accountUserId'

Loading…
Cancel
Save