fix(search): Fix handling of quoted wildcard patterns in field-specific search queries and add tests for location-based wildcard phrase searches
This commit is contained in:
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@push.rocks/smartdata',
|
||||
version: '5.12.1',
|
||||
version: '5.12.2',
|
||||
description: 'An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.'
|
||||
}
|
||||
|
@ -397,7 +397,12 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
||||
const wildcardField = q.match(/^(\w+):(.+[*?].*)$/);
|
||||
if (wildcardField) {
|
||||
const field = wildcardField[1];
|
||||
const pattern = wildcardField[2];
|
||||
// Support quoted wildcard patterns: strip surrounding quotes
|
||||
let pattern = wildcardField[2];
|
||||
if ((pattern.startsWith('"') && pattern.endsWith('"')) ||
|
||||
(pattern.startsWith("'") && pattern.endsWith("'"))) {
|
||||
pattern = pattern.slice(1, -1);
|
||||
}
|
||||
if (!searchableFields.includes(field)) {
|
||||
throw new Error(`Field '${field}' is not searchable for class ${this.name}`);
|
||||
}
|
||||
@ -421,7 +426,8 @@ export class SmartDataDbDoc<T extends TImplements, TImplements, TManager extends
|
||||
parts.length > 1 && hasColon &&
|
||||
!q.includes(' AND ') && !q.includes(' OR ') && !q.includes(' NOT ') &&
|
||||
!q.includes('(') && !q.includes(')') &&
|
||||
!q.includes('[') && !q.includes(']')
|
||||
!q.includes('[') && !q.includes(']') &&
|
||||
!q.includes('"') && !q.includes("'")
|
||||
) {
|
||||
const andConds = parts.map((term) => {
|
||||
const m = term.match(/^(\w+):(.+)$/);
|
||||
|
Reference in New Issue
Block a user