diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2011-06-30 23:48:38 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2011-06-30 23:48:38 +0200 |
commit | ec2f803a306c7843a8814029b5e77a9dadffd136 (patch) | |
tree | f6d54a0a2808de835bed85d2e8eba5df2d633238 /lib/paste.js | |
parent | 365added92d4faf26f03d14d303be5ac43706c48 (diff) | |
download | node-paste-ec2f803a306c7843a8814029b5e77a9dadffd136.tar.gz node-paste-ec2f803a306c7843a8814029b5e77a9dadffd136.tar.xz node-paste-ec2f803a306c7843a8814029b5e77a9dadffd136.zip |
progress: templates/css, new router, paste module as db abstraction
Diffstat (limited to 'lib/paste.js')
-rw-r--r-- | lib/paste.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/paste.js b/lib/paste.js new file mode 100644 index 0000000..a60bee2 --- /dev/null +++ b/lib/paste.js @@ -0,0 +1,68 @@ +var kyoto = require('kyoto'), +uuid = require(__dirname + '/uuid'); + +var db; + +var generateId = function(callback) { + var id = uuid.generate(14); + + db.get(id, function(err, value) { + if (value) { + generateId(); + } + else { + callback(id); + } + }); +}; + +var get = function(id, callback) { + db.get(id, function(err, value) { + if (value) { + value = JSON.parse(value); + } + + callback(value); + }); +}; + +var add = function(post, callback) { + generateId(function(id) { + var data = { + content: post.content, + language: post.language, + time: new Date() + }; + + db.set(id, JSON.stringify(data), function(err) { + callback(err, id); + }); + }); +}; + +var init = function(config, callback) { + db = new kyoto.open(config.database, 'a+', function(err) { + if (err) throw err; + + process.on('uncaughtException', function(exeption) { + console.error('%j', exeption); + process.exit(1); + }); + + process.on('exit', function() { + db.close(function(err) { console.log(err); }); + }); + + var thismodule = { + get: get, + add: add + }; + + callback(thismodule); + + }); +}; + +module.exports = { + init: init +}; |