You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by gl...@apache.org on 2018/07/18 13:58:35 UTC
[couchdb-nano] 05/08: added central getCallback function to remove
code duplication
This is an automated email from the ASF dual-hosted git repository.
glynnbird pushed a commit to branch issue98
in repository https://gitbox.apache.org/repos/asf/couchdb-nano.git
commit 11c616831ebe75bbff3342e9fc167f493845fb0a
Author: Glynn Bird <gl...@gmail.com>
AuthorDate: Wed Jul 18 14:43:35 2018 +0100
added central getCallback function to remove code duplication
---
lib/nano.js | 242 ++++++++++++++++++++++--------------------------------------
1 file changed, 87 insertions(+), 155 deletions(-)
diff --git a/lib/nano.js b/lib/nano.js
index 4e41a5f..1bf2d17 100644
--- a/lib/nano.js
+++ b/lib/nano.js
@@ -23,6 +23,17 @@ const logger = require('./logger');
let nano;
+function getCallback (opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return {
+ opts,
+ callback
+ };
+}
+
module.exports = exports = nano = function dbScope(cfg) {
let serverScope = {};
@@ -297,14 +308,11 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates
- function updates(qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
+ function updates(qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: '_db_updates',
- qs: qs
+ qs: opts
}, callback);
}
@@ -352,35 +360,23 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes
- function changesDb(dbName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
- return relax({db: dbName, path: '_changes', qs: qs}, callback);
+ function changesDb(dbName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ return relax({db: dbName, path: '_changes', qs: opts}, callback);
}
- function changesDbAsStream(dbName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
- return relax({db: dbName, path: '_changes', stream: true, qs: qs}, callback);
+ function changesDbAsStream(dbName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ return relax({db: dbName, path: '_changes', stream: true, qs: opts}, callback);
}
- function followDb(dbName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
- qs = qs || {};
- qs.db = urlResolveFix(cfg.url, encodeURIComponent(dbName));
-
+ function followDb(dbName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ opts.db = urlResolveFix(cfg.url, encodeURIComponent(dbName));
if (typeof callback === 'function') {
- return followAgent(qs, callback);
+ return followAgent(opts, callback);
} else {
- return new followAgent.Feed(qs);
+ return new followAgent.Feed(opts);
}
}
@@ -393,11 +389,9 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate
- function replicateDb(source, target, opts, callback) {
- if (typeof opts === 'function') {
- callback = opts;
- opts = {};
- }
+ function replicateDb(source, target, opts0, callback0) {
+ const {opts, callback} = getCallback(opts0, callback0);
+
// _replicate
opts.source = _serializeAsUrl(source);
opts.target = _serializeAsUrl(target);
@@ -411,16 +405,13 @@ module.exports = exports = nano = function dbScope(cfg) {
callback = count;
count = 1;
}
-
return relax({ method: 'GET', path: '_uuids', qs: {count: count}}, callback);
}
// http://guide.couchdb.org/draft/replication.html
- function enableReplication(source, target, opts, callback) {
- if (typeof opts === 'function') {
- callback = opts;
- opts = {};
- }
+ function enableReplication(source, target, opts0, callback0) {
+ const {opts, callback} = getCallback(opts0, callback0);
+
// _replicator
opts.source = _serializeAsUrl(source);
opts.target = _serializeAsUrl(target);
@@ -429,20 +420,14 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://guide.couchdb.org/draft/replication.html
- function queryReplication(id, opts, callback) {
- if (typeof opts === 'function') {
- callback = opts;
- opts = {};
- }
+ function queryReplication(id, opts0, callback0) {
+ const {opts, callback} = getCallback(opts0, callback0);
return relax({db: '_replicator', method: 'GET', path: id}, callback);
}
// http://guide.couchdb.org/draft/replication.html
- function disableReplication(id, rev, opts, callback) {
- if (typeof opts === 'function') {
- callback = opts;
- opts = {};
- }
+ function disableReplication(id, rev, opts0, callback0) {
+ const {opts, callback} = getCallback(opts0, callback0);
return relax({db: '_replicator', method: 'DELETE', path: id, qs: {rev: rev}}, callback);
}
@@ -452,28 +437,25 @@ module.exports = exports = nano = function dbScope(cfg) {
// http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid
// http://docs.couchdb.org/en/latest/api/database/common.html#post--db
- function insertDoc(doc, qs, callback) {
- const opts = {db: dbName, body: doc, method: 'POST'};
+ function insertDoc(doc, qs0, callback0) {
+ const req = {db: dbName, body: doc, method: 'POST'};
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
+ let {opts, callback} = getCallback(qs0, callback0);
- if (typeof qs === 'string') {
- qs = {docName: qs};
+ if (typeof opts === 'string') {
+ opts = {docName: opts};
}
- if (qs) {
- if (qs.docName) {
- opts.doc = qs.docName;
- opts.method = 'PUT';
- delete qs.docName;
+ if (opts) {
+ if (opts.docName) {
+ req.doc = opts.docName;
+ req.method = 'PUT';
+ delete opts.docName;
}
- opts.qs = qs;
+ req.qs = opts;
}
- return relax(opts, callback);
+ return relax(req, callback);
}
// http://docs.couchdb.org/en/latest/api/document/common.html#delete--db-docid
@@ -498,18 +480,15 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid
- function getDoc(docName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
+ function getDoc(docName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
if(!docName) {
if(callback)
callback("Invalid doc id", null);
}
else {
- return relax({db: dbName, doc: docName, qs: qs}, callback);
+ return relax({db: dbName, doc: docName, qs: opts}, callback);
}
}
@@ -537,11 +516,8 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/document/common.html#copy--db-docid
- function copyDoc(docSrc, docDest, opts, callback) {
- if (typeof opts === 'function') {
- callback = opts;
- opts = {};
- }
+ function copyDoc(docSrc, docDest, opts0, callback0) {
+ const {opts, callback} = getCallback(opts0, callback0);
const qs = {
db: dbName,
@@ -567,70 +543,51 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs
- function listDoc(qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
- return relax({db: dbName, path: '_all_docs', qs: qs}, callback);
+ function listDoc(qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ return relax({db: dbName, path: '_all_docs', qs: opts}, callback);
}
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs
- function listDocAsStream(qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
- return relax({db: dbName, path: '_all_docs', qs: qs, stream: true}, callback);
+ function listDocAsStream(qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ return relax({db: dbName, path: '_all_docs', qs: opts, stream: true}, callback);
}
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs
- function fetchDocs(docNames, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
- qs = qs || {};
- qs['include_docs'] = true;
+ function fetchDocs(docNames, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ opts['include_docs'] = true;
return relax({
db: dbName,
path: '_all_docs',
method: 'POST',
- qs: qs,
+ qs: opts,
body: docNames
}, callback);
}
- function fetchRevs(docNames, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
+ function fetchRevs(docNames, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: dbName,
path: '_all_docs',
method: 'POST',
- qs: qs,
+ qs: opts,
body: docNames
}, callback);
}
- function view(ddoc, viewName, meta, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
+ function view(ddoc, viewName, meta, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
if (typeof meta.stream !== 'boolean') {
meta.stream = false;
}
// prevent mutation of the client qs object by using a clone
- const qs1 = Object.assign({}, qs);
+ const qs1 = Object.assign({}, opts);
const viewPath = '_design/' + ddoc + '/_' + meta.type + '/' + viewName;
@@ -733,18 +690,14 @@ module.exports = exports = nano = function dbScope(cfg) {
}
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_bulksDoc
- function bulksDoc(docs, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
+ function bulksDoc(docs, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: dbName,
path: '_bulk_docs',
body: docs,
method: 'POST',
- qs: qs
+ qs: opts
}, callback);
}
@@ -788,88 +741,67 @@ module.exports = exports = nano = function dbScope(cfg) {
}, callback);
}
- function getMultipart(docName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
- qs = qs || {};
-
- qs.attachments = true;
+ function getMultipart(docName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
+ opts.attachments = true;
return relax({
db: dbName,
doc: docName,
encoding: null,
accept: 'multipart/related',
- qs: qs
+ qs: opts
}, callback);
}
- function insertAtt(docName, attName, att, contentType, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
+ function insertAtt(docName, attName, att, contentType, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: dbName,
att: attName,
method: 'PUT',
contentType: contentType,
doc: docName,
- qs: qs,
+ qs: opts,
body: att,
dontStringify: true
}, callback);
}
- function insertAttAsStream(docName, attName, att, contentType, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
+ function insertAttAsStream(docName, attName, att, contentType, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: dbName,
att: attName,
method: 'PUT',
contentType: contentType,
doc: docName,
- qs: qs,
+ qs: opts,
body: att,
stream: true,
dontStringify: true
}, callback);
}
- function getAtt(docName, attName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
+ function getAtt(docName, attName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: dbName,
att: attName,
doc: docName,
- qs: qs,
+ qs: opts,
encoding: null,
dontParse: true
}, callback);
}
- function getAttAsStream(docName, attName, qs, callback) {
- if (typeof qs === 'function') {
- callback = qs;
- qs = {};
- }
-
+ function getAttAsStream(docName, attName, qs0, callback0) {
+ const {opts, callback} = getCallback(qs0, callback0);
return relax({
db: dbName,
att: attName,
doc: docName,
- qs: qs,
+ qs: opts,
stream: true,
encoding: null,
dontParse: true