From 53adcf55aa7ec7ece5176f700fc1187071faf5f3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 25 Jul 2026 18:14:20 +0200 Subject: [PATCH] Task/rename EnhancedSymbolProfile to EnhancedAssetProfile (#7423) Rename EnhancedSymbolProfile to EnhancedAssetProfile --- .../api/src/app/activities/activities.service.ts | 8 ++++---- apps/api/src/app/admin/admin.controller.ts | 4 ++-- .../asset-profiles/asset-profiles.controller.ts | 4 ++-- .../asset-profiles/asset-profiles.service.ts | 16 ++++++++-------- apps/api/src/app/portfolio/portfolio.service.ts | 14 +++++--------- .../symbol-profile/symbol-profile.service.ts | 8 ++++---- .../holding-detail-dialog.component.ts | 4 ++-- .../src/lib/interfaces/activities.interface.ts | 4 ++-- .../admin-market-data-details.interface.ts | 4 ++-- .../src/lib/interfaces/benchmark.interface.ts | 8 ++++---- ...ce.ts => enhanced-asset-profile.interface.ts} | 2 +- libs/common/src/lib/interfaces/index.ts | 4 ++-- .../interfaces/portfolio-position.interface.ts | 4 ++-- .../asset-profile-response.interface.ts | 4 ++-- .../portfolio-holding-response.interface.ts | 4 ++-- .../public-portfolio-response.interface.ts | 4 ++-- libs/ui/src/lib/services/admin.service.ts | 4 ++-- 17 files changed, 48 insertions(+), 52 deletions(-) rename libs/common/src/lib/interfaces/{enhanced-symbol-profile.interface.ts => enhanced-asset-profile.interface.ts} (96%) diff --git a/apps/api/src/app/activities/activities.service.ts b/apps/api/src/app/activities/activities.service.ts index fbe93d9a0..0a390d4ec 100644 --- a/apps/api/src/app/activities/activities.service.ts +++ b/apps/api/src/app/activities/activities.service.ts @@ -28,7 +28,7 @@ import { ActivitiesResponse, Activity, AssetProfileIdentifier, - EnhancedSymbolProfile, + EnhancedAssetProfile, Filter } from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; @@ -902,10 +902,10 @@ export class ActivitiesService { } public async getStatisticsByCurrency( - currency: EnhancedSymbolProfile['currency'] + currency: EnhancedAssetProfile['currency'] ): Promise<{ - activitiesCount: EnhancedSymbolProfile['activitiesCount']; - dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; + activitiesCount: EnhancedAssetProfile['activitiesCount']; + dateOfFirstActivity: EnhancedAssetProfile['dateOfFirstActivity']; }> { const { _count, _min } = await this.prismaService.order.aggregate({ _count: true, diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 26e0de0ac..9009ded54 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -25,7 +25,7 @@ import { AdminData, AdminUserResponse, AdminUsersResponse, - EnhancedSymbolProfile, + EnhancedAssetProfile, ScraperConfiguration } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; @@ -304,7 +304,7 @@ export class AdminController { @Body() assetProfile: UpdateAssetProfileDto, @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string - ): Promise { + ): Promise { return this.adminService.patchAssetProfileData( { dataSource, symbol }, assetProfile diff --git a/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts b/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts index d74f167a6..6be23c269 100644 --- a/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts +++ b/apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts @@ -9,7 +9,7 @@ import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper'; import { AssetProfileResponse } from '@ghostfolio/common/interfaces'; import { AssetProfilesResponse, - EnhancedSymbolProfile + EnhancedAssetProfile } from '@ghostfolio/common/interfaces'; import { hasPermission } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions'; @@ -126,7 +126,7 @@ export class AssetProfilesController { @Body() assetProfileData: UpdateAssetProfileDataDto, @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string - ): Promise { + ): Promise { if (!this.request.user.settings.settings.isExperimentalFeatures) { throw new HttpException( getReasonPhrase(StatusCodes.NOT_FOUND), diff --git a/apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts b/apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts index b1a36df26..bc6aeff1e 100644 --- a/apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts +++ b/apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts @@ -17,7 +17,7 @@ import { AssetProfileIdentifier, AssetProfileItem, AssetProfilesResponse, - EnhancedSymbolProfile, + EnhancedAssetProfile, Filter } from '@ghostfolio/common/interfaces'; import { MarketDataPreset } from '@ghostfolio/common/types'; @@ -42,9 +42,9 @@ export class AssetProfilesService { dataSource, symbol }: AssetProfileIdentifier): Promise { - let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0; - let currency: EnhancedSymbolProfile['currency'] = '-'; - let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; + let activitiesCount: EnhancedAssetProfile['activitiesCount'] = 0; + let currency: EnhancedAssetProfile['currency'] = '-'; + let dateOfFirstActivity: EnhancedAssetProfile['dateOfFirstActivity']; const isCurrencyAssetProfile = isCurrency(getCurrencyFromSymbol(symbol)); @@ -333,7 +333,7 @@ export class AssetProfilesService { public async updateAssetProfileData( { dataSource, symbol }: AssetProfileIdentifier, assetProfileData: UpdateAssetProfileDataDto - ): Promise { + ): Promise { const notFoundMessage = `Could not find the asset profile for ${symbol} (${dataSource})`; const data = this.getAssetProfileDataUpdate(assetProfileData); @@ -446,9 +446,9 @@ export class AssetProfilesService { const assetProfilePromises: Promise[] = currencyPairs.map( async ({ dataSource, symbol }) => { - let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0; - let currency: EnhancedSymbolProfile['currency'] = '-'; - let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; + let activitiesCount: EnhancedAssetProfile['activitiesCount'] = 0; + let currency: EnhancedAssetProfile['currency'] = '-'; + let dateOfFirstActivity: EnhancedAssetProfile['dateOfFirstActivity']; if (isCurrency(getCurrencyFromSymbol(symbol))) { currency = getCurrencyFromSymbol(symbol); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 24112299d..ca4ead8b8 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -48,7 +48,7 @@ import { AccountsResponse, Activity, AssetProfileIdentifier, - EnhancedSymbolProfile, + EnhancedAssetProfile, Filter, HistoricalDataItem, InvestmentItem, @@ -556,7 +556,7 @@ export class PortfolioService { symbolProfiles.push(...cashSymbolProfiles); const symbolProfileMap: { - [assetProfileIdentifier: string]: EnhancedSymbolProfile; + [assetProfileIdentifier: string]: EnhancedAssetProfile; } = {}; for (const symbolProfile of symbolProfiles) { @@ -793,7 +793,7 @@ export class PortfolioService { holdings: [], name: symbol, sectors: [] - } as EnhancedSymbolProfile); + } as EnhancedAssetProfile); const portfolioCalculator = this.calculatorFactory.createCalculator({ activities, @@ -1579,7 +1579,7 @@ export class PortfolioService { ...new Set(cashDetails.accounts.map(({ currency }) => currency)) ]; - return cashSymbols.map((currency) => { + return cashSymbols.map((currency) => { const account = cashDetails.accounts.find( ({ currency: accountCurrency }) => { return accountCurrency === currency; @@ -1731,11 +1731,7 @@ export class PortfolioService { }; } - private getMarkets({ - assetProfile - }: { - assetProfile: EnhancedSymbolProfile; - }) { + private getMarkets({ assetProfile }: { assetProfile: EnhancedAssetProfile }) { const markets = { [UNKNOWN_KEY]: 0, developedMarkets: 0, diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 3f40db247..1854a9f93 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -3,7 +3,7 @@ import { UNKNOWN_KEY } from '@ghostfolio/common/config'; import { applyAssetProfileOverrides } from '@ghostfolio/common/helper'; import { AssetProfileIdentifier, - EnhancedSymbolProfile, + EnhancedAssetProfile, Holding, ScraperConfiguration } from '@ghostfolio/common/interfaces'; @@ -107,7 +107,7 @@ export class SymbolProfileService { public async getSymbolProfiles( aAssetProfileIdentifiers: AssetProfileIdentifier[] - ): Promise { + ): Promise { return this.prismaService.symbolProfile .findMany({ include: { @@ -139,7 +139,7 @@ export class SymbolProfileService { public async getSymbolProfilesByIds( symbolProfileIds: string[] - ): Promise { + ): Promise { return this.prismaService.symbolProfile .findMany({ include: { @@ -227,7 +227,7 @@ export class SymbolProfileService { }[]; assetProfileOverrides: AssetProfileOverrides; })[] - ): EnhancedSymbolProfile[] { + ): EnhancedAssetProfile[] { return symbolProfiles.map((symbolProfile) => { const symbolProfileWithOverrides = applyAssetProfileOverrides( symbolProfile, diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 8263a4787..50a833aeb 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -14,7 +14,7 @@ import { import { Activity, DataProviderInfo, - EnhancedSymbolProfile, + EnhancedAssetProfile, Filter, LineChartItem, NullableLineChartItem, @@ -121,7 +121,7 @@ export class GfHoldingDetailDialogComponent implements OnInit { protected activitiesCount: number; protected assetClass: string; protected assetProfile: Pick< - EnhancedSymbolProfile, + EnhancedAssetProfile, | 'assetClass' | 'assetSubClass' | 'countries' diff --git a/libs/common/src/lib/interfaces/activities.interface.ts b/libs/common/src/lib/interfaces/activities.interface.ts index 66c310cf4..4b8dd3435 100644 --- a/libs/common/src/lib/interfaces/activities.interface.ts +++ b/libs/common/src/lib/interfaces/activities.interface.ts @@ -1,11 +1,11 @@ -import { EnhancedSymbolProfile } from '@ghostfolio/common/interfaces'; +import { EnhancedAssetProfile } from '@ghostfolio/common/interfaces'; import { AccountWithPlatform } from '@ghostfolio/common/types'; import { Order, Tag } from '@prisma/client'; export interface Activity extends Order { account?: AccountWithPlatform; - assetProfile: EnhancedSymbolProfile; + assetProfile: EnhancedAssetProfile; error?: ActivityError; feeInAssetProfileCurrency: number; feeInBaseCurrency: number; diff --git a/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts b/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts index 441643f81..dc44d0382 100644 --- a/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts +++ b/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts @@ -1,8 +1,8 @@ import { MarketData } from '@prisma/client'; -import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; +import { EnhancedAssetProfile } from './enhanced-asset-profile.interface'; export interface AdminMarketDataDetails { - assetProfile: Partial; + assetProfile: Partial; marketData: MarketData[]; } diff --git a/libs/common/src/lib/interfaces/benchmark.interface.ts b/libs/common/src/lib/interfaces/benchmark.interface.ts index bf85cd752..88628ad15 100644 --- a/libs/common/src/lib/interfaces/benchmark.interface.ts +++ b/libs/common/src/lib/interfaces/benchmark.interface.ts @@ -1,18 +1,18 @@ import { BenchmarkTrend } from '@ghostfolio/common/types/'; -import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; +import { EnhancedAssetProfile } from './enhanced-asset-profile.interface'; export interface Benchmark { - dataSource: EnhancedSymbolProfile['dataSource']; + dataSource: EnhancedAssetProfile['dataSource']; marketCondition: 'ALL_TIME_HIGH' | 'BEAR_MARKET' | 'NEUTRAL_MARKET'; - name: EnhancedSymbolProfile['name']; + name: EnhancedAssetProfile['name']; performances: { allTimeHigh: { date: Date; performancePercent: number; }; }; - symbol: EnhancedSymbolProfile['symbol']; + symbol: EnhancedAssetProfile['symbol']; trend50d: BenchmarkTrend; trend200d: BenchmarkTrend; } diff --git a/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts b/libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts similarity index 96% rename from libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts rename to libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts index 69fdf9f18..9e3a022f7 100644 --- a/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts +++ b/libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts @@ -11,7 +11,7 @@ import { Holding } from './holding.interface'; import { ScraperConfiguration } from './scraper-configuration.interface'; import { Sector } from './sector.interface'; -export interface EnhancedSymbolProfile { +export interface EnhancedAssetProfile { activitiesCount: number; assetClass: AssetClass; assetSubClass: AssetSubClass; diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index deec60ab7..008422f2d 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -13,7 +13,7 @@ import type { BenchmarkProperty } from './benchmark-property.interface'; import type { Benchmark } from './benchmark.interface'; import type { Coupon } from './coupon.interface'; import type { DataProviderInfo } from './data-provider-info.interface'; -import type { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; +import type { EnhancedAssetProfile } from './enhanced-asset-profile.interface'; import type { FilterGroup } from './filter-group.interface'; import type { Filter } from './filter.interface'; import type { FireCalculationCompleteEvent } from './fire-calculation-complete-event.interface'; @@ -143,7 +143,7 @@ export { DataProviderInfo, DataProviderResponse, DividendsResponse, - EnhancedSymbolProfile, + EnhancedAssetProfile, ExportResponse, Filter, FilterGroup, diff --git a/libs/common/src/lib/interfaces/portfolio-position.interface.ts b/libs/common/src/lib/interfaces/portfolio-position.interface.ts index c94a1efa5..cf71b20ca 100644 --- a/libs/common/src/lib/interfaces/portfolio-position.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-position.interface.ts @@ -2,13 +2,13 @@ import { Market, MarketAdvanced } from '@ghostfolio/common/types'; import { Tag } from '@prisma/client'; -import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; +import { EnhancedAssetProfile } from './enhanced-asset-profile.interface'; export interface PortfolioPosition { activitiesCount: number; allocationInPercentage: number; assetProfile: Pick< - EnhancedSymbolProfile, + EnhancedAssetProfile, | 'assetClass' | 'assetSubClass' | 'countries' diff --git a/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts b/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts index 884b0d411..d76188c73 100644 --- a/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts @@ -1,8 +1,8 @@ import { MarketData } from '@prisma/client'; -import { EnhancedSymbolProfile } from '../enhanced-symbol-profile.interface'; +import { EnhancedAssetProfile } from '../enhanced-asset-profile.interface'; export interface AssetProfileResponse { - assetProfile: Partial; + assetProfile: Partial; marketData: MarketData[]; } diff --git a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts index 075234e6a..80eaa6458 100644 --- a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts @@ -1,7 +1,7 @@ import { Benchmark, DataProviderInfo, - EnhancedSymbolProfile, + EnhancedAssetProfile, HistoricalDataItem } from '@ghostfolio/common/interfaces'; @@ -10,7 +10,7 @@ import { Tag } from '@prisma/client'; export interface PortfolioHoldingResponse { activitiesCount: number; assetProfile: Pick< - EnhancedSymbolProfile, + EnhancedAssetProfile, | 'assetClass' | 'assetSubClass' | 'countries' diff --git a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts index 3302f635a..99ac0608b 100644 --- a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts @@ -1,5 +1,5 @@ import { - EnhancedSymbolProfile, + EnhancedAssetProfile, PortfolioDetails, PortfolioPosition } from '@ghostfolio/common/interfaces'; @@ -26,7 +26,7 @@ export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 { Order, 'currency' | 'date' | 'fee' | 'quantity' | 'type' | 'unitPrice' > & { - assetProfile?: EnhancedSymbolProfile; + assetProfile?: EnhancedAssetProfile; value: number; valueInBaseCurrency: number; })[]; diff --git a/libs/ui/src/lib/services/admin.service.ts b/libs/ui/src/lib/services/admin.service.ts index 4d2f6e48f..6a06ef76b 100644 --- a/libs/ui/src/lib/services/admin.service.ts +++ b/libs/ui/src/lib/services/admin.service.ts @@ -16,7 +16,7 @@ import { AssetProfileIdentifier, DataProviderGhostfolioStatusResponse, DataProviderHistoricalResponse, - EnhancedSymbolProfile + EnhancedAssetProfile } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; import { GF_ENVIRONMENT } from '@ghostfolio/ui/environment'; @@ -196,7 +196,7 @@ export class AdminService { url }: UpdateAssetProfileDto ) { - return this.http.patch( + return this.http.patch( `/api/v1/admin/profile-data/${dataSource}/${encodeURIComponent(symbol)}`, { assetClass,