File size: 433 Bytes
c09f67c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export const buildSearchQuery = (input: string) => {
  const trimmed = input.trim();
  if (!trimmed) {
    return "";
  }

  return trimmed
    .split(/\s+/)
    .map((term) => {
      // Escape special characters for PostgreSQL full-text search
      // Special characters: & | ! ( ) : * ' " + - ~
      const escaped = term.toLowerCase().replace(/[&|!():*'"+~-]/g, "\\$&");
      return `${escaped}:*`;
    })
    .join(" & ");
};