Skip to content

Commit a267b52

Browse files
committed
fix: update to support new query system
1 parent 39a9cab commit a267b52

File tree

1 file changed

+5
-148
lines changed

1 file changed

+5
-148
lines changed

src/index.js

+5-148
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166

167167
return data;
168168
} catch (error) {
169-
console.error("Error in getValueFromObject:", error);
169+
// console.error("Error in getValueFromObject:", error);
170170
if (throwError)
171171
throw error;
172172
}
@@ -422,159 +422,17 @@
422422
return selector
423423
}
424424

425-
426425
function queryData(data, query) {
427-
if (!data)
428-
return false;
429-
430-
if (!Array.isArray(data))
431-
data = [data]
432-
433-
if (!query)
434-
return true
435-
436-
if (!Array.isArray(query))
437-
query = [query]
438-
if (!query.length)
439-
return true
440-
441-
let queryResult = false
442-
for (let n = 0; n < data.length; n++) {
443-
for (let i = 0; i < query.length; i++) {
444-
let dataValue
445-
if (query[i].key.includes('.') || /\[([0-9]*)\]/g.test(query[i].key))
446-
dataValue = getValueFromObject(data[n], query[i].key)
447-
else
448-
dataValue = data[n][query[i].key]
449-
if (dataValue == undefined)
450-
dataValue = ''
451-
let logicalOperator = query[i].logicalOperator || 'and'
452-
let queryValues = query[i].value
453-
454-
let queryIsArray = false
455-
if (!Array.isArray(queryValues))
456-
queryValues = [queryValues]
457-
else
458-
queryIsArray = true
459-
460-
461-
let queryStatus = false
462-
for (let queryValue of queryValues) {
463-
if (query[i].caseSensitive != 'true' || query[i].caseSensitive != true) {
464-
if (typeof dataValue == 'string')
465-
dataValue = dataValue.toLowerCase()
466-
if (typeof queryValue == 'string')
467-
queryValue = queryValue.toLowerCase()
468-
}
469-
470-
if (isValidDate(dataValue) && isValidDate(queryValue)) {
471-
dataValue = new Date(dataValue)
472-
queryValue = new Date(queryValue)
473-
}
474-
switch (query[i].operator) {
475-
case '$includes':
476-
case 'includes':
477-
if (dataValue.includes(queryValue))
478-
queryStatus = true
479-
// if (queryValue === "" && logicalOperator === 'and') {
480-
// if (dataValue !== "")
481-
// queryStatus = false
482-
// }
483-
break;
484-
case '$eq':
485-
if (dataValue == queryValue)
486-
queryStatus = true
487-
break;
488-
case '$ne':
489-
if (Array.isArray(dataValue)) {
490-
// Check if the entire array is different from queryValue
491-
queryStatus = !isEqualArray(dataValue, queryValue);
492-
} else if (Array.isArray(queryValue)) {
493-
// If queryValue is an array, check if dataValue is different from this array
494-
queryStatus = !isEqualArray(queryValue, dataValue);
495-
} else {
496-
// If neither is an array, simple comparison
497-
queryStatus = (dataValue != queryValue);
498-
}
499-
break;
500-
case '$lt':
501-
if (dataValue < queryValue)
502-
queryStatus = true
503-
break;
504-
case '$lte':
505-
if (dataValue <= queryValue)
506-
queryStatus = true
507-
break;
508-
case '$gt':
509-
if (dataValue > queryValue)
510-
queryStatus = true
511-
break;
512-
case '$gte':
513-
if (dataValue >= queryValue)
514-
queryStatus = true
515-
break;
516-
case '$in':
517-
if (Array.isArray(dataValue)) {
518-
queryStatus = dataValue.some(element => queryValue.includes(element));
519-
} else {
520-
queryStatus = queryValue.includes(dataValue);
521-
}
522-
break;
523-
case '$nin':
524-
if (Array.isArray(dataValue)) {
525-
queryStatus = !dataValue.some(element => queryValue.includes(element));
526-
} else {
527-
queryStatus = !queryValue.includes(dataValue);
528-
}
529-
break;
530-
case '$range':
531-
if (queryValue[0] !== null && queryValue[1] !== null) {
532-
if (dataValue >= queryValue[0] && dataValue <= queryValue[1])
533-
queryStatus = true
534-
} else if (queryValue[0] == null && dataValue <= queryValue[1]) {
535-
queryStatus = true
536-
} else if (queryValue[1] == null && dataValue >= queryValue[0]) {
537-
queryStatus = true
538-
}
539-
break;
540-
541-
default:
542-
if (dataValue.includes(queryValue))
543-
queryStatus = true
544-
break;
545-
}
546-
if (!queryIsArray || query[i].operator === "$nin") {
547-
switch (logicalOperator) {
548-
case 'and':
549-
if (queryStatus == false)
550-
return false
551-
break;
552-
// case 'or':
553-
// if (queryStatus == true)
554-
// queryResult = queryStatus
555-
// break;
556-
}
557-
} else if (queryStatus && query[i].operator === "$in")
558-
return true
559-
queryResult = queryStatus
560-
}
561-
}
562-
}
563-
564-
return queryResult;
565-
}
566-
567-
function query(data, query) {
568426
if (query.$and) {
569427
for (let i = 0; i < query.$and.length; i++) {
570-
if (!query(data, query.$and[i]))
428+
if (!queryData(data, query.$and[i]))
571429
return false
572430
}
573431
}
574432

575433
if (query.$nor) {
576434
for (let i = 0; i < query.$nor.length; i++) {
577-
if (query(data, query.$nor[i]))
435+
if (queryData(data, query.$nor[i]))
578436
return false;
579437
}
580438
}
@@ -588,7 +446,7 @@
588446

589447
if (query.$or) {
590448
for (let i = 0; i < query.$or.length; i++) {
591-
if (query(data, query.$or[i]))
449+
if (queryData(data, query.$or[i]))
592450
return true
593451
}
594452
}
@@ -605,7 +463,7 @@
605463
try {
606464
dataValue = getValueFromObject(data, key, true)
607465
} catch (error) {
608-
466+
return false
609467
}
610468

611469
if (typeof query[key] === 'string' || typeof query[key] === 'number' || typeof query[key] === 'boolean') {
@@ -907,7 +765,6 @@
907765
cssPath,
908766
queryElements,
909767
checkMediaQueries,
910-
query,
911768
queryData,
912769
searchData,
913770
sortData,

0 commit comments

Comments
 (0)