Browse Source

Task/rename EnhancedSymbolProfile to EnhancedAssetProfile (#7423)

Rename EnhancedSymbolProfile to EnhancedAssetProfile
pull/7425/head
Thomas Kaul 5 days ago
committed by GitHub
parent
commit
53adcf55aa
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 8
      apps/api/src/app/activities/activities.service.ts
  2. 4
      apps/api/src/app/admin/admin.controller.ts
  3. 4
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts
  4. 16
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts
  5. 14
      apps/api/src/app/portfolio/portfolio.service.ts
  6. 8
      apps/api/src/services/symbol-profile/symbol-profile.service.ts
  7. 4
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  8. 4
      libs/common/src/lib/interfaces/activities.interface.ts
  9. 4
      libs/common/src/lib/interfaces/admin-market-data-details.interface.ts
  10. 8
      libs/common/src/lib/interfaces/benchmark.interface.ts
  11. 2
      libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts
  12. 4
      libs/common/src/lib/interfaces/index.ts
  13. 4
      libs/common/src/lib/interfaces/portfolio-position.interface.ts
  14. 4
      libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts
  15. 4
      libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts
  16. 4
      libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts
  17. 4
      libs/ui/src/lib/services/admin.service.ts

8
apps/api/src/app/activities/activities.service.ts

@ -28,7 +28,7 @@ import {
ActivitiesResponse, ActivitiesResponse,
Activity, Activity,
AssetProfileIdentifier, AssetProfileIdentifier,
EnhancedSymbolProfile, EnhancedAssetProfile,
Filter Filter
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { OrderWithAccount } from '@ghostfolio/common/types'; import { OrderWithAccount } from '@ghostfolio/common/types';
@ -902,10 +902,10 @@ export class ActivitiesService {
} }
public async getStatisticsByCurrency( public async getStatisticsByCurrency(
currency: EnhancedSymbolProfile['currency'] currency: EnhancedAssetProfile['currency']
): Promise<{ ): Promise<{
activitiesCount: EnhancedSymbolProfile['activitiesCount']; activitiesCount: EnhancedAssetProfile['activitiesCount'];
dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; dateOfFirstActivity: EnhancedAssetProfile['dateOfFirstActivity'];
}> { }> {
const { _count, _min } = await this.prismaService.order.aggregate({ const { _count, _min } = await this.prismaService.order.aggregate({
_count: true, _count: true,

4
apps/api/src/app/admin/admin.controller.ts

@ -25,7 +25,7 @@ import {
AdminData, AdminData,
AdminUserResponse, AdminUserResponse,
AdminUsersResponse, AdminUsersResponse,
EnhancedSymbolProfile, EnhancedAssetProfile,
ScraperConfiguration ScraperConfiguration
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
@ -304,7 +304,7 @@ export class AdminController {
@Body() assetProfile: UpdateAssetProfileDto, @Body() assetProfile: UpdateAssetProfileDto,
@Param('dataSource') dataSource: DataSource, @Param('dataSource') dataSource: DataSource,
@Param('symbol') symbol: string @Param('symbol') symbol: string
): Promise<EnhancedSymbolProfile> { ): Promise<EnhancedAssetProfile> {
return this.adminService.patchAssetProfileData( return this.adminService.patchAssetProfileData(
{ dataSource, symbol }, { dataSource, symbol },
assetProfile assetProfile

4
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 { AssetProfileResponse } from '@ghostfolio/common/interfaces';
import { import {
AssetProfilesResponse, AssetProfilesResponse,
EnhancedSymbolProfile EnhancedAssetProfile
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { hasPermission } from '@ghostfolio/common/permissions'; import { hasPermission } from '@ghostfolio/common/permissions';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
@ -126,7 +126,7 @@ export class AssetProfilesController {
@Body() assetProfileData: UpdateAssetProfileDataDto, @Body() assetProfileData: UpdateAssetProfileDataDto,
@Param('dataSource') dataSource: DataSource, @Param('dataSource') dataSource: DataSource,
@Param('symbol') symbol: string @Param('symbol') symbol: string
): Promise<EnhancedSymbolProfile> { ): Promise<EnhancedAssetProfile> {
if (!this.request.user.settings.settings.isExperimentalFeatures) { if (!this.request.user.settings.settings.isExperimentalFeatures) {
throw new HttpException( throw new HttpException(
getReasonPhrase(StatusCodes.NOT_FOUND), getReasonPhrase(StatusCodes.NOT_FOUND),

16
apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts

@ -17,7 +17,7 @@ import {
AssetProfileIdentifier, AssetProfileIdentifier,
AssetProfileItem, AssetProfileItem,
AssetProfilesResponse, AssetProfilesResponse,
EnhancedSymbolProfile, EnhancedAssetProfile,
Filter Filter
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { MarketDataPreset } from '@ghostfolio/common/types'; import { MarketDataPreset } from '@ghostfolio/common/types';
@ -42,9 +42,9 @@ export class AssetProfilesService {
dataSource, dataSource,
symbol symbol
}: AssetProfileIdentifier): Promise<AdminMarketDataDetails> { }: AssetProfileIdentifier): Promise<AdminMarketDataDetails> {
let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0; let activitiesCount: EnhancedAssetProfile['activitiesCount'] = 0;
let currency: EnhancedSymbolProfile['currency'] = '-'; let currency: EnhancedAssetProfile['currency'] = '-';
let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; let dateOfFirstActivity: EnhancedAssetProfile['dateOfFirstActivity'];
const isCurrencyAssetProfile = isCurrency(getCurrencyFromSymbol(symbol)); const isCurrencyAssetProfile = isCurrency(getCurrencyFromSymbol(symbol));
@ -333,7 +333,7 @@ export class AssetProfilesService {
public async updateAssetProfileData( public async updateAssetProfileData(
{ dataSource, symbol }: AssetProfileIdentifier, { dataSource, symbol }: AssetProfileIdentifier,
assetProfileData: UpdateAssetProfileDataDto assetProfileData: UpdateAssetProfileDataDto
): Promise<EnhancedSymbolProfile> { ): Promise<EnhancedAssetProfile> {
const notFoundMessage = `Could not find the asset profile for ${symbol} (${dataSource})`; const notFoundMessage = `Could not find the asset profile for ${symbol} (${dataSource})`;
const data = this.getAssetProfileDataUpdate(assetProfileData); const data = this.getAssetProfileDataUpdate(assetProfileData);
@ -446,9 +446,9 @@ export class AssetProfilesService {
const assetProfilePromises: Promise<AssetProfileItem>[] = currencyPairs.map( const assetProfilePromises: Promise<AssetProfileItem>[] = currencyPairs.map(
async ({ dataSource, symbol }) => { async ({ dataSource, symbol }) => {
let activitiesCount: EnhancedSymbolProfile['activitiesCount'] = 0; let activitiesCount: EnhancedAssetProfile['activitiesCount'] = 0;
let currency: EnhancedSymbolProfile['currency'] = '-'; let currency: EnhancedAssetProfile['currency'] = '-';
let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; let dateOfFirstActivity: EnhancedAssetProfile['dateOfFirstActivity'];
if (isCurrency(getCurrencyFromSymbol(symbol))) { if (isCurrency(getCurrencyFromSymbol(symbol))) {
currency = getCurrencyFromSymbol(symbol); currency = getCurrencyFromSymbol(symbol);

14
apps/api/src/app/portfolio/portfolio.service.ts

@ -48,7 +48,7 @@ import {
AccountsResponse, AccountsResponse,
Activity, Activity,
AssetProfileIdentifier, AssetProfileIdentifier,
EnhancedSymbolProfile, EnhancedAssetProfile,
Filter, Filter,
HistoricalDataItem, HistoricalDataItem,
InvestmentItem, InvestmentItem,
@ -556,7 +556,7 @@ export class PortfolioService {
symbolProfiles.push(...cashSymbolProfiles); symbolProfiles.push(...cashSymbolProfiles);
const symbolProfileMap: { const symbolProfileMap: {
[assetProfileIdentifier: string]: EnhancedSymbolProfile; [assetProfileIdentifier: string]: EnhancedAssetProfile;
} = {}; } = {};
for (const symbolProfile of symbolProfiles) { for (const symbolProfile of symbolProfiles) {
@ -793,7 +793,7 @@ export class PortfolioService {
holdings: [], holdings: [],
name: symbol, name: symbol,
sectors: [] sectors: []
} as EnhancedSymbolProfile); } as EnhancedAssetProfile);
const portfolioCalculator = this.calculatorFactory.createCalculator({ const portfolioCalculator = this.calculatorFactory.createCalculator({
activities, activities,
@ -1579,7 +1579,7 @@ export class PortfolioService {
...new Set(cashDetails.accounts.map(({ currency }) => currency)) ...new Set(cashDetails.accounts.map(({ currency }) => currency))
]; ];
return cashSymbols.map<EnhancedSymbolProfile>((currency) => { return cashSymbols.map<EnhancedAssetProfile>((currency) => {
const account = cashDetails.accounts.find( const account = cashDetails.accounts.find(
({ currency: accountCurrency }) => { ({ currency: accountCurrency }) => {
return accountCurrency === currency; return accountCurrency === currency;
@ -1731,11 +1731,7 @@ export class PortfolioService {
}; };
} }
private getMarkets({ private getMarkets({ assetProfile }: { assetProfile: EnhancedAssetProfile }) {
assetProfile
}: {
assetProfile: EnhancedSymbolProfile;
}) {
const markets = { const markets = {
[UNKNOWN_KEY]: 0, [UNKNOWN_KEY]: 0,
developedMarkets: 0, developedMarkets: 0,

8
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 { applyAssetProfileOverrides } from '@ghostfolio/common/helper';
import { import {
AssetProfileIdentifier, AssetProfileIdentifier,
EnhancedSymbolProfile, EnhancedAssetProfile,
Holding, Holding,
ScraperConfiguration ScraperConfiguration
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
@ -107,7 +107,7 @@ export class SymbolProfileService {
public async getSymbolProfiles( public async getSymbolProfiles(
aAssetProfileIdentifiers: AssetProfileIdentifier[] aAssetProfileIdentifiers: AssetProfileIdentifier[]
): Promise<EnhancedSymbolProfile[]> { ): Promise<EnhancedAssetProfile[]> {
return this.prismaService.symbolProfile return this.prismaService.symbolProfile
.findMany({ .findMany({
include: { include: {
@ -139,7 +139,7 @@ export class SymbolProfileService {
public async getSymbolProfilesByIds( public async getSymbolProfilesByIds(
symbolProfileIds: string[] symbolProfileIds: string[]
): Promise<EnhancedSymbolProfile[]> { ): Promise<EnhancedAssetProfile[]> {
return this.prismaService.symbolProfile return this.prismaService.symbolProfile
.findMany({ .findMany({
include: { include: {
@ -227,7 +227,7 @@ export class SymbolProfileService {
}[]; }[];
assetProfileOverrides: AssetProfileOverrides; assetProfileOverrides: AssetProfileOverrides;
})[] })[]
): EnhancedSymbolProfile[] { ): EnhancedAssetProfile[] {
return symbolProfiles.map((symbolProfile) => { return symbolProfiles.map((symbolProfile) => {
const symbolProfileWithOverrides = applyAssetProfileOverrides( const symbolProfileWithOverrides = applyAssetProfileOverrides(
symbolProfile, symbolProfile,

4
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts

@ -14,7 +14,7 @@ import {
import { import {
Activity, Activity,
DataProviderInfo, DataProviderInfo,
EnhancedSymbolProfile, EnhancedAssetProfile,
Filter, Filter,
LineChartItem, LineChartItem,
NullableLineChartItem, NullableLineChartItem,
@ -121,7 +121,7 @@ export class GfHoldingDetailDialogComponent implements OnInit {
protected activitiesCount: number; protected activitiesCount: number;
protected assetClass: string; protected assetClass: string;
protected assetProfile: Pick< protected assetProfile: Pick<
EnhancedSymbolProfile, EnhancedAssetProfile,
| 'assetClass' | 'assetClass'
| 'assetSubClass' | 'assetSubClass'
| 'countries' | 'countries'

4
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 { AccountWithPlatform } from '@ghostfolio/common/types';
import { Order, Tag } from '@prisma/client'; import { Order, Tag } from '@prisma/client';
export interface Activity extends Order { export interface Activity extends Order {
account?: AccountWithPlatform; account?: AccountWithPlatform;
assetProfile: EnhancedSymbolProfile; assetProfile: EnhancedAssetProfile;
error?: ActivityError; error?: ActivityError;
feeInAssetProfileCurrency: number; feeInAssetProfileCurrency: number;
feeInBaseCurrency: number; feeInBaseCurrency: number;

4
libs/common/src/lib/interfaces/admin-market-data-details.interface.ts

@ -1,8 +1,8 @@
import { MarketData } from '@prisma/client'; import { MarketData } from '@prisma/client';
import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; import { EnhancedAssetProfile } from './enhanced-asset-profile.interface';
export interface AdminMarketDataDetails { export interface AdminMarketDataDetails {
assetProfile: Partial<EnhancedSymbolProfile>; assetProfile: Partial<EnhancedAssetProfile>;
marketData: MarketData[]; marketData: MarketData[];
} }

8
libs/common/src/lib/interfaces/benchmark.interface.ts

@ -1,18 +1,18 @@
import { BenchmarkTrend } from '@ghostfolio/common/types/'; import { BenchmarkTrend } from '@ghostfolio/common/types/';
import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; import { EnhancedAssetProfile } from './enhanced-asset-profile.interface';
export interface Benchmark { export interface Benchmark {
dataSource: EnhancedSymbolProfile['dataSource']; dataSource: EnhancedAssetProfile['dataSource'];
marketCondition: 'ALL_TIME_HIGH' | 'BEAR_MARKET' | 'NEUTRAL_MARKET'; marketCondition: 'ALL_TIME_HIGH' | 'BEAR_MARKET' | 'NEUTRAL_MARKET';
name: EnhancedSymbolProfile['name']; name: EnhancedAssetProfile['name'];
performances: { performances: {
allTimeHigh: { allTimeHigh: {
date: Date; date: Date;
performancePercent: number; performancePercent: number;
}; };
}; };
symbol: EnhancedSymbolProfile['symbol']; symbol: EnhancedAssetProfile['symbol'];
trend50d: BenchmarkTrend; trend50d: BenchmarkTrend;
trend200d: BenchmarkTrend; trend200d: BenchmarkTrend;
} }

2
libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts → 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 { ScraperConfiguration } from './scraper-configuration.interface';
import { Sector } from './sector.interface'; import { Sector } from './sector.interface';
export interface EnhancedSymbolProfile { export interface EnhancedAssetProfile {
activitiesCount: number; activitiesCount: number;
assetClass: AssetClass; assetClass: AssetClass;
assetSubClass: AssetSubClass; assetSubClass: AssetSubClass;

4
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 { Benchmark } from './benchmark.interface';
import type { Coupon } from './coupon.interface'; import type { Coupon } from './coupon.interface';
import type { DataProviderInfo } from './data-provider-info.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 { FilterGroup } from './filter-group.interface';
import type { Filter } from './filter.interface'; import type { Filter } from './filter.interface';
import type { FireCalculationCompleteEvent } from './fire-calculation-complete-event.interface'; import type { FireCalculationCompleteEvent } from './fire-calculation-complete-event.interface';
@ -143,7 +143,7 @@ export {
DataProviderInfo, DataProviderInfo,
DataProviderResponse, DataProviderResponse,
DividendsResponse, DividendsResponse,
EnhancedSymbolProfile, EnhancedAssetProfile,
ExportResponse, ExportResponse,
Filter, Filter,
FilterGroup, FilterGroup,

4
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 { Tag } from '@prisma/client';
import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface'; import { EnhancedAssetProfile } from './enhanced-asset-profile.interface';
export interface PortfolioPosition { export interface PortfolioPosition {
activitiesCount: number; activitiesCount: number;
allocationInPercentage: number; allocationInPercentage: number;
assetProfile: Pick< assetProfile: Pick<
EnhancedSymbolProfile, EnhancedAssetProfile,
| 'assetClass' | 'assetClass'
| 'assetSubClass' | 'assetSubClass'
| 'countries' | 'countries'

4
libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts

@ -1,8 +1,8 @@
import { MarketData } from '@prisma/client'; import { MarketData } from '@prisma/client';
import { EnhancedSymbolProfile } from '../enhanced-symbol-profile.interface'; import { EnhancedAssetProfile } from '../enhanced-asset-profile.interface';
export interface AssetProfileResponse { export interface AssetProfileResponse {
assetProfile: Partial<EnhancedSymbolProfile>; assetProfile: Partial<EnhancedAssetProfile>;
marketData: MarketData[]; marketData: MarketData[];
} }

4
libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts

@ -1,7 +1,7 @@
import { import {
Benchmark, Benchmark,
DataProviderInfo, DataProviderInfo,
EnhancedSymbolProfile, EnhancedAssetProfile,
HistoricalDataItem HistoricalDataItem
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
@ -10,7 +10,7 @@ import { Tag } from '@prisma/client';
export interface PortfolioHoldingResponse { export interface PortfolioHoldingResponse {
activitiesCount: number; activitiesCount: number;
assetProfile: Pick< assetProfile: Pick<
EnhancedSymbolProfile, EnhancedAssetProfile,
| 'assetClass' | 'assetClass'
| 'assetSubClass' | 'assetSubClass'
| 'countries' | 'countries'

4
libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts

@ -1,5 +1,5 @@
import { import {
EnhancedSymbolProfile, EnhancedAssetProfile,
PortfolioDetails, PortfolioDetails,
PortfolioPosition PortfolioPosition
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
@ -26,7 +26,7 @@ export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 {
Order, Order,
'currency' | 'date' | 'fee' | 'quantity' | 'type' | 'unitPrice' 'currency' | 'date' | 'fee' | 'quantity' | 'type' | 'unitPrice'
> & { > & {
assetProfile?: EnhancedSymbolProfile; assetProfile?: EnhancedAssetProfile;
value: number; value: number;
valueInBaseCurrency: number; valueInBaseCurrency: number;
})[]; })[];

4
libs/ui/src/lib/services/admin.service.ts

@ -16,7 +16,7 @@ import {
AssetProfileIdentifier, AssetProfileIdentifier,
DataProviderGhostfolioStatusResponse, DataProviderGhostfolioStatusResponse,
DataProviderHistoricalResponse, DataProviderHistoricalResponse,
EnhancedSymbolProfile EnhancedAssetProfile
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { DateRange } from '@ghostfolio/common/types'; import { DateRange } from '@ghostfolio/common/types';
import { GF_ENVIRONMENT } from '@ghostfolio/ui/environment'; import { GF_ENVIRONMENT } from '@ghostfolio/ui/environment';
@ -196,7 +196,7 @@ export class AdminService {
url url
}: UpdateAssetProfileDto }: UpdateAssetProfileDto
) { ) {
return this.http.patch<EnhancedSymbolProfile>( return this.http.patch<EnhancedAssetProfile>(
`/api/v1/admin/profile-data/${dataSource}/${encodeURIComponent(symbol)}`, `/api/v1/admin/profile-data/${dataSource}/${encodeURIComponent(symbol)}`,
{ {
assetClass, assetClass,

Loading…
Cancel
Save