@xuda.io/xuda-dbs-plugin-xuda 1.0.197 → 1.0.199

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/server.js +40 -2
  3. package/studio.mjs +5 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-dbs-plugin-xuda",
3
- "version": "1.0.197",
3
+ "version": "1.0.199",
4
4
  "description": "Xuda Database Socket for Xuda's proprietary structure powered by CouchDB",
5
5
  "scripts": {
6
6
  "pub": "npm version patch --force && npm publish --access public"
package/server.js CHANGED
@@ -525,15 +525,53 @@ const get_opt = function (e, table_obj) {
525
525
  return recursiveReplace(query);
526
526
  }
527
527
 
528
+ function replaceRegexOptions(query) {
529
+ // Helper function to recursively process the query object
530
+ function recursiveReplace(obj) {
531
+ if (typeof obj === "object" && obj !== null) {
532
+ // Create a new object to store the modified query
533
+ let newObj = Array.isArray(obj) ? [] : {};
534
+
535
+ // Traverse through the object
536
+ for (let key in obj) {
537
+ if (obj.hasOwnProperty(key)) {
538
+ if (key === "$regex") {
539
+ newObj[key] = obj.$options
540
+ ? `(?${obj.$options})${obj[key]}`
541
+ : obj[key];
542
+ return newObj;
543
+ }
544
+
545
+ // Recursively process nested objects
546
+
547
+ newObj[key] = recursiveReplace(obj[key]);
548
+ }
549
+ }
550
+
551
+ return newObj;
552
+ } else {
553
+ // If it's not an object or array, return the value as is
554
+ return obj;
555
+ }
556
+ }
557
+
558
+ // Start the recursive replacement
559
+ return recursiveReplace(query);
560
+ }
561
+
528
562
  if (e.filterModelMongo) {
529
- selector_new["$and"] = [replaceKeysInQuery(JSON.parse(e.filterModelMongo))];
563
+ selector_new["$and"] = [
564
+ replaceRegexOptions(replaceKeysInQuery(JSON.parse(e.filterModelMongo))),
565
+ ];
530
566
  }
531
567
  if (e.filterModelUserMongo) {
532
568
  if (!selector_new["$and"]) {
533
569
  selector_new["$and"] = [];
534
570
  }
535
571
  selector_new["$and"].push(
536
- replaceKeysInQuery(JSON.parse(e.filterModelUserMongo))
572
+ replaceRegexOptions(
573
+ replaceKeysInQuery(JSON.parse(e.filterModelUserMongo))
574
+ )
537
575
  );
538
576
  }
539
577
  for (const [key, val] of Object.entries(opt.selector)) {
package/studio.mjs CHANGED
@@ -586,13 +586,14 @@ const get_opt = function (e, table_obj) {
586
586
  // : key;
587
587
 
588
588
  if (key === "$regex") {
589
- obj[key] = RegExp(obj[key], obj.$options);
589
+ newObj[key] = RegExp(obj[key], obj.$options);
590
+ return newObj;
590
591
  }
591
592
 
592
593
  // Recursively process nested objects
593
- if (key !== "$options") {
594
- newObj[key] = recursiveReplace(obj[key]);
595
- }
594
+ // if (key !== "$options") {
595
+ newObj[key] = recursiveReplace(obj[key]);
596
+ // }
596
597
  }
597
598
  }
598
599