import PouchdbHandler from './pouchdbHandler.js' /** * apps * * @author Björn Hase * @license hhttps://www.gnu.org/licenses/gpl-3.0.en.html GPL-3 * @link https://gitea.node001.net/HerrHase/tellme-bot.git * */ class AppsStore extends PouchdbHandler { constructor() { super() // add index for apps this.createIndex([ 'name', 'description', 'tags' ]) } /** * * @param {object} data * @return {object} * */ create(data) { return this.db.post(data) .then((response) => { return this.findOneById(response._id) }).catch((error) => { console.error(error) }) } /** * * @param {object} data * @return {object} * */ update(data) { return this.db.put(data) .then((response) => { return this.findOneById(response._id) }).catch((error) => { console.error(error) }) } /** * find one app by id * * @param {string} id * @return {mixed} * */ findOneById(id) { const query = { 'fields': [ '_id', '_rev', 'name', 'command', 'description', 'thumbnail', 'tags' ], 'selector': { '_id' : id } } return this.db.find(query).then((documents) => { if (documents.docs.length === 0) { return null } else { return documents.docs[0] } }).catch((error) => { console.error(error) }) } /** * find apps * * @return {mixed} * */ find() { const query = { 'fields': [ '_id', 'name', 'command', 'description', 'thumbnail', 'tags', 'started_date' ], 'selector': { 'name': { '$exists': true } } } return this.db.find(query).then((documents) => { if (documents.warning) { console.warning(documents.warning) } return documents.docs }).catch((error) => { console.error(error) }) } } export default AppsStore