diff --git a/util/dbdump.js b/util/dbdump.js new file mode 100644 index 0000000..64635f4 --- /dev/null +++ b/util/dbdump.js @@ -0,0 +1,26 @@ +#!/usr/bin/env node +'use strict'; + + var levelup = require('levelup'); + + + +var dbPath = process.argv[2]; +var s = process.argv[3]; +console.log('DB: ',dbPath); //TODO + + + +var db = levelup(dbPath ); + + +db.createReadStream({start: s, end: s+'~'}) + .on('data', function (data) { + console.log(data.key + ' => ' + data.value); //TODO + }) + .on('error', function () { + }) + .on('end', function () { + }); + + diff --git a/util/migration.js b/util/migration.js new file mode 100644 index 0000000..e670e32 --- /dev/null +++ b/util/migration.js @@ -0,0 +1,63 @@ +var levelup = require('levelup'); +var bitcore = require('bitcore'); +var _ = require('lodash'); + +var home = process.env['HOME']; +var db = new levelup(process.argv[2] || (home + '/.insight/testnet/emailstore')); +var newDb = new levelup(process.argv[3] || (home + '/.insight/testnet/emailstore.migrated')); + +var transformStoredValue = function(key) { + var oldKey = key.substr('credentials-store-'.length); + return 'emailstore-' + bitcore.util.twoSha256(oldKey).toString('hex'); +}; + +var transformPending = function(key) { + var oldKey = key.substr('validation-code-'.length); + return 'pending-' + oldKey; +}; + +var transformPassphrase = function(key) { + var oldKey = key.substr('map-email-'.length); + return 'email-to-passphrase-' + bitcore.util.twoSha256(oldKey).toString('hex'); +}; + +var transformValidated = function(key) { + var oldKey = key.substr('validated-email-'.length); + return 'validated-' + bitcore.util.twoSha256(oldKey).toString('hex'); +}; + +var checks = { + 'credentials-store-': transformStoredValue, + 'validation-code-': transformPending, + 'map-email-': transformPassphrase, + 'validated-email': transformValidated +}; + +db.createReadStream() + .on('data', function(data) { + console.log('- Analizing key: ' + data.key); + _.each(checks, function(checkFunction, checkName) { + + if (data.key.indexOf(checkName) === 0) { + db.get('migration-' + data.key, function(err, value) { + if ((err && err.notFound) || data.value !== value) { + + var newKey = checkFunction(data.key); + if (data.value !== value) { + console.log(' - ' + newKey + ' outdated, migrating...') + } else { + console.log(' - ' + data.key + ' not migrated, migrating to ' + newKey); + } + + newDb.put(newKey, data.value, function(err) { + if (err) { + console.log(' - Error migrating ' + data.key + '!', err); + } else { + db.put('migration-' + data.key, data.value, function() {}); + } + }); + } + }); + } + }); + });