summaryrefslogblamecommitdiffstats
path: root/server/api/clients.js
blob: 2780bd61899f605b56b6c894e7764ffa869fcad9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                     

                                                         
 


                                
                                                                                              

                    
    
 






                                      










                                                                                                
      

   



                                                                 
                                       








                                                                                 


                                                                                                              


     
/* global __appdir */
var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))

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

  // get all groups
  getAll: function (req, res) {
    db.client.findAll().then(list => {
      res.send(list)
    })
  },

  // get all clients that have no groups
  getTopLevel: function (req, res) {
    db.client.findAll({ where: { '$groups.id$': null }, include: ['groups'] }).then(clients => {
      res.send(clients)
    })
  },

  // 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 => {
      res.send(client)
    })
  }
}

// POST Requests
module.exports.post = {
  // create client or update information of a client (returns id)
  updateOrCreate: function (req, res) {
    const id = req.body.id > 0 ? req.body.id : null
    if (id) {
      db.client.findOne({ where: { id: id } }).then(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}) })
      })
    } else {
      db.client.create(req.body.info).then(client => {
        if (req.body.groupIds) client.setGroups(req.body.groupIds).then(() => { res.send({ id: client.id }) })
      })
    }
  }
}