diff --git a/bin/checkAllPads.js b/bin/checkAllPads.js new file mode 100644 index 00000000..90cb1527 --- /dev/null +++ b/bin/checkAllPads.js @@ -0,0 +1,145 @@ +/* + This is a debug tool. It checks all revisions for data corruption +*/ + +if(process.argv.length != 2) +{ + console.error("Use: node bin/checkAllPads.js"); + process.exit(1); +} + +//initalize the variables +var db, settings, padManager; +var npm = require("../src/node_modules/npm"); +var async = require("../src/node_modules/async"); + +var Changeset = require("../src/static/js/Changeset"); + +async.series([ + //load npm + function(callback) { + npm.load({}, callback); + }, + //load modules + function(callback) { + settings = require('../src/node/utils/Settings'); + db = require('../src/node/db/DB'); + + //initalize the database + db.init(callback); + }, + //load pads + function (callback) + { + padManager = require('../src/node/db/PadManager'); + + padManager.listAllPads(function(err, res) + { + padIds = res.padIDs; + callback(err); + }); + }, + function (callback) + { + async.forEach(padIds, function(padId, callback) + { + padManager.getPad(padId, function(err, pad) { + if (err) { + callback(err); + } + + //check if the pad has a pool + if(pad.pool === undefined ) + { + console.error("[" + pad.id + "] Missing attribute pool"); + callback(); + return; + } + + //create an array with key kevisions + //key revisions always save the full pad atext + var head = pad.getHeadRevisionNumber(); + var keyRevisions = []; + for(var i=0;i