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);

Reply via email to