From a3117b5cf5e0173377dd96775562950077eac583 Mon Sep 17 00:00:00 2001 From: Gabriel Mancini de Campos Date: Mon, 27 Mar 2017 13:46:38 -0300 Subject: [PATCH 1/2] feat(core): reverse order of dbs will let _user and _replicator in last position, important when use replication document --- lib/push.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/push.js b/lib/push.js index b93079b..32d9cdb 100644 --- a/lib/push.js +++ b/lib/push.js @@ -9,7 +9,7 @@ module.exports = function (couch, source, options, callback) { utils.dbs(source, function (error, filenames) { if (error) return callback(error) - async.map(filenames, function (filename, done) { + async.map(filenames.reverse(), function (filename, done) { var dbname = utils.mapDbName(filename, options) var db = couch.use(dbname) From 69ac09f4ab2645e35ae633745e630e8c6fa68d95 Mon Sep 17 00:00:00 2001 From: Gabriel Mancini de Campos Date: Fri, 21 Apr 2017 13:39:15 -0300 Subject: [PATCH 2/2] priority dbs on push --- lib/push.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/push.js b/lib/push.js index 32d9cdb..200794e 100644 --- a/lib/push.js +++ b/lib/push.js @@ -1,15 +1,14 @@ var push = require('couchdb-push') var async = require('async') var utils = require('./utils') +var internals = ['_users', '_replicator'] module.exports = function (couch, source, options, callback) { options.concurrency = 'concurrency' in options ? options.concurrency : 100 options.index = 'index' in options ? options.index : true - utils.dbs(source, function (error, filenames) { - if (error) return callback(error) - - async.map(filenames.reverse(), function (filename, done) { + function loader (filenames, cb) { + async.map(filenames, function (filename, done) { var dbname = utils.mapDbName(filename, options) var db = couch.use(dbname) @@ -20,6 +19,19 @@ module.exports = function (couch, source, options, callback) { push(db, filename, options, next) }, utils.groupByDatabase(dbname, done)) }) - }, utils.reduceGroupedResult(callback)) + }, utils.reduceGroupedResult(cb)) + } + + utils.dbs(source, function (error, filenames) { + if (error) return callback(error) + var filenamesGruped = filenames + .reduce(function (b, c) { + var filename = utils.mapDbName(c, options) + b[(internals.indexOf(filename) === -1) ? 'filtered' : 'internals'].push(c) + return b + }, {filtered: [], internals: []}) + loader(filenamesGruped.filtered, function () { + loader(filenamesGruped.internals, callback) + }) }) }