Socket
Socket
Sign inDemoInstall

ag-grid-mongo-query-builder

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ag-grid-mongo-query-builder - npm Package Compare versions

Comparing version 0.3.3 to 0.3.4

2

package.json
{
"name": "ag-grid-mongo-query-builder",
"version": "0.3.3",
"version": "0.3.4",
"description": "Utility to generate Mongo DB aggregation pipeline queries starting from AgGrid server side params",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -39,8 +39,14 @@ //const mongoose = require('mongoose');

let finalFilterQuery = [];
let filterFields = [];
if(filterQuery.length > 0 && quickSearchQuery.length > 0) {
if(filterQuery && filterQuery.addFieldArr && filterQuery.addFieldArr.length > 0){
filterFields = filterQuery.addFieldArr;
}
if(filterQuery && filterQuery.query && filterQuery.query.length > 0 && quickSearchQuery.length > 0) {
const quickSearch = {"$match" : { "$or" :[...quickSearchQuery] } };
finalFilterQuery = [quickSearch, ...filterQuery];
} else if(filterQuery.length > 0) {
finalFilterQuery = [...filterQuery];
finalFilterQuery = [quickSearch, ...filterQuery.query];
} else if(filterQuery && filterQuery.query && filterQuery.query.length > 0) {
finalFilterQuery = [...filterQuery.query];
} else if(quickSearchQuery.length > 0) {

@@ -68,2 +74,3 @@ finalFilterQuery = [{"$match" : {"$or" : [...quickSearchQuery]}}];

const aggregationPipeline = [
...filterFields,
...finalFilterQuery,

@@ -112,8 +119,13 @@ ...groupQuery,

let finalFilterQuery = [];
let filterFields = [];
if(filterQuery.length > 0 && quickSearchQuery.length > 0) {
if(filterQuery && filterQuery.addFieldArr && filterQuery.addFieldArr.length > 0){
filterFields = filterQuery.addFieldArr;
}
if(filterQuery && filterQuery.query && filterQuery.query.length > 0 && quickSearchQuery.length > 0) {
const quickSearch = {"$match" : { "$or" :[...quickSearchQuery] } };
finalFilterQuery = [quickSearch, ...filterQuery];
} else if(filterQuery.length > 0) {
finalFilterQuery = [...filterQuery];
finalFilterQuery = [quickSearch, ...filterQuery.query];
} else if(filterQuery && filterQuery.query && filterQuery.query.length > 0) {
finalFilterQuery = [...filterQuery.query];
} else if(quickSearchQuery.length > 0) {

@@ -136,2 +148,3 @@ finalFilterQuery = [{"$match" : {"$or" : [...quickSearchQuery]}}];

const aggregationPipeline = [
...filterFields,
...finalFilterQuery,

@@ -151,4 +164,10 @@ ...groupQuery,

const columns = Object.keys(filterModel);
const query = columns.map(column => buildColumnQuery(filterModel[column], column));
return query;
const addFieldArr = [];
const query = columns.map(column => {
const addFieldObj = { $addFields: { }};
addFieldObj.$addFields[`${column}Type`] = { $type: `$${column}` };
addFieldArr.push(addFieldObj);
return buildColumnQuery(filterModel[column], column)
});
return {query, addFieldArr};
}

@@ -378,4 +397,7 @@

case "endsWith": return { [key]: { "$regex": obj.filter + "$", '$options': 'i' } };
case "blank": return { $or : [ {[key]: {"$exists": true, "$eq": "" }}, {[key]: {"$exists": false}}]};
case "notBlank": return { [key]: { "$exists": true, "$ne": "" }};
case "blank": return { $expr: {$or: [{$and: [{ $eq: [`$${key}Type`, "array"] },
{ $or: [{ $eq: [{ $size: "$"+key }, 0] },
{ $eq: [{ $allElementsTrue: { $map: { input: `$${key}`, as: "item", in: { $eq: ["$$item", ""] } } } }, true] }]}]},
{$and: [{ $eq: [`$${key}Type`, "string"] },{ $eq: [`$${key}`, ""] }]}]}};
case "notBlank": return { $or :[ {[key]: { "$exists": true, "$ne": "" , "$type" : "string"}}, { [key]: {"$exists": true , "$type" : "array", "$ne" : [""], "$not": {"$size": 0}}}]};
case "false": return { [key]: false};

@@ -492,2 +514,13 @@ case "true": return { [key]: true};

addFieldObj[rowGroupCols[excessIndex].id] = "$_id";
///add unique count fields
if(aggregationArray && aggregationArray.length > 0) {
aggregationArray.map(aggre => {
const aggKey = Object.keys(aggre);
if(aggKey && aggre[aggKey] && aggre[aggKey].hasOwnProperty('$addToSet')){
addFieldObj[aggKey] = { $size: `$${aggKey}`}
}
})
}
let addField = {"$addFields" : addFieldObj};

@@ -834,3 +867,3 @@

case 'count' : return {$sum : 1 } ; // counts each doc
case 'count' : return { $addToSet: "$"+aggFunction.id+""}; // counts each doc
}

@@ -937,12 +970,17 @@ }

function checkFlagCondition(type, flagVal, value) {
const searchObj = splitSearchString(flagVal.toLowerCase());
const searchVals = searchObj.searchValArr ? searchObj.searchValArr : [];
switch (type) {
case "string":
if(value && flagVal && value.toLowerCase().indexOf(flagVal.toLowerCase()) >= 0) {
if(value && searchVals && searchVals.some(searchVal => value.toLowerCase().includes(searchVal.toLowerCase()))) {
return true;
} else return false;
case "number":
if(value && flagVal && value == flagVal) return true
if(value && searchVals && searchVals.some(searchVal => value === searchVal)) return true
else return false;
case "object":
if(value && flagVal && value.find(str => str && typeof str === 'string' && str.toLowerCase().includes(flagVal.toLowerCase()))) {
value = value ? Object.assign([], value) : [];
if(value && searchVals && value.find(str => str && typeof str === 'string' && searchVals.some(searchVal => str.toLowerCase().includes(searchVal.toLowerCase()))) ) {
return true

@@ -949,0 +987,0 @@ } else return false;

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc