diff --git a/lib/push.js b/lib/push.js index b93079b..200794e 100644 --- a/lib/push.js +++ b/lib/push.js @@ -1,14 +1,13 @@ 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) - + 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) + }) }) }