migration script
This commit is contained in:
parent
95b0b72416
commit
4864e81fba
|
@ -2,7 +2,6 @@
|
|||
|
||||
var _ = require('lodash');
|
||||
var levelup = require('levelup');
|
||||
var multilevel = require('multilevel');
|
||||
var net = require('net');
|
||||
var async = require('async');
|
||||
var $ = require('preconditions').singleton();
|
||||
|
@ -22,16 +21,9 @@ var Storage = function(opts) {
|
|||
this.db = opts.db;
|
||||
|
||||
if (!this.db) {
|
||||
if (opts.multiLevel) {
|
||||
this.db = multilevel.client();
|
||||
var con = net.connect(opts.multiLevel);
|
||||
con.pipe(this.db.createRpcStream()).pipe(con);
|
||||
log.info('Using multilevel server:' + opts.multiLevel.host + ':' + opts.multiLevel.port);
|
||||
} else {
|
||||
this.db = levelup(opts.dbPath || './db/bws.db', {
|
||||
valueEncoding: 'json'
|
||||
});
|
||||
}
|
||||
this.db = levelup(opts.dbPath || './db/bws.db', {
|
||||
valueEncoding: 'json'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
'use strict';
|
||||
|
||||
var LevelStorage = require('../lib/storage_leveldb');
|
||||
var MongoStorage = require('../lib/storage');
|
||||
|
||||
|
||||
var level = new LevelStorage({
|
||||
dbPath: './db/bws.db',
|
||||
});
|
||||
|
||||
var mongo = new MongoStorage();
|
||||
mongo.connect({
|
||||
host: 'localhost',
|
||||
port: '27017'
|
||||
}, function(err) {
|
||||
if (err) throw err;
|
||||
mongo.db.dropDatabase(function(err) {
|
||||
if (err) throw err;
|
||||
run(function(err) {
|
||||
if (err) throw err;
|
||||
console.log('All data successfully migrated');
|
||||
process.exit(0);
|
||||
// mongo._dump(function() {
|
||||
// process.exit(0);
|
||||
// });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function run(cb) {
|
||||
level.db.readStream()
|
||||
.on('data', function(data) {
|
||||
migrate(data.key, data.value, function(err) {
|
||||
if (err) throw err;
|
||||
});
|
||||
})
|
||||
.on('error', function(err) {
|
||||
return cb(err);
|
||||
})
|
||||
.on('end', function() {
|
||||
return cb();
|
||||
});
|
||||
};
|
||||
|
||||
function migrate(key, value, cb) {
|
||||
if (key.match(/^copayer!/)) {
|
||||
value.copayerId = key.substring(key.indexOf('!') + 1);
|
||||
mongo.db.collection('copayers_lookup').insert(value, cb);
|
||||
} else if (key.match(/!addr!/)) {
|
||||
value.walletId = key.substring(2, key.indexOf('!addr'));
|
||||
mongo.db.collection('addresses').insert(value, cb);
|
||||
} else if (key.match(/!not!/)) {
|
||||
mongo.db.collection('notifications').insert(value, cb);
|
||||
} else if (key.match(/!p?txp!/)) {
|
||||
value.isPending = key.indexOf('!ptxp!') != -1;
|
||||
mongo.db.collection('txs').insert(value, cb);
|
||||
} else if (key.match(/!main$/)) {
|
||||
mongo.db.collection('wallets').insert(value, cb);
|
||||
} else {
|
||||
return cb(new Error('Invalid key ' + key));
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue