Browse Source

Improve search log output for unsupported queries

pull/7480/head
Thomas Kaul 1 month ago
parent
commit
8f88eab94c
  1. 7
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts
  2. 5
      apps/api/src/services/data-provider/data-provider.service.ts
  3. 4
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts
  4. 2
      libs/common/src/lib/config.ts
  5. 5
      libs/common/src/lib/helper.ts
  6. 9
      libs/ui/src/lib/assistant/assistant.component.ts

7
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts

@ -17,7 +17,10 @@ import {
DERIVED_CURRENCIES DERIVED_CURRENCIES
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config'; import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config';
import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import {
getAssetProfileIdentifier,
isValidSearchQuery
} from '@ghostfolio/common/helper';
import { import {
DataProviderGhostfolioAssetProfileResponse, DataProviderGhostfolioAssetProfileResponse,
DataProviderHistoricalResponse, DataProviderHistoricalResponse,
@ -342,7 +345,7 @@ export class GhostfolioService {
query = query?.trim(); query = query?.trim();
if (!query || query.length < 2) { if (!isValidSearchQuery(query)) {
return results; return results;
} }

5
apps/api/src/services/data-provider/data-provider.service.ts

@ -20,7 +20,8 @@ import {
getCurrencyFromSymbol, getCurrencyFromSymbol,
getStartOfUtcDate, getStartOfUtcDate,
isCurrency, isCurrency,
isDerivedCurrency isDerivedCurrency,
isValidSearchQuery
} from '@ghostfolio/common/helper'; } from '@ghostfolio/common/helper';
import { import {
AssetProfileIdentifier, AssetProfileIdentifier,
@ -840,7 +841,7 @@ export class DataProviderService implements OnModuleInit {
query = query?.trim(); query = query?.trim();
if (!query || query.length < 2) { if (!isValidSearchQuery(query)) {
return { items: lookupItems }; return { items: lookupItems };
} }

4
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -331,9 +331,7 @@ export class YahooFinanceService implements DataProviderInterface {
} }
} catch (error) { } catch (error) {
if (error?.name === 'BadRequestError') { if (error?.name === 'BadRequestError') {
this.logger.warn( this.logger.warn(`Could not search for "${query}": ${error.message}`);
`The search for "${query}" is not supported: ${error.message}`
);
} else { } else {
this.logger.error(error); this.logger.error(error);
} }

2
libs/common/src/lib/config.ts

@ -287,6 +287,8 @@ export const REPLACE_NAME_PARTS = [
'Xtrackers (IE) Plc -' 'Xtrackers (IE) Plc -'
]; ];
export const SEARCH_QUERY_MINIMUM_LENGTH = 2;
export const SECTORS = [ export const SECTORS = [
'Basic Materials', 'Basic Materials',
'Communication Services', 'Communication Services',

5
libs/common/src/lib/helper.ts

@ -41,6 +41,7 @@ import {
DERIVED_CURRENCIES, DERIVED_CURRENCIES,
ghostfolioFearAndGreedIndexSymbolCryptocurrencies, ghostfolioFearAndGreedIndexSymbolCryptocurrencies,
ghostfolioFearAndGreedIndexSymbolStocks, ghostfolioFearAndGreedIndexSymbolStocks,
SEARCH_QUERY_MINIMUM_LENGTH,
TAG_ID_EXCLUDE_FROM_ANALYSIS TAG_ID_EXCLUDE_FROM_ANALYSIS
} from './config'; } from './config';
import { import {
@ -509,6 +510,10 @@ export function isRootCurrency(aCurrency: string) {
}); });
} }
export function isValidSearchQuery(aQuery: string) {
return aQuery?.trim().length >= SEARCH_QUERY_MINIMUM_LENGTH;
}
export function parseDate(date: string): Date | undefined { export function parseDate(date: string): Date | undefined {
if (!date) { if (!date) {
return undefined; return undefined;

9
libs/ui/src/lib/assistant/assistant.component.ts

@ -202,6 +202,11 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit {
this.searchFormControl.valueChanges this.searchFormControl.valueChanges
.pipe( .pipe(
map((searchTerm) => { map((searchTerm) => {
return searchTerm?.trim();
}),
debounceTime(300),
distinctUntilChanged(),
tap(() => {
this.isLoading = { this.isLoading = {
accounts: true, accounts: true,
assetProfiles: true, assetProfiles: true,
@ -216,11 +221,7 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit {
}; };
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
return searchTerm?.trim();
}), }),
debounceTime(300),
distinctUntilChanged(),
switchMap((searchTerm) => { switchMap((searchTerm) => {
const results = { const results = {
accounts: [], accounts: [],

Loading…
Cancel
Save