UNPKG

pouchdb-find

Version:
53 lines (45 loc) 1.36 kB
'use strict'; var utils = require('../../../utils'); var localUtils = require('../utils'); var massageIndexDef = localUtils.massageIndexDef; function getIndexes(db) { // just search through all the design docs and filter in-memory. // hopefully there aren't that many ddocs. return db.allDocs({ startkey: '_design/', endkey: '_design/\uffff', include_docs: true }).then(function (allDocsRes) { var res = { indexes: [{ ddoc: null, name: '_all_docs', type: 'special', def: { fields: [{_id: 'asc'}] } }] }; res.indexes = utils.flatten(res.indexes, allDocsRes.rows.filter(function (row) { return row.doc.language === 'query'; }).map(function (row) { var viewNames = row.doc.views !== undefined ? Object.keys(row.doc.views) : []; return viewNames.map(function (viewName) { var view = row.doc.views[viewName]; return { ddoc: row.id, name: viewName, type: 'json', def: massageIndexDef(view.options.def) }; }); })); // these are sorted by view name for some reason res.indexes.sort(function (left, right) { return utils.compare(left.name, right.name); }); res.total_rows = res.indexes.length; return res; }); } module.exports = getIndexes;