You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by am...@apache.org on 2019/03/20 14:21:48 UTC
[couchdb-fauxton] branch master updated: Use partitioned query for
all docs (#1195)
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 <30...@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);