Skip to content

Commit fb063f6

Browse files
committed
refactor(web): partial-evidence-search
1 parent 8f0596e commit fb063f6

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

web/src/hooks/queries/useEvidences.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useQuery } from "@tanstack/react-query";
22

33
import { REFETCH_INTERVAL } from "consts/index";
44
import { useGraphqlBatcher } from "context/GraphqlBatcher";
5+
import { transformSearch } from "utils/transformSearch";
56

67
import { graphql } from "src/graphql";
78
import { EvidenceDetailsFragment, EvidencesQuery } from "src/graphql/graphql";
@@ -45,6 +46,8 @@ export const useEvidences = (evidenceGroup?: string, keywords?: string) => {
4546
const { graphqlBatcher } = useGraphqlBatcher();
4647

4748
const document = keywords ? evidenceSearchQuery : evidencesQuery;
49+
const transformedKeywords = transformSearch(keywords);
50+
4851
return useQuery<{ evidences: EvidenceDetailsFragment[] }>({
4952
queryKey: [keywords ? `evidenceSearchQuery${evidenceGroup}-${keywords}` : `evidencesQuery${evidenceGroup}`],
5053
enabled: isEnabled,
@@ -53,7 +56,7 @@ export const useEvidences = (evidenceGroup?: string, keywords?: string) => {
5356
const result = await graphqlBatcher.fetch({
5457
id: crypto.randomUUID(),
5558
document: document,
56-
variables: { evidenceGroupID: evidenceGroup?.toString(), keywords: keywords },
59+
variables: { evidenceGroupID: evidenceGroup?.toString(), keywords: transformedKeywords },
5760
});
5861

5962
return keywords ? { evidences: [...result.evidenceSearch] } : result;

web/src/utils/transformSearch.ts

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
*
3+
* @param searchString
4+
* @returns A search string to better search with fullTextSearch
5+
*/
6+
export const transformSearch = (searchString?: string) => {
7+
if (!searchString) return null;
8+
const words = searchString
9+
.split(/\s+/)
10+
.map((word) => word.trim())
11+
.filter(Boolean);
12+
13+
const transformedWords = words.map((word) => `${word} | ${word}:*`);
14+
15+
return transformedWords.join(" | ");
16+
};

0 commit comments

Comments
 (0)