"use strict"; const defaultValue = require("default-value"); const chalk = require("chalk"); const logStatus = require("../log-status"); module.exports = function (state) { const queries = require("../queries")(state); return function createDatabaseMutationAPI({ tx, item, taskVersion, task }) { return { createItem: function (options) { logStatus(task, chalk.gray, "new", options.id); return queries.createItem(tx, { ...options, parentID: item.id }); }, renameItem: function (options) { return queries.renameItem(tx, options); }, mergeItem: function (options) { // FIXME: Move default return queries.mergeItem(tx, { ...options, from: defaultValue(options.from, item.id) }); }, deleteItem: function (options) { return queries.deleteItem(tx, { id: options.id }); }, createAlias: function (options) { // FIXME: Move default return queries.createAlias(tx, { ...options, to: defaultValue(options.to, item.id) }); }, deleteAlias: function (from) { return queries.deleteAlias(tx, { from: from }); }, updateData: function (options) { return queries.updateData(tx, options); }, updateMetadata: function (options) { return queries.updateMetadata(tx, { ... options, taskVersion: taskVersion }); }, expire: function (options) { return queries.expire(tx, options); } }; }; };