Browse Source

code review fixes

pull/5329/head
Attila Cseh 2 weeks ago
parent
commit
346342dd45
  1. 5
      CHANGELOG.md
  2. 2
      apps/api/src/app/account/account.controller.ts
  3. 13
      apps/api/src/app/portfolio/portfolio.service.ts

5
CHANGELOG.md

@ -9,10 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Extended the import functionality by tags
- Introduced fuzzy search for the accounts
- Improved the language localization for Polish (`pl`)
- Improved the language localization for Spanish (`es`)
- Introduced fuzzy search for the accounts endpoint
## 2.189.0 - 2025-08-05

2
apps/api/src/app/account/account.controller.ts

@ -97,12 +97,12 @@ export class AccountController {
const filters = this.apiService.buildFiltersFromQueryParams({
filterByDataSource,
filterBySearchQuery,
filterBySymbol
});
return this.portfolioService.getAccountsWithAggregations({
filters,
query: filterBySearchQuery,
userId: impersonationUserId || this.request.user.id,
withExcludedAccounts: true
});

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

@ -86,13 +86,14 @@ import {
parseISO,
set
} from 'date-fns';
import Fuse from 'fuse.js';
import { isEmpty } from 'lodash';
import { PortfolioCalculator } from './calculator/portfolio-calculator';
import { PortfolioCalculatorFactory } from './calculator/portfolio-calculator.factory';
import { RulesService } from './rules.service';
const Fuse = require('fuse.js');
const asiaPacificMarkets = require('../../assets/countries/asia-pacific-markets.json');
const developedMarkets = require('../../assets/countries/developed-markets.json');
const emergingMarkets = require('../../assets/countries/emerging-markets.json');
@ -212,12 +213,10 @@ export class PortfolioService {
public async getAccountsWithAggregations({
filters,
query,
userId,
withExcludedAccounts = false
}: {
filters?: Filter[];
query?: string;
userId: string;
withExcludedAccounts?: boolean;
}): Promise<AccountsResponse> {
@ -227,13 +226,17 @@ export class PortfolioService {
withExcludedAccounts
});
if (query) {
const searchQuery = filters.find(({ type }) => {
return type === 'SEARCH_QUERY';
})?.id;
if (searchQuery) {
const fuse = new Fuse(accounts, {
keys: ['name', 'platform.name'],
threshold: 0.3
});
accounts = fuse.search(query).map(({ item }) => {
accounts = fuse.search(searchQuery).map(({ item }) => {
return item;
});
}

Loading…
Cancel
Save