diff --git a/app.js b/app.js new file mode 100644 index 0000000..a54504d --- /dev/null +++ b/app.js @@ -0,0 +1,92 @@ +var restify = require('restify'); +var mongojs = require("mongojs"); + +var ip_addr = '127.0.0.1'; +var port = '8080'; + +var server = restify.createServer({ + name : "myapp" +}); + +server.use(restify.queryParser()); +server.use(restify.bodyParser()); +server.use(restify.CORS()); + +server.listen(port ,ip_addr, function(){ + console.log('%s listening at %s ', server.name , server.url); +}); + +var connection_string = '127.0.0.1:27017/myapp'; +var db = mongojs(connection_string, ['myapp']); +var jobs = db.collection("jobs"); + +var PATH = '/jobs' +server.get({path : PATH , version : '0.0.1'} , findAllJobs); +server.get({path : PATH +'/:jobId' , version : '0.0.1'} , findJob); +server.post({path : PATH , version: '0.0.1'} ,postNewJob); +server.del({path : PATH +'/:jobId' , version: '0.0.1'} ,deleteJob); + +function findAllJobs(req, res , next){ + res.setHeader('Access-Control-Allow-Origin','*'); + jobs.find().limit(20).sort({postedOn : -1} , function(err , success){ + console.log('Response success '+success); + console.log('Response error '+err); + if(success){ + res.send(200 , success); + return next(); + }else{ + return next(err); + } + + }); + +} + +function findJob(req, res , next){ + res.setHeader('Access-Control-Allow-Origin','*'); + jobs.findOne({_id:mongojs.ObjectId(req.params.jobId)} , function(err , success){ + console.log('Response success '+success); + console.log('Response error '+err); + if(success){ + res.send(200 , success); + return next(); + } + return next(err); + }) +} + +function postNewJob(req , res , next){ + var job = {}; + job.title = req.params.title; + job.description = req.params.description; + job.location = req.params.location; + job.postedOn = new Date(); + + res.setHeader('Access-Control-Allow-Origin','*'); + + jobs.save(job , function(err , success){ + console.log('Response success '+success); + console.log('Response error '+err); + if(success){ + res.send(201 , job); + return next(); + }else{ + return next(err); + } + }); +} + +function deleteJob(req , res , next){ + res.setHeader('Access-Control-Allow-Origin','*'); + jobs.remove({_id:mongojs.ObjectId(req.params.jobId)} , function(err , success){ + console.log('Response success '+success); + console.log('Response error '+err); + if(success){ + res.send(204); + return next(); + } else{ + return next(err); + } + }) + +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..8f7430e --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "nodejs-stone", + "version": "1.0.0", + "description": "", + "main": "app.js", + "dependencies": { + "mongojs": "^1.4.1", + "restify": "^4.0.3" + }, + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/rushcoder/nodejs-stone.git" + }, + "author": "sunhellc", + "license": "ISC", + "bugs": { + "url": "https://github.com/rushcoder/nodejs-stone/issues" + }, + "homepage": "https://github.com/rushcoder/nodejs-stone#readme" +}