This is an automated email from the ASF dual-hosted git repository. amaranhao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git
The following commit(s) were added to refs/heads/master by this push: new 8caf960 Use partitioned query for all docs (#1195) 8caf960 is described below commit 8caf9606ac8d5eba381fd0672c762052e464f502 Author: Antonio Maranhao <30349380+antonio-maran...@users.noreply.github.com> AuthorDate: Wed Mar 20 10:21:44 2019 -0400 Use partitioned query for all docs (#1195) --- app/addons/documents/base.js | 3 +++ app/addons/documents/components/actions.js | 9 +++++---- app/addons/documents/index-results/api.js | 4 ---- app/addons/documents/routes-documents.js | 4 +++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/addons/documents/base.js b/app/addons/documents/base.js index 3b8a659..6294b00 100644 --- a/app/addons/documents/base.js +++ b/app/addons/documents/base.js @@ -69,6 +69,9 @@ FauxtonAPI.registerUrls('partitioned_allDocs', { }, apiurl: function (databaseName, partitionKey, query) { return Helpers.getApiUrl('/' + databaseName + '/_partition/' + partitionKey + '/_all_docs' + getQueryParam(query)); + }, + server: function (databaseName, partitionKey, query) { + return Helpers.getServerUrl('/' + databaseName + '/_partition/' + partitionKey + '/_all_docs' + getQueryParam(query)); } }); diff --git a/app/addons/documents/components/actions.js b/app/addons/documents/components/actions.js index 6da915e..d9b266f 100644 --- a/app/addons/documents/components/actions.js +++ b/app/addons/documents/components/actions.js @@ -15,15 +15,16 @@ import { get } from "../../../core/ajax"; export default { fetchAllDocsWithKey: (database, partitionKey) => { - const keyPrefix = partitionKey ? `${partitionKey}:` : ""; return (id, callback) => { const query = '?' + app.utils.queryParams({ - startkey: JSON.stringify(keyPrefix + id), - endkey: JSON.stringify(keyPrefix + id + "\u9999"), + startkey: JSON.stringify(id), + endkey: JSON.stringify(id + "\u9999"), limit: 30 }); - const url = FauxtonAPI.urls('allDocs', 'server', database.safeID(), query); + const url = partitionKey ? + FauxtonAPI.urls('partitioned_allDocs', 'server', database.safeID(), encodeURIComponent(partitionKey), query) : + FauxtonAPI.urls('allDocs', 'server', database.safeID(), query); get(url).then(res => { let options = []; if (!res.error) { diff --git a/app/addons/documents/index-results/api.js b/app/addons/documents/index-results/api.js index 7bf6370..b8bcd8f 100644 --- a/app/addons/documents/index-results/api.js +++ b/app/addons/documents/index-results/api.js @@ -19,10 +19,6 @@ import FauxtonAPI from '../../../core/api'; export const queryAllDocs = (fetchUrl, partitionKey, params) => { // Exclude params 'group', 'reduce' and 'group_level' if present since they not allowed for '_all_docs' Object.assign(params, {reduce: undefined, group: undefined, group_level: undefined}); - if (partitionKey) { - // partition filter overrides any 'between keys' values set - Object.assign(params, {inclusive_end: false, start_key: `"${partitionKey}:"`, end_key: `"${partitionKey}:\ufff0"`}); - } const query = app.utils.queryString(params); const url = `${fetchUrl}${fetchUrl.includes('?') ? '&' : '?'}${query}`; return get(url).then(json => { diff --git a/app/addons/documents/routes-documents.js b/app/addons/documents/routes-documents.js index a6d9345..3e9f914 100644 --- a/app/addons/documents/routes-documents.js +++ b/app/addons/documents/routes-documents.js @@ -103,7 +103,9 @@ var DocumentsRouteObject = BaseRoute.extend({ const params = this.createParams(options); const docParams = params.docParams; - const url = FauxtonAPI.urls('allDocsSanitized', 'server', databaseName); + const url = partitionKey ? + FauxtonAPI.urls('partitioned_allDocs', 'server', encodeURIComponent(databaseName), encodeURIComponent(partitionKey)) : + FauxtonAPI.urls('allDocsSanitized', 'server', databaseName); // this is used for the header and sidebar this.database.buildAllDocs(docParams);