require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {

  process.chdir(npm.root+'/..')

  // This script requires that you have modified your settings.json file
  // to work with a real database.  Please make a backup of your dirty.db
  // file before using this script, just to be safe.

  var settings = require("ep_etherpad-lite/node/utils/Settings");
  var dirty = require("dirty")('var/dirty.db');
  var ueberDB = require("../src/node_modules/ueberDB");
  var log4js = require("../src/node_modules/log4js");
  var dbWrapperSettings = {
      "cache": "0",         // The cache slows things down when you're mostly writing.
  };
  var db = new ueberDB.database(settings.dbType, settings.dbSettings, dbWrapperSettings, log4js.getLogger("ueberDB"));

  db.init(function() {
      console.log("Waiting for dirtyDB to parse its file.");
      dirty.on("load", function(length) {
          console.log("Loaded " + length + " records, processing now.");
          var remaining = length;
          dirty.forEach(function(key, value) {
              db.set(key, value, function(error) {
                  if (typeof error != 'undefined') {
                      console.log("Unexpected result handling: ", key, value, " was: ", error);
                  }
                  remaining -= 1;
                  var oldremaining = remaining;
                  if ((oldremaining % 100) == 0) {
                      console.log("Records not yet flushed to database: ", remaining);
                  }
              });
          });
      console.log("Please wait for all records to flush to database, then kill this process.");
    });
  });
});
