summaryrefslogtreecommitdiffstats
path: root/server/api/groups.js
diff options
context:
space:
mode:
authorUdo Walter2019-03-31 04:55:26 +0200
committerUdo Walter2019-03-31 04:55:26 +0200
commit5b59be3d0b2ae4f148a1d6c6f9781921c0e6042c (patch)
tree3cc0fbca5820c8fbbbaa84574ed4d3e23d455578 /server/api/groups.js
parent[webapp] small scrollbar style change (diff)
downloadbas-5b59be3d0b2ae4f148a1d6c6f9781921c0e6042c.tar.gz
bas-5b59be3d0b2ae4f148a1d6c6f9781921c0e6042c.tar.xz
bas-5b59be3d0b2ae4f148a1d6c6f9781921c0e6042c.zip
[server/groups] add more responses
Diffstat (limited to 'server/api/groups.js')
-rw-r--r--server/api/groups.js55
1 files changed, 33 insertions, 22 deletions
diff --git a/server/api/groups.js b/server/api/groups.js
index 9a17c92..97e4808 100644
--- a/server/api/groups.js
+++ b/server/api/groups.js
@@ -1,11 +1,12 @@
/* global __appdir */
-var path = require('path')
-var db = require(path.join(__appdir, 'lib', 'sequelize'))
-var groupUtil = require(path.join(__appdir, 'lib', 'grouputil'))
+const path = require('path')
+const db = require(path.join(__appdir, 'lib', 'sequelize'))
+const groupUtil = require(path.join(__appdir, 'lib', 'grouputil'))
const ipHelper = require(path.join(__appdir, 'lib', 'iphelper'))
-var express = require('express')
+const express = require('express')
const { decorateApp } = require('@awaitjs/express')
-var router = decorateApp(express.Router())
+const router = decorateApp(express.Router())
+const httpResponse = require(path.join(__appdir, 'lib', 'httpresponse'))
// ############################################################################
// ########################### GET requests #################################
@@ -28,14 +29,16 @@ router.getAsync('/:id', async (req, res) => {
if (all) res.status(200).send({ ...group.get({ plain: true }), ...await groupUtil.getAllChildren([group]) })
else res.status(200).send(group)
} else {
- res.status(404).end()
+ return httpResponse.notFound(res, req.params.id)
}
- } else {
+ } else if (req.params.id === '0') {
const [subgroups, clients] = await Promise.all([
db.group.findAll(all ? {} : { where: { '$parents.id$': null }, include: ['parents'] }),
db.client.findAll(all ? {} : { where: { '$groups.id$': null }, include: ['groups'] })
])
res.send({ id: 0, subgroups, clients })
+ } else {
+ httpResponse.invalidId(res, true)
}
})
@@ -44,14 +47,21 @@ router.getAsync('/:id', async (req, res) => {
router.postAsync(['', '/:id'], async (req, res) => {
if (req.query.delete !== undefined && req.query.delete !== 'false') {
+ if (!Array.isArray(req.body.ids)) return httpResponse.invalidBodyValue(res, 'ids', 'an array')
const count = await db.group.destroy({ where: { id: req.body.ids } })
- res.status(200).send({ count })
+ httpResponse.successBatch(res, 'deleted', 'group', count)
} else {
let group
- if (req.params.id === undefined) group = await db.group.create(req.body.data)
- else {
+ let action = 'updated'
+ if (req.params.id === undefined) {
+ group = await db.group.create(req.body.data)
+ action = 'created'
+ } else if (req.params.id > 0) {
group = await db.group.findOne({ where: { id: req.params.id }, include: ['ipranges'] })
- if (group) await group.update(req.body.data)
+ if (!group) return httpResponse.notFound(res, req.params.id)
+ else await group.update(req.body.data)
+ } else {
+ return httpResponse.invalidId(res)
}
if (group) {
const promises = []
@@ -87,40 +97,40 @@ router.postAsync(['', '/:id'], async (req, res) => {
}
}
await Promise.all(promises)
- res.status(200).send({ id: group.id })
- } else {
- res.status(404).end()
+ httpResponse.success(res, action, 'group', group.id)
}
}
})
router.postAsync('/:id/subgroups', async (req, res) => {
+ if (!(req.params.id > 0)) return httpResponse.invalidId(res)
const group = await db.group.findOne({ where: { id: req.params.id } })
if (group) {
if (req.query.delete !== undefined && req.query.delete !== 'false') {
const count = await group.removeSubgroups(req.body.ids)
- res.status(200).send({ count })
+ httpResponse.successBatch(res, 'removed', 'subgroup', count)
} else {
const count = await group.addSubgroups(req.body.ids)
- res.status(200).send({ count })
+ httpResponse.successBatch(res, 'added', 'subgroup', count)
}
} else {
- res.status(404).end()
+ httpResponse.notFound(res, req.params.id)
}
})
router.postAsync('/:id/clients', async (req, res) => {
+ if (!(req.params.id > 0)) return httpResponse.invalidId(res)
const group = await db.group.findOne({ where: { id: req.params.id } })
if (group) {
if (req.query.delete !== undefined && req.query.delete !== 'false') {
const count = await group.removeClients(req.body.ids)
- res.status(200).send({ count })
+ httpResponse.successBatch(res, 'removed', 'client', count)
} else {
const count = await group.addClients(req.body.ids)
- res.status(200).send({ count })
+ httpResponse.successBatch(res, 'added', 'client', count)
}
} else {
- res.status(404).end()
+ httpResponse.notFound(res, req.params.id)
}
})
@@ -128,9 +138,10 @@ router.postAsync('/:id/clients', async (req, res) => {
// ########################## DELETE requests ###############################
router.delete('/:id', async (req, res) => {
+ if (!(req.params.id > 0)) return httpResponse.invalidId(res)
const count = await db.group.destroy({ where: { id: req.params.id } })
- if (count) res.status(200).end()
- else res.status(404).end()
+ if (count) httpResponse.success(res, 'deleted', 'group', req.params.id)
+ else httpResponse.notFound(res, req.params.id)
})
// ############################################################################