/** * Store for apps * * @author Björn Hase * @license hhttps://www.gnu.org/licenses/gpl-3.0.en.html GPL-3 * @link https://gitea.node001.net/HerrHase/potato-launcher.git * */ import AppsDatabase from './../database/apps.js' import tagsStore from './../stores/tags.js' import observable from '@riotjs/observable' export default observable({ parameters: { sort: 'name', tags: [] }, /** * getting all apps * */ get() { const appsDatabase = new AppsDatabase() appsDatabase.find(this.parameters).then((data) => { this.trigger('ready', data) }) }, /** * getting single apps * * @param {uuid} id * */ getOne(id) { const appsDatabase = new AppsDatabase() appsDatabase.findOneById(id).then((data) => { this.trigger('readyOne', data) }) }, /** * create new app * * @param {object} data * */ post(data) { const appsDatabase = new AppsDatabase() appsDatabase.create(data).then((data) => { this.trigger('success', data) tagsStore.get() }) }, /** * update app * * @param {object} data * */ put(data) { const appsDatabase = new AppsDatabase() appsDatabase.update(data).then((data) => { this.trigger('success', data) tagsStore.get() }) }, /** * update app * * @param {object} data * */ remove(data) { const appsDatabase = new AppsDatabase() appsDatabase.remove(data).then(() => { this.trigger('close') tagsStore.get() }) }, /** * orderBy and run get * * @param {string} orderBy * */ sort(column) { this.parameters.sort = column this.get() }, /** * filter and run get * * @param {array} tags * */ filter(tags) { this.parameters.tags = tags this.get() } })