Browse Source

Feature: Refactor holding filters in public portfolio retrieval

pull/5848/head
Germán Martín 3 days ago
parent
commit
f3f82b7311
  1. 27
      apps/api/src/app/endpoints/public/public.controller.ts

27
apps/api/src/app/endpoints/public/public.controller.ts

@ -106,18 +106,18 @@ export class PublicController {
// Add holding filters (symbol + dataSource) // Add holding filters (symbol + dataSource)
// Each holding needs both DATA_SOURCE and SYMBOL filters // Each holding needs both DATA_SOURCE and SYMBOL filters
if (accessFilter.holdings?.length > 0) { if (accessFilter.holdings?.length > 0) {
accessFilter.holdings.forEach((holding) => { for (const { dataSource, symbol } of accessFilter.holdings) {
portfolioFilters.push( portfolioFilters.push(
{ {
id: holding.dataSource, id: dataSource,
type: 'DATA_SOURCE' as const type: 'DATA_SOURCE' as const
}, },
{ {
id: holding.symbol, id: symbol,
type: 'SYMBOL' as const type: 'SYMBOL' as const
} }
); );
}); }
} }
} }
@ -185,33 +185,18 @@ export class PublicController {
includeDrafts: false, includeDrafts: false,
sortColumn: 'date', sortColumn: 'date',
sortDirection: 'desc', sortDirection: 'desc',
take: hasMultipleHoldingFilters ? 1000 : 10, // Get more if we need to filter manually take: 10,
types: [ActivityType.BUY, ActivityType.SELL], types: [ActivityType.BUY, ActivityType.SELL],
userCurrency: user.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY, userCurrency: user.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY,
userId: user.id, userId: user.id,
withExcludedAccountsAndActivities: false withExcludedAccountsAndActivities: false
}); });
let filteredActivities = activities;
if (hasMultipleHoldingFilters && accessFilter.holdings) {
filteredActivities = activities.filter((activity) => {
return accessFilter.holdings.some(
(holding) =>
activity.SymbolProfile.dataSource === holding.dataSource &&
activity.SymbolProfile.symbol === holding.symbol
);
});
}
// Take only the latest 10 activities after filtering
const latestActivitiesData = filteredActivities.slice(0, 10);
// Experimental
const latestActivities = this.configurationService.get( const latestActivities = this.configurationService.get(
'ENABLE_FEATURE_SUBSCRIPTION' 'ENABLE_FEATURE_SUBSCRIPTION'
) )
? [] ? []
: latestActivitiesData.map( : activities.map(
({ ({
currency, currency,
date, date,

Loading…
Cancel
Save