diff --git a/app/lib/dal/fileDAL.js b/app/lib/dal/fileDAL.js index 4b678f247f6754041bbff749d0afe291916e9027..c5959b881965cb73b08a235dd9ec348c30072d6a 100644 --- a/app/lib/dal/fileDAL.js +++ b/app/lib/dal/fileDAL.js @@ -98,7 +98,7 @@ function FileDAL(profile, home, localDir, myFS, parentFileDAL, dalName, loki) { // DALs this.confDAL = new ConfDAL(rootPath, myFS, parentFileDAL && parentFileDAL.confDAL.coreFS, that, CFSStorage); - this.peerDAL = new PeerDAL(rootPath, myFS, parentFileDAL && parentFileDAL.peerDAL.coreFS, that, CFSStorage); + this.peerDAL = new PeerDAL(loki); this.blockDAL = new BlockDAL(loki, blocksCFS, getLowerWindowBlock); this.sourcesDAL = new SourcesDAL(loki); this.txsDAL = new TxsDAL(loki); @@ -1193,7 +1193,12 @@ function FileDAL(profile, home, localDir, myFS, parentFileDAL, dalName, loki) { this.resetPeers = function(done) { var files = []; var dirs = ['peers']; - return resetFiles(files, dirs, done); + return co(function *() { + that.peerDAL.lokiRemoveAll(); + yield resetFiles(files, dirs); + }) + .then(() => done && done()) + .catch((err) => done && done(err)); }; this.resetTransactions = function(done) { diff --git a/app/lib/dal/fileDALs/AbstractLoki.js b/app/lib/dal/fileDALs/AbstractLoki.js index 832093f33bf2623957a9d9c7c00db925bde63d39..daab0c6f64a16e89e9d40a95bde08bf08123f2cf 100644 --- a/app/lib/dal/fileDALs/AbstractLoki.js +++ b/app/lib/dal/fileDALs/AbstractLoki.js @@ -68,6 +68,9 @@ function AbstractLoki(collection) { return false; }; + this.lokiRemoveAll = () => + collection.removeDataOnly(); + this.lokiRemoveWhere = (conditions) => collection.removeWhere(conditions); diff --git a/app/lib/dal/fileDALs/PeerDAL.js b/app/lib/dal/fileDALs/PeerDAL.js index 62b37cfda10a4909992180f52e6a13a9076e8b74..46b667e959037bec9b5299dec3448b483d8e06fb 100644 --- a/app/lib/dal/fileDALs/PeerDAL.js +++ b/app/lib/dal/fileDALs/PeerDAL.js @@ -2,19 +2,41 @@ * Created by cgeek on 22/08/15. */ +var Q = require('q'); +var AbstractLoki = require('./AbstractLoki'); + module.exports = PeerDAL; -function PeerDAL(rootPath, qioFS, parentCore, localDAL, AbstractStorage) { +function PeerDAL(loki) { "use strict"; - AbstractStorage.call(this, rootPath, qioFS, parentCore, localDAL); + let collection = loki.getCollection('peers') || loki.addCollection('peers', { indices: ['pubkey', 'status'] }); + + AbstractLoki.call(this, collection); + + this.idKeys = ['pubkey']; + this.propsToSave = [ + 'version', + 'currency', + 'status', + 'statusTS', + 'hash', + 'first_down', + 'last_try', + 'pub', + 'pubkey', + 'block', + 'signature', + 'endpoints', + 'raw' + ]; - this.init = () => this.coreFS.makeTree('peers/'); + this.init = () => null; - this.listAll = () => this.coreFS.listJSON('peers/'); + this.listAll = () => Q(collection.find()); - this.getPeer = (pubkey) => this.coreFS.readJSON('peers/' + pubkey + '.json'); + this.getPeer = (pubkey) => Q(collection.find({ pubkey: pubkey })[0]); - this.savePeer = (peer) => this.coreFS.writeJSON('peers/' + peer.pubkey + '.json', peer); + this.savePeer = (peer) => this.lokiSave(peer); } diff --git a/bin/ucoind b/bin/ucoind index 06d132a2898e50556a92c08bec566d2ec14853fd..dffece8612d4db62093dfcbad54f4010cd893b44 100755 --- a/bin/ucoind +++ b/bin/ucoind @@ -372,31 +372,33 @@ program program .command('reset [config|data|peers|tx|stats|all]') .description('Reset configuration, data, peers, transactions or everything in the database') - .action(connect(function (type, server) { - if(!~['config', 'data', 'peers', 'tx', 'stats', 'all'].indexOf(type)){ - logger.error('Bad command: usage `reset config`, `reset data`, `reset peers`, `reset tx`, `reset stats` or `reset all`'); - server.disconnect(); - return; - } - if(type == 'data'){ - server.resetData(resetDone(server, 'Data successfully reseted.')); - } - if(type == 'peers'){ - server.resetPeers(resetDone(server, 'Peers successfully reseted.')); - } - if(type == 'tx'){ - server.resetTxs(resetDone(server, 'Transactions successfully reseted.')); - } - if(type == 'stats'){ - server.resetStats(resetDone(server, 'Stats successfully reseted.')); - } - if(type == 'config'){ - server.resetConf(resetDone(server, 'Configuration successfully reseted.')); - } - if(type == 'all'){ - server.reset(resetDone(server, 'Data & Configuration successfully reseted.')); - } - }, true)); + .action((type) => { + connect(function (server) { + if(!~['config', 'data', 'peers', 'tx', 'stats', 'all'].indexOf(type)){ + logger.error('Bad command: usage `reset config`, `reset data`, `reset peers`, `reset tx`, `reset stats` or `reset all`'); + server.disconnect(); + return; + } + if(type == 'data'){ + server.resetData(resetDone(server, 'Data successfully reseted.')); + } + if(type == 'peers'){ + server.resetPeers(resetDone(server, 'Peers successfully reseted.')); + } + if(type == 'tx'){ + server.resetTxs(resetDone(server, 'Transactions successfully reseted.')); + } + if(type == 'stats'){ + server.resetStats(resetDone(server, 'Stats successfully reseted.')); + } + if(type == 'config'){ + server.resetConf(resetDone(server, 'Configuration successfully reseted.')); + } + if(type == 'all'){ + server.reset(resetDone(server, 'Data & Configuration successfully reseted.')); + } + }, type != 'peers')(type); + }); function resetDone(server, msg) { return function(err) {