| 'use strict'; |
| |
| var utils = require('../utils'); |
| |
| // TODO: check CouchDB's replication id generation |
| // Generate a unique id particular to this replication |
| function genReplicationId(src, target, opts) { |
| var filterFun = opts.filter ? opts.filter.toString() : ''; |
| return src.id().then(function (src_id) { |
| return target.id().then(function (target_id) { |
| var queryData = src_id + target_id + filterFun + |
| JSON.stringify(opts.query_params) + opts.doc_ids; |
| return utils.MD5(queryData).then(function (md5) { |
| // can't use straight-up md5 alphabet, because |
| // the char '/' is interpreted as being for attachments, |
| // and + is also not url-safe |
| md5 = md5.replace(/\//g, '.').replace(/\+/g, '_'); |
| return '_local/' + md5; |
| }); |
| }); |
| }); |
| } |
| |
| module.exports = genReplicationId; |