summaryrefslogtreecommitdiffstats
path: root/server/lib/grouputil.js
diff options
context:
space:
mode:
authorUdo Walter2018-12-04 17:41:15 +0100
committerUdo Walter2018-12-04 17:41:15 +0100
commit6bc320dddf45a88976ceb5fb17cf149d8b1e9e1b (patch)
tree5edcf1f2608624dd61d677fef8a2017edca01241 /server/lib/grouputil.js
parenteslint fix :) (diff)
downloadbas-6bc320dddf45a88976ceb5fb17cf149d8b1e9e1b.tar.gz
bas-6bc320dddf45a88976ceb5fb17cf149d8b1e9e1b.tar.xz
bas-6bc320dddf45a88976ceb5fb17cf149d8b1e9e1b.zip
[groups,clients,configurator] api rework to the new format
Diffstat (limited to 'server/lib/grouputil.js')
-rw-r--r--server/lib/grouputil.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/server/lib/grouputil.js b/server/lib/grouputil.js
new file mode 100644
index 0000000..311eb7e
--- /dev/null
+++ b/server/lib/grouputil.js
@@ -0,0 +1,21 @@
+/* global __appdir */
+var path = require('path')
+var db = require(path.join(__appdir, 'lib', 'sequelize'))
+
+async function getAllChildren (groups, knownGroupIds = []) {
+ groups = groups.filter(subgroup => !knownGroupIds.includes(subgroup.id))
+ var groupIds = groups.map(g => g.id)
+ knownGroupIds = [...knownGroupIds, ...groupIds]
+ var [subgroups, clients] = await Promise.all([
+ db.group.findAll({ where: { '$parents.id$': groupIds }, include: ['parents'] }),
+ db.client.findAll({ where: { '$groups.id$': groupIds }, include: ['groups'] })
+ ])
+ if (subgroups.length > 0) {
+ var subChildren = await getAllChildren(subgroups, knownGroupIds)
+ subgroups = [...subgroups, ...subChildren.subgroups]
+ clients = [...clients, ...subChildren.clients]
+ }
+ return { subgroups, clients }
+}
+
+module.exports.getAllChildren = getAllChildren \ No newline at end of file