summaryrefslogtreecommitdiffstats
path: root/common/src/main/webapp/usageguide/appserver/node_modules/node-restful/examples/movies/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'common/src/main/webapp/usageguide/appserver/node_modules/node-restful/examples/movies/index.js')
-rw-r--r--common/src/main/webapp/usageguide/appserver/node_modules/node-restful/examples/movies/index.js132
1 files changed, 132 insertions, 0 deletions
diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/node-restful/examples/movies/index.js b/common/src/main/webapp/usageguide/appserver/node_modules/node-restful/examples/movies/index.js
new file mode 100644
index 0000000..c3140fa
--- /dev/null
+++ b/common/src/main/webapp/usageguide/appserver/node_modules/node-restful/examples/movies/index.js
@@ -0,0 +1,132 @@
+var express = require('express'),
+ bodyParser = require('body-parser'),
+ methodOverride = require('method-override'),
+ mongoose = require('mongoose'),
+ morgan = require('morgan'),
+ restful = require('../../');
+var app = module.exports = express();
+
+app.use(morgan('dev'));
+app.use(bodyParser.urlencoded({'extended':'true'}));
+app.use(bodyParser.json());
+app.use(bodyParser.json({type:'application/vnd.api+json'}));
+app.use(methodOverride());
+app.set('view engine', 'jade');
+
+app.mongoose = mongoose; // used for testing
+
+mongoose.connect("mongodb://localhost/movies_test");
+
+var user = app.user = restful.model('users', mongoose.Schema({
+ username: { type: 'string', required: true },
+ pass_hash: { type: 'number', required: true }
+ }))
+ .methods(['get', 'post', 'put', 'delete'])
+ .before('get', function(req, res, next) {
+ req.body.limit = 1;
+ next()
+ })
+ .removeOptions({
+ sort: 'field -username'
+ })
+ .includeSchema(false);
+
+
+var movie = app.movie = restful.model("movies", mongoose.Schema({
+ title: { type: 'string', required: true },
+ year: { type: 'number', required: true },
+ creator: {type: 'ObjectId', ref: 'users' },
+ genre: {type: 'ObjectId', ref: 'genres'},
+ comments: [{
+ body: {type: 'String'},
+ date: {type: 'Date'},
+ author: { type: 'ObjectId', ref: 'users' }
+ }],
+ meta: {
+ productionco: 'string',
+ director: { type: 'ObjectId', ref: 'users' }
+ },
+ secret: { type: 'string', select: false }
+ }));
+
+movie.methods([
+ {
+ method: 'get',
+ before: noop,
+ after: noop
+ },
+ 'post',
+ 'put',
+ 'delete'])
+ .updateOptions({ new: true })
+ .route('recommend', function(req, res, next) {
+ res.locals.status_code = 200;
+ res.locals.bundle.recommend = 'called';
+ next();
+ })
+ .route('anotherroute', function(req, res, next) {
+ res.writeHead(200, {'Content-Type': 'application/json' });
+ res.write(JSON.stringify({
+ anotherroute: "called"
+ }));
+ res.end(); // This ends the request and prevents any after filters from executing
+ })
+ .route('athirdroute', {
+ handler: function(req, res, next) {
+ res.locals.status_code = 200; // Store response status code
+ res.locals.bundle = {
+ athirdroute: "called" // And response data
+ };
+ next(); // Call *after* filters and then return the response
+ },
+ methods: ['get', 'post'],
+ detail: true // Will mount the route at the detail endpoint /movies/:id/athirdroute
+ })
+ .route('pshh', {
+ handler: [function(req, res, next) {
+ next();
+ }, function(req, res, next) {
+ next();
+ }, function(req, res, next) {
+ res.locals.status_code = 200;
+ res.locals.bundle = {
+ pshh: "called"
+ };
+ next();
+ }],
+ methods: ['get', 'post']
+ })
+ .before('post', noop) // before a POST, execute noop
+ .after('post', noop)
+ .before('put', noop)
+ .after('put', noop)
+ .after('recommend', after)
+ .after('athirdroute', after);
+
+var genre = app.genre = restful.model("genres", mongoose.Schema({
+ name: { type: 'string', required: true }
+ }));
+genre.methods(['get', 'put', 'delete']);
+genre.shouldUseAtomicUpdate = false;
+
+var review = app.genre = restful.model("reviews", mongoose.Schema({
+ body: { type: 'string', required: true },
+ length: { type: Number, min: 0, required: true} // https://github.com/baugarten/node-restful/issues/116
+ }));
+review.methods(['get', 'put', 'delete']);
+
+user.register(app, '/users');
+movie.register(app, '/api/movies');
+genre.register(app, '/api/genres');
+review.register(app, '/api/reviews');
+
+if (!module.parent) {
+ app.listen(3000);
+}
+
+function noop(req, res, next) { next(); }
+function after(req, res, next) {
+ res.locals.bundle.after = 'called';
+ next();
+}
+