Browse Source

export extended by asset profiles

pull/5165/head
Attila Cseh 1 week ago
committed by Thomas Kaul
parent
commit
85dfa53e2b
  1. 60
      apps/api/src/app/export/export.service.ts
  2. 1
      libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts
  3. 5
      libs/common/src/lib/interfaces/export.interface.ts

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

@ -6,7 +6,7 @@ import { Filter, Export } from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common';
import { Platform, Prisma } from '@prisma/client';
import { groupBy } from 'lodash';
import { groupBy, uniqBy } from 'lodash';
@Injectable()
export class ExportService {
@ -108,6 +108,15 @@ export class ExportService {
}
);
const assetProfiles = uniqBy(
activities.map(({ SymbolProfile }) => {
return SymbolProfile;
}),
({ id }) => {
return id;
}
);
const tags = (await this.tagService.getTagsForUser(userId))
.filter(
({ id, isUsed }) =>
@ -128,6 +137,54 @@ export class ExportService {
return {
meta: { date: new Date().toISOString(), version: environment.version },
accounts,
assetProfiles: assetProfiles.map(
({
assetClass,
assetSubClass,
comment,
countries,
currency,
cusip,
dataSource,
figi,
figiComposite,
figiShareClass,
holdings,
id,
isActive,
isin,
name,
scraperConfiguration,
sectors,
symbol,
symbolMapping,
url
}) => {
return {
assetClass,
assetSubClass,
comment,
countries: countries as unknown as Prisma.JsonArray,
currency,
cusip,
dataSource,
figi,
figiComposite,
figiShareClass,
holdings: holdings as unknown as Prisma.JsonArray,
id,
isActive,
isin,
name,
scraperConfiguration:
scraperConfiguration as unknown as Prisma.JsonArray,
sectors: sectors as unknown as Prisma.JsonArray,
symbol,
symbolMapping,
url
};
}
),
platforms: Object.values(platformsMap),
tags,
activities: activities.map(
@ -145,6 +202,7 @@ export class ExportService {
unitPrice
}) => {
return {
assetProfileId: SymbolProfile.userId ? SymbolProfile.id : undefined,
accountId,
comment,
fee,

1
libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts

@ -14,6 +14,7 @@ export interface EnhancedSymbolProfile {
countries: Country[];
createdAt: Date;
currency?: string;
cusip?: string;
dataProviderInfo?: DataProviderInfo;
dataSource: DataSource;
dateOfFirstActivity?: Date;

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

@ -1,4 +1,4 @@
import { Account, Order, Platform, Tag } from '@prisma/client';
import { Account, Order, Platform, SymbolProfile, Tag } from '@prisma/client';
import { AccountBalance } from './account-balance.interface';
@ -15,7 +15,8 @@ export interface Export {
| 'symbolProfileId'
| 'updatedAt'
| 'userId'
> & { date: string; symbol: string })[];
> & { assetProfileId?: string; date: string; symbol: string })[];
assetProfiles: Omit<SymbolProfile, 'createdAt' | 'updatedAt' | 'userId'>[];
meta: {
date: string;
version: string;

Loading…
Cancel
Save