in provider/app.js [81:152]
function createDatabase() {
const method = 'createDatabase';
logger.info(method, 'creating the trigger database', dbUrl);
const nano = require('nano')(dbUrl)
if (nano !== null) {
return new Promise(function (resolve, reject) {
nano.db.create(databaseName, function (err, body) {
if (!err) {
logger.info(method, 'created trigger database:', databaseName);
}
else if (err.statusCode !== 412) {
logger.info(method, 'failed to create trigger database:', databaseName, err);
}
const viewDD = {
views: {
triggers_by_worker: {
map: function (doc) {
if (doc.maxTriggers && (!doc.status || doc.status.active === true)) {
emit(doc.worker || 'worker0', 1);
}
}.toString(),
reduce: '_count'
}
}
};
createDesignDoc(nano.db.use(databaseName), viewDDName, viewDD)
.then(db => {
const filterDD = {
filters: {
triggers_by_worker:
function (doc, req) {
return doc.maxTriggers && ((!doc.worker && req.query.worker === 'worker0') ||
(doc.worker === req.query.worker));
}.toString()
}
};
return createDesignDoc(db, filterDDName, filterDD);
})
.then(db => {
if (monitoringAuth) {
const filterDD = {
filters: {
canary_docs:
function (doc, req) {
return doc.isCanaryDoc && doc.host === req.query.host;
}.toString()
}
};
return createDesignDoc(db, '_design/' + constants.MONITOR_DESIGN_DOC, filterDD);
}
else {
return Promise.resolve(db);
}
})
.then((db) => {
resolve(db);
})
.catch(err => {
reject(err);
});
});
});
}
else {
Promise.reject('pluggable feed provider did not get created. check db URL: ' + dbUrl);
}
}