UNPKG

pouchdb-find

Version:
36 lines (28 loc) 909 B
'use strict'; var abstractMapper = require('../abstract-mapper'); var upsert = require('../../../abstract-mapreduce/upsert'); function deleteIndex(db, index) { if (!index.ddoc) { throw new Error('you must supply an index.ddoc when deleting'); } if (!index.name) { throw new Error('you must supply an index.name when deleting'); } var docId = index.ddoc; var viewName = index.name; function deltaFun (doc) { if (Object.keys(doc.views).length === 1 && doc.views[viewName]) { // only one view in this ddoc, delete the whole ddoc return {_id: docId, _deleted: true}; } // more than one view here, just remove the view delete doc.views[viewName]; return doc; } return upsert(db, docId, deltaFun).then(function () { return abstractMapper.viewCleanup.apply(db); }).then(function () { return {ok: true}; }); } module.exports = deleteIndex;