Browse Source

Feature: Refactor holding filters in public portfolio retrieval

pull/5848/head
Germán Martín 2 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)
// Each holding needs both DATA_SOURCE and SYMBOL filters
if (accessFilter.holdings?.length > 0) {
accessFilter.holdings.forEach((holding) => {
for (const { dataSource, symbol } of accessFilter.holdings) {
portfolioFilters.push(
{
id: holding.dataSource,
id: dataSource,
type: 'DATA_SOURCE' as const
},
{
id: holding.symbol,
id: symbol,
type: 'SYMBOL' as const
}
);
});
}
}
}
@ -185,33 +185,18 @@ export class PublicController {
includeDrafts: false,
sortColumn: 'date',
sortDirection: 'desc',
take: hasMultipleHoldingFilters ? 1000 : 10, // Get more if we need to filter manually
take: 10,
types: [ActivityType.BUY, ActivityType.SELL],
userCurrency: user.settings?.settings.baseCurrency ?? DEFAULT_CURRENCY,
userId: user.id,
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(
'ENABLE_FEATURE_SUBSCRIPTION'
)
? []
: latestActivitiesData.map(
: activities.map(
({
currency,
date,

Loading…
Cancel
Save