summaryrefslogtreecommitdiffstats
path: root/server/api/clients.js
blob: 0fbb7af4ec57016fd4a428ec3ce5148a4c3956de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* global __appdir */
var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
const backendHelper = require(path.join(__appdir, 'lib', 'external-backends', 'backendhelper'))

// GET Requests
module.exports.get = {
  getList: function (req, res) {
    db.client.findAll({ attributes: ['id', 'name'], order: [['name', 'ASC']] }).then(list => {
      res.send(list)
    })
  },

  // get name, description, ip, mac and uuid of a client (by id)
  getClient: function (req, res) {
    db.client.findOne({ where: { id: req.query.id }, include: ['groups'] }).then(client => {
      if (client) res.send(client)
      else res.status(404).end()
    })
  }
}

// POST Requests
module.exports.post = {
  // create client or update information of a client (returns id)
  save: function (req, res) {
    if (req.body.id > 0) {
      db.client.findOne({ where: { id: req.body.id } }).then(client => {
        if (client) {
          var promises = []
          if (req.body.info) promises.push(client.update(req.body.info))
          if (req.body.groupIds) promises.push(client.setGroups(req.body.groupIds))
          Promise.all(promises).then(() => { res.send({ id: req.body.id }) })
        } else { res.status(404).end() }
      })
    } else {
      db.client.create(req.body.info).then(client => {
        if (req.body.groupIds) client.setGroups(req.body.groupIds).then(() => { res.send({ id: client.id }) })
      })
    }
  },

  // delete clients
  delete: function (req, res) {
    db.client.destroy({ where: { id: req.body.ids } }).then(count => { res.send({ count }) })
    backendHelper.deleteClients(req.body.ids)
  }
}