X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=otf-frontend%2Fserver%2Fsrc%2Ffeathers%2Fhooks%2Ffilters.js;fp=otf-frontend%2Fserver%2Fsrc%2Ffeathers%2Fhooks%2Ffilters.js;h=815633a1649f51e27e3369e9c7d8a80304334666;hb=cf067bb8bd9b45e79a85e9612a0f4c5abeb727b8;hp=d81cd3f62b195d6f22d2fc5e56ca492145126094;hpb=596b1d89c5f63170ed40abb6f7b9395178c5e44e;p=it%2Fotf.git diff --git a/otf-frontend/server/src/feathers/hooks/filters.js b/otf-frontend/server/src/feathers/hooks/filters.js index d81cd3f..815633a 100644 --- a/otf-frontend/server/src/feathers/hooks/filters.js +++ b/otf-frontend/server/src/feathers/hooks/filters.js @@ -24,6 +24,9 @@ const { ObjectID } = require('mongodb'); module.exports.groupFilter = function (options = null) { return async context => { + if (!context.params.provider) { + return Promise.resolve(context); + } switch(context.method){ case 'get': @@ -56,17 +59,13 @@ module.exports.groupFilter = function (options = null) { context.app.services[context.app.get('base-path') + 'groups'].Model.aggregate([ { $match: context.params.query - }, - { - $graphLookup: { - from: "groups", - startWith: "$parentGroupId", - connectFromField: "parentGroupId", - connectToField: "_id", - as: "parentGroups" + } + ]).then(async res => { + if(res.length){ + for(let i = 0; i < res.length; i++){ + res[i]['parentGroups'] = await getParentGroups(context.app.services[context.app.get('base-path') + 'groups'].Model, res[i]); } } - ]).then(res => { resolve(res); }).catch(err => { throw new errors.GeneralError(err); @@ -127,6 +126,35 @@ module.exports.groupFilter = function (options = null) { }; }; +getParentGroups = async function(model, group){ + return new Promise(async (resolve, reject) => { + let parentGroups = []; + if(group.parentGroupId){ + model.aggregate([ + { + $match: { + '_id': group.parentGroupId + } + } + ]).then(async res => { + if(res[0] && res[0].parentGroupId){ + parentGroups.unshift(res[0]); + let parents = await getParentGroups(model, res[0]); + parents.forEach(e => { + parentGroups.unshift(e); + }); + } + resolve(parentGroups); + }).catch(err => { + reject(err); + }) + }else{ + resolve(); + } + }); + +} + getChildGroups = async function(model, group){ return new Promise(async (resolve, reject) => { let childGroups = [];