Skip to content

Instantly share code, notes, and snippets.

@nimezhu
Last active November 21, 2015 16:37
Show Gist options
  • Select an option

  • Save nimezhu/ab01a431f569d624633b to your computer and use it in GitHub Desktop.

Select an option

Save nimezhu/ab01a431f569d624633b to your computer and use it in GitHub Desktop.
restapi server side example
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