app/addons/documents/index-results/api.js (54 lines of code) (raw):

// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. import '@webcomponents/url'; import {get, post} from '../../../core/ajax'; import app from '../../../app'; import Constants from '../constants'; 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}); const query = app.utils.queryString(params); const url = `${fetchUrl}${fetchUrl.includes('?') ? '&' : '?'}${query}`; return get(url).then(json => { if (json.error) { throw new Error('(' + json.error + ') ' + json.reason); } return { docs: json.rows, docType: Constants.INDEX_RESULTS_DOC_TYPE.VIEW }; }); }; export const queryMapReduceView = (fetchUrl, params) => { // Adds the 'reduce' param in case it's not defined if (params.reduce === undefined) { params.reduce = false; } // reduce cannot be true when include_docs is true if (params.include_docs && params.reduce) { params.reduce = false; params.group = undefined; params.group_level = undefined; } // removes params not supported by partitioned views const isPartitioned = fetchUrl.includes('/_partition/'); if (isPartitioned) { params.stable = undefined; params.conflicts = undefined; } const query = app.utils.queryString(params); const url = `${fetchUrl}${fetchUrl.includes('?') ? '&' : '?'}${query}`; return get(url).then(json => { if (json.error) { throw new Error('(' + json.error + ') ' + json.reason); } return { docs: json.rows, docType: Constants.INDEX_RESULTS_DOC_TYPE.VIEW, layout: undefined }; }); }; export const postToBulkDocs = (databaseName, payload) => { const url = FauxtonAPI.urls('bulk_docs', 'server', databaseName); return post(url, payload); }; export const postToIndexBulkDelete = (databaseName, payload) => { const url = FauxtonAPI.urls('mango', 'index-server-bulk-delete', encodeURIComponent(databaseName)); return post(url, payload); };