diff options
author | Peter 'Pita' Martischka <petermartischka@googlemail.com> | 2011-11-27 05:32:31 +0000 |
---|---|---|
committer | Peter 'Pita' Martischka <petermartischka@googlemail.com> | 2011-11-27 05:32:31 +0000 |
commit | 88a8853fdab412263a5b20f2cfbb22919a0126db (patch) | |
tree | 67afbef024e92ccdd0ebd1f39f85baedbea7d4ff /bin | |
parent | 9bfc78eac1adb3720c8302446e6a8e8c950da3ce (diff) | |
download | etherpad-lite-88a8853fdab412263a5b20f2cfbb22919a0126db.zip |
Added a extractPadData Script
Diffstat (limited to 'bin')
-rw-r--r-- | bin/extractPadData.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/bin/extractPadData.js b/bin/extractPadData.js new file mode 100644 index 00000000..061a2e3f --- /dev/null +++ b/bin/extractPadData.js @@ -0,0 +1,89 @@ +/* + This is a debug tool. It helps to extract all datas of a pad and move it from an productive enviroment and to a develop enviroment to reproduce bugs there. It outputs a dirtydb file +*/ + +if(process.argv.length != 3) +{ + console.error("Use: node extractPadData.js $PADID"); + process.exit(1); +} +//get the padID +var padId = process.argv[2]; + +//initalize the database +var log4js = require("log4js"); +log4js.setGlobalLogLevel("INFO"); +var async = require("async"); +var db = require('../node/db/DB'); +var dirty = require("dirty")(padId + ".db"); +var padManager; +var pad; +var neededDBValues = ["pad:"+padId]; + +async.series([ + //intallize the database + function (callback) + { + db.init(callback); + }, + //get the pad + function (callback) + { + padManager = require('../node/db/PadManager'); + + padManager.getPad(padId, function(err, _pad) + { + pad = _pad; + callback(err); + }); + }, + function (callback) + { + //add all authors + var authors = pad.getAllAuthors(); + for(var i=0;i<authors.length;i++) + { + neededDBValues.push("globalAuthor:" + authors[i]); + } + + //add all revisions + var revHead = pad.head; + for(var i=0;i<=revHead;i++) + { + neededDBValues.push("pad:"+padId+":revs:" + i); + } + + //get all chat values + var chatHead = pad.chatHead; + for(var i=0;i<=chatHead;i++) + { + neededDBValues.push("pad:"+padId+":chat:" + i); + } + + //get and set all values + async.forEach(neededDBValues, function(dbkey, callback) + { + db.db.db.wrappedDB.get(dbkey, function(err, dbvalue) + { + if(err) { callback(err); return} + dbvalue=JSON.parse(dbvalue); + + dirty.set(dbkey, dbvalue, callback); + }); + }, callback); + } +], function (err) +{ + if(err) throw err; + else + { + console.log("finished"); + process.exit(); + } +}); + +//get the pad object +//get all revisions of this pad +//get all authors related to this pad +//get the readonly link releated to this pad +//get the chat entrys releated to this pad |