Skip to content
Snippets Groups Projects
Commit 10402389 authored by Markus Grigull's avatar Markus Grigull
Browse files

Add visualizations and plots routes and models

parent 17bbcaaa
No related branches found
No related tags found
No related merge requests found
// include
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// plot model
var plotSchema = new Schema({
name: { type: String, required: true },
signal: { type: String, required: true },
width: { type: Number, required: true },
height: { type: Number, required: true },
title: { type: String }
});
module.exports = mongoose.model('Plot', plotSchema);
......@@ -6,7 +6,8 @@ var Schema = mongoose.Schema;
// project model
var projectSchema = new Schema({
name: { type: String, required: true },
owner: { type: Schema.Types.ObjectId, ref: 'User', required: true }
owner: { type: Schema.Types.ObjectId, ref: 'User', required: true },
visualizations: [{ type: Schema.Types.ObjectId, ref: 'Visualization' }]
});
module.exports = mongoose.model('Project', projectSchema);
// include
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// visualization model
var visualizationSchema = new Schema({
name: { type: String, required: true },
plots: [{ type: Schema.Types.ObjectId, ref: 'Plot' }]
});
module.exports = mongoose.model('Visualization', visualizationSchema);
// include
var express = require('express');
var Plot = require('../models/plot');
var auth = require('../auth');
// create router
var router = express.Router();
// all plot routes need authentication
router.use('/plots', auth.validateToken);
// routes
router.get('/plots', function(req, res) {
// get all plots
Plot.find(function(err, plots) {
if (err) {
return res.send(err);
}
res.send({ plots: plots });
});
});
router.route('/plots').post(function(req, res) {
// create new plot
var plot = new Plot(req.body.plot);
plot.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ plot: plot });
});
});
router.route('/plots/:id').put(function(req, res) {
// get plot
Plot.findOne({ _id: req.params.id }, function(err, plot) {
if (err) {
return res.send(err);
}
// update all properties
for (property in req.body.plot) {
plot[property] = req.body.plot[property];
}
// save the changes
plot.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ plot: plot });
});
});
});
router.route('/plots/:id').get(function(req, res) {
Plot.findOne({ _id: req.params.id }, function(err, plot) {
if (err) {
return res.send(err);
}
res.send({ plot: plot });
});
});
router.route('/plots/:id').delete(function(req, res) {
Plot.remove({ _id: req.params.id }, function(err, plot) {
if (err) {
return res.send(err);
}
res.send({ plot: plot });
});
});
module.exports = router;
......@@ -33,7 +33,7 @@ router.get('/projects', function(req, res) {
return res.send(err);
}
res.json({ projects: projects });
res.send({ projects: projects });
});
});
......
// include
var express = require('express');
var Visualization = require('../models/visualization');
var auth = require('../auth');
// create router
var router = express.Router();
// all visualization routes need authentication
router.use('/visualizations', auth.validateToken);
// routes
router.get('/visualizations', function(req, res) {
// get all visualizations
Visualization.find(function(err, visualizations) {
if (err) {
return res.send(err);
}
res.send({ visualizations: visualizations });
});
});
router.route('/visualizations').post(function(req, res) {
// create new visualization
var visualization = new Visualization(req.body.visualization);
visualization.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ visualization: visualization });
});
});
router.route('/visualizations/:id').put(function(req, res) {
// get visualization
Visualization.findOne({ _id: req.params.id }, function(err, visualization) {
if (err) {
return res.send(err);
}
// update all properties
for (property in req.body.visualization) {
visualization[property] = req.body.visualization[property];
}
// save the changes
visualization.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ visualization: visualization });
});
});
});
router.route('/visualizations/:id').get(function(req, res) {
Visualization.findOne({ _id: req.params.id }, function(err, visualization) {
if (err) {
return res.send(err);
}
res.send({ visualization: visualization });
});
});
router.route('/visualizations/:id').delete(function(req, res) {
Visualization.remove({ _id: req.params.id }, function(err, visualization) {
if (err) {
return res.send(err);
}
res.send({ visualization: visualization });
});
});
module.exports = router;
......@@ -10,6 +10,8 @@ var config = require('./config');
var users = require('./routes/users');
var projects = require('./routes/projects');
var visualizations = require('./routes/visualizations');
var plots = require('./routes/plots')
var User = require('./models/user');
......@@ -28,6 +30,8 @@ mongoose.connect(config.databaseURL + config.databaseName);
// register routes
app.use('/api/v1', users);
app.use('/api/v1', projects);
app.use('/api/v1', visualizations);
app.use('/api/v1', plots);
// start the app
app.listen(config.port, function() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment