Browse Source

feat(api): implement fuse.js in get holdings

pull/5062/head
KenTandrian 3 days ago
parent
commit
635ad9eff4
  1. 18
      apps/api/src/app/portfolio/portfolio.service.ts

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

@ -86,6 +86,7 @@ import {
parseISO, parseISO,
set set
} from 'date-fns'; } from 'date-fns';
import Fuse from 'fuse.js';
import { isEmpty } from 'lodash'; import { isEmpty } from 'lodash';
import { PortfolioCalculator } from './calculator/portfolio-calculator'; import { PortfolioCalculator } from './calculator/portfolio-calculator';
@ -1049,14 +1050,17 @@ export class PortfolioService {
} }
if (searchQuery) { if (searchQuery) {
positions = positions.filter(({ symbol }) => { const fuse = new Fuse(Object.values(symbolProfileMap), {
const enhancedSymbolProfile = symbolProfileMap[symbol]; keys: ['isin', 'name', 'symbol'],
threshold: 0.3
});
return ( const symbolSearchResults = fuse
enhancedSymbolProfile.isin?.toLowerCase().startsWith(searchQuery) || .search(searchQuery)
enhancedSymbolProfile.name?.toLowerCase().startsWith(searchQuery) || .map(({ item }) => item.symbol);
enhancedSymbolProfile.symbol?.toLowerCase().startsWith(searchQuery)
); positions = positions.filter(({ symbol }) => {
return symbolSearchResults.includes(symbol);
}); });
} }

Loading…
Cancel
Save