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.1.0 to 0.1.1

2

package.json
{
"name": "ag-grid-mongo-query-builder",
"version": "0.1.0",
"version": "0.1.1",
"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');
export const buildQuery = function (reqBody) {
let {
groupKeys = [], // holds the ID of the expanded node and the ID's of all its parent/grandparent node
rowGroupCols = [],
sortModel = [], //contains the sorting state for every sorted column in the ag-Grid instance
filterModel = {}, //values being filtered in UI
valueCols = [] , // required for aggregation
pivotCols= [],
pivotMode ,
startRow,

@@ -12,6 +17,6 @@ endRow

console.log('params in API :', { groupKeys, sortModel, filterModel, valueCols, startRow, endRow });
console.log('params in API :', { groupKeys, rowGroupCols, pivotCols, pivotMode, sortModel, filterModel, valueCols, startRow, endRow });
const isFiltering = Object.keys(filterModel).length > 0;
const isGrouping = groupKeys.length > 0;
const isGrouping = groupKeys.length > 0 || 1;
const isSorting = sortModel.length > 0;

@@ -21,3 +26,3 @@ const limit = endRow - startRow;

const filterQuery = isFiltering ? buildFilterQuery(filterModel) : [];
const groupQuery = isGrouping ? buildGroupingQuery(groupKeys) : [];
const groupQuery = isGrouping ? buildGroupingQuery(groupKeys, rowGroupCols) : [];
const sortQuery = isSorting ? buildSortQuery(sortModel) : null;

@@ -27,2 +32,4 @@ const skipQuery = {'$skip': startRow};

console.log('filter query :', JSON.stringify(filterQuery));
console.log('Group query:',JSON.stringify(groupQuery));
const aggregationPipeline = [

@@ -155,4 +162,3 @@ ...filterQuery,

*/
console.log('inside set filter');
console.log('set filter for : ', filterModel , ' key:', key);
console.log('inside set filter for : ', filterModel , ' key:', key);

@@ -176,18 +182,32 @@ if(filterModel.values.length >0)

function buildGroupingQuery(groupKeys){
return groupKeys.map(groupKey => {
return {
'$match': { //finds the document that corresponds to the expanded group
'_id': new mongoose.Types.ObjectId(groupKey)
}
}, {
'$unwind': {
'path': '$' + groupKeys.rowGroupCols[0] + '' // replace with property to be displayed in ag-grid row -- it's part of schema
}
}, {
'$replaceRoot': {
'newRoot': '$' + groupKeys.rowGroupCols[0] + ''
}
function buildGroupingQuery(groupKeys , rowGroupCols){
let query=[];
if(groupKeys.length ===0 && rowGroupCols.length >0 )
{
return [{ $match:{ } }]
}
if( groupKeys.length === rowGroupCols.length){
// same length : no need to add group by clause in this case
for (let i=0;i<rowGroupCols.length;i++){
query.push({ [ rowGroupCols[i].id ] : groupKeys[i] });
}
})
let z=[{"$match": {"$and" : query}}];
console.log('Grouping query:', JSON.stringify(z));
return z;
}
if(groupKeys.length < rowGroupCols.length){
let i=0;
for(;i<groupKeys.length;i++){
query.push({ [rowGroupCols[i].id ] : groupKeys[i]});
}
let z=[{"$match": {"$and" : query}}];
console.log('Groupung Query:', z);
return z;
}
console.log('returning blank group query: missing required params.');
return {};
}

@@ -203,8 +223,2 @@

return {'$sort': sortQuery}
}
}
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