refactor: use trigram search index instead of full text search (#3900)
Co-authored-by: Balu Babu <balub997@gmail.com>
This commit is contained in:
@@ -250,3 +250,40 @@ export function checkEnvironmentAuthProvider(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds escape backslashes to the input so that it can be used inside
|
||||
* SQL LIKE/ILIKE queries. Inspired by PHP's `mysql_real_escape_string`
|
||||
* function.
|
||||
*
|
||||
* Eg. "100%" -> "100\\%"
|
||||
*
|
||||
* Source: https://stackoverflow.com/a/32648526
|
||||
*/
|
||||
export function escapeSqlLikeString(str: string) {
|
||||
if (typeof str != 'string')
|
||||
return str;
|
||||
|
||||
return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) {
|
||||
switch (char) {
|
||||
case "\0":
|
||||
return "\\0";
|
||||
case "\x08":
|
||||
return "\\b";
|
||||
case "\x09":
|
||||
return "\\t";
|
||||
case "\x1a":
|
||||
return "\\z";
|
||||
case "\n":
|
||||
return "\\n";
|
||||
case "\r":
|
||||
return "\\r";
|
||||
case "\"":
|
||||
case "'":
|
||||
case "\\":
|
||||
case "%":
|
||||
return "\\"+char; // prepends a backslash to backslash, percent,
|
||||
// and double/single quotes
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user