Last active
November 21, 2015 16:37
-
-
Save nimezhu/ab01a431f569d624633b to your computer and use it in GitHub Desktop.
restapi server side example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var qs = require('querystring'); | |
| var sqlite3 = require('sqlite3').verbose(); | |
| var dbs = ["test.db","elisa.db","mouse.geneset.db"]; | |
| var db={}; | |
| dbs.forEach(function(d){ | |
| db[d] = new sqlite3.Database("data/"+d); | |
| db[d].serialize(function() { | |
| //db.run("CREATE TABLE IF NOT EXISTS geneset (key TEXT, value INTEGER)"); | |
| }); | |
| }) | |
| module.exports = function(restapi) { | |
| /* | |
| restapi.get('/list', function(req, res){ | |
| var a=[] | |
| var d=req.query.db || "test.db" | |
| res.setHeader("Access-Control-Allow-Origin", "*"); | |
| db[d].each("SELECT id,genesetid,groupid FROM geneset", function(err, row){ | |
| a.push(row); | |
| }, | |
| function() { | |
| res.json(a) | |
| } | |
| ) | |
| }); | |
| */ | |
| var setHeader=function(res) { | |
| res.setHeader("Access-Control-Allow-Origin", "*"); | |
| res.setHeader("Access-Control-Allow-Methods","GET,POST,DELETE,PUT,OPTIONS"); | |
| } | |
| restapi.options('/data', function(req, res){ | |
| setHeader(res); | |
| var a=[] | |
| var d=req.query.db || "test.db" | |
| db[d].each("SELECT id,genesetid,groupid FROM geneset", function(err, row){ | |
| a.push(row); | |
| }, | |
| function() { | |
| res.json(a) | |
| } | |
| ) | |
| }); | |
| restapi.get('/data', function(req, res){ | |
| var d=req.query.db || "test.db" | |
| setHeader(res); | |
| if(req.query.id) { | |
| db[d].get("SELECT id,genesetid,groupid,geneset,description FROM geneset where id=?",req.query.id, function(err, row){ | |
| console.log(err); | |
| res.json(row); | |
| } | |
| ) | |
| } else { | |
| res.json({"error":"specify geneset entry id"}); | |
| } | |
| }); | |
| restapi.post('/data', function(req, res){ | |
| var body="" | |
| var d=req.query.db || "test.db" | |
| setHeader(res); | |
| req.on("data",function(data) { | |
| body+=data; | |
| }) | |
| req.on("end",function() { | |
| var post = qs.parse(body); | |
| var geneset = post["geneset[]"].join(","); | |
| var groupid=post.groupid || ""; | |
| db[d].run("INSERT INTO geneset(genesetid,groupid,geneset,author,description) VALUES (?,?,?,?,?)", [post.genesetid,groupid,geneset,post.author,post.description] , function(err, row){ | |
| if (err){ | |
| res.status(500); | |
| } | |
| else { | |
| res.status(202); | |
| } | |
| res.end(); | |
| }) | |
| }) | |
| }); | |
| restapi.delete('/data', function(req,res) { | |
| setHeader(res); | |
| var d=req.query.db || "test.db" | |
| if(req.query.id) { | |
| db[d].run("DELETE FROM geneset WHERE id=?",req.query.id,function(err){},function(){ | |
| var a={"status":req.query.id+" deleted"} | |
| res.json(a); | |
| }); | |
| } else { | |
| res.json({"error":"specify geneset entry id"}); | |
| } | |
| }) | |
| restapi.put('/data', function(req, res){ | |
| var body="" | |
| var d=req.query.db || "test.db" | |
| setHeader(res); | |
| req.on("data",function(data) { | |
| body+=data; | |
| }) | |
| req.on("end",function() { | |
| var post = qs.parse(body); | |
| if(post["geneset[]"] && post.genesetid && post) { | |
| var geneset = post["geneset[]"].join(","); | |
| var groupid=post.groupid || ""; | |
| db[d].run('update geneset set genesetid=?,groupid=?,description=?,geneset=? where id=?',[post.genesetid,groupid,post.description,geneset,post.id], function(err, row){ | |
| if (err){ | |
| console.err(err); | |
| res.status(500); | |
| } | |
| else { | |
| res.status(202); | |
| } | |
| res.end(); | |
| }) | |
| } else { | |
| res.status(500) | |
| } | |
| }) | |
| }); | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment