Skip to content

Instantly share code, notes, and snippets.

@dmfenton
Last active February 28, 2017 19:44
Show Gist options
  • Save dmfenton/0a0f5d287b4cc2a7f3fbf9616b004198 to your computer and use it in GitHub Desktop.
Save dmfenton/0a0f5d287b4cc2a7f3fbf9616b004198 to your computer and use it in GitHub Desktop.
module.exports = function (model) {
this.model = model
/**
* returns a list of the registered hosts and their ids
*/
this.get = function (req, res) {
this.model.log.debug({route: 'dataset:get', params: req.params, query: req.query})
if (req.params.dataset) this._getDataset(req, res)
else this._getDatasets(req, res)
}
/**
* Put a specific dataset on the queue
*/
this.post = function (req, res) {
this.model.log.debug({route: 'POST', params: req.params, query: req.query})
if (req.params.method === 'import') this.model.enqueue('import', req, res)
else if (req.params.method === 'export') this.model.enqueue('export', req, res)
else return res.status(400).json({error: 'Unsupported method'})
}
/**
* Deletes a dataset from the cache
*/
this.delete = function (req, res) {
this.model.log.debug(JSON.stringify({route: 'dataset:delete', params: req.params, query: req.query}))
var ids = this.model.decomposeId(req.params.dataset)
this.model.dropResource(ids.item, ids.layer, {}, function (err) {
if (err) return res.status(500).send({error: err.message})
res.status(200).json({status: 'Deleted'})
})
}
this._getDataset = function (req, res) {
this.findRecord(req.params, function (err, dataset) {
if (err) return res.status(404).json({error: err.message})
res.status(200).json({dataset: dataset})
})
}
this._getDatasets = function (req, res) {
this.model.findRecords(req.query, function (err, datasets) {
if (err) return res.status(500).json({error: err.message})
res.status(200).json({datasets: datasets})
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment