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.2.4 to 0.2.5

2

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

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

//const mongoose = require('mongoose');
// const ObjectID = require('mongodb').ObjectID;
const moment = require('moment');
const momentFormats = ['MM-DD-YYYY','DD-MM-YYYY', 'YYYY-MM-DD'];
const buildQuery = function (reqBody) {

@@ -152,13 +152,42 @@ let {

finalQuery = [];
let searchCond = 'or';
if(searchVal && searchVal.toLowerCase().includes(' and ')) searchCond = 'and'
if(searchVal && searchVal.toLowerCase().includes(' or ')) searchCond = 'or'
const searchObj = splitSearchString(searchVal.toLowerCase(), searchCond);
const searchValArr = searchObj && searchObj.searchValArr ? searchObj.searchValArr : [];
columns.map(column => {
if(column.filter && column.filter == "agTextColumnFilter") {
finalQuery.push( { [column.field]: { "$regex": searchVal, "$options": "i" } });
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'text');
finalQuery.push(conditionObj);
} else {
finalQuery.push( { [column.field]: { "$regex": searchVal, "$options": "i" } });
}
} else if(column.filter && column.filter == "agSetColumnFilter") {
finalQuery.push( { [column.field]: { "$eq": searchVal}});
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'set');
finalQuery.push(conditionObj);
} else {
finalQuery.push( { [column.field]: { "$eq": searchVal}});
}
} else if(column.filter && column.filter == "agNumberColumnFilter") {
finalQuery.push( { [column.field]: { "$eq": parseInt(searchVal)}});
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'number');
finalQuery.push(conditionObj);
} else {
finalQuery.push( { [column.field]: { "$eq": parseInt(searchVal)}});
}
} else if(column.filter && column.filter == "agDateColumnFilter") {
if(moment(searchVal).isValid()) {
finalQuery.push({ "$and": [{ [column.field]: { "$gte": new Date(moment(searchVal).startOf('day')) } }, { [column.field]: { "$lte": new Date(moment(searchVal).endOf('day')) } }] });
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'date');
finalQuery.push(conditionObj);
} else {
if(moment(`'${searchVal}'`, momentFormats).isValid()) {
finalQuery.push({ "$and": [{ [column.field]: { "$gte": new Date(moment(searchVal,momentFormats).startOf('day')) } }, { [column.field]: { "$lte": new Date(moment(searchVal, momentFormats).endOf('day')) } }] });
}
}
}

@@ -169,15 +198,65 @@ });

function buildSearchObj(searchValArr, column, searchCond, type) {
const conditions = [];
const conObj = {};
searchValArr.map(Val => {
if(type === 'text') conditions.push({[column]: { "$regex": Val, "$options": "i" }});
if(type === 'number') conditions.push({[column]: { "$eq": parseInt(Val) }});
if(type === 'set') conditions.push({[column]: { "$eq": Val}});
if(type === 'date') {
if(moment(`'${Val}'`, momentFormats).isValid()) {
conditions.push({ "$and": [{ [column]: { "$gte": new Date(moment(Val,momentFormats).startOf('day')) } }, { [column]: { "$lte": new Date(moment(Val, momentFormats).endOf('day')) } }] });
}
}
});
if(conditions.length> 0) conObj[searchCond] = [...conditions];
return conObj;
}
function splitSearchString(searchVal, sepraters) {
searchVal = searchVal.split(sepraters).map(item => item.trim());
return {"searchValArr" : searchVal};
}
function buildFlagQuery(flagColumns, flagFilters) {
finalQuery = [];
flagFilters.map(flagVal => {
let searchCond = 'or';
if(flagVal && flagVal.toLowerCase().includes(' and ')) searchCond = 'and'
if(flagVal && flagVal.toLowerCase().includes(' or ')) searchCond = 'or'
const searchObj = splitSearchString(flagVal.toLowerCase(), searchCond);
const searchValArr = searchObj && searchObj.searchValArr ? searchObj.searchValArr : [];
flagColumns.map(column => {
if(column.filter && column.filter == "agTextColumnFilter") {
finalQuery.push( { [column.field]: { "$regex": flagVal, "$options": "i" } });
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'text');
finalQuery.push(conditionObj);
} else {
finalQuery.push( { [column.field]: { "$regex": flagVal, "$options": "i" } });
}
} else if(column.filter && column.filter == "agSetColumnFilter") {
finalQuery.push( { [column.field]: { "$eq": flagVal}});
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'set');
finalQuery.push(conditionObj);
} else {
finalQuery.push( { [column.field]: { "$eq": flagVal}});
}
} else if(column.filter && column.filter == "agNumberColumnFilter") {
finalQuery.push( { [column.field]: { "$eq": parseInt(flagVal)}});
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'number');
finalQuery.push(conditionObj);
} else {
finalQuery.push( { [column.field]: { "$eq": parseInt(flagVal)}});
}
} else if(column.filter && column.filter == "agDateColumnFilter") {
if(moment(flagVal).isValid()) {
finalQuery.push({ "$and": [{ [column.field]: { "$gte": new Date(moment(flagVal).startOf('day')) } }, { [column.field]: { "$lte": new Date(moment(flagVal).endOf('day')) } }] });
if(searchValArr && searchValArr.length > 1) {
const conditionObj = buildSearchObj(searchValArr, column.field, `$${searchCond}`, 'date');
finalQuery.push(conditionObj);
} else {
if(moment(`'${flagVal}'`, momentFormats).isValid()) {
finalQuery.push({ "$and": [{ [column.field]: { "$gte": new Date(moment(flagVal,momentFormats).startOf('day')) } }, { [column.field]: { "$lte": new Date(moment(flagVal, momentFormats).endOf('day')) } }] });
}
}

@@ -184,0 +263,0 @@ }

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