forest-express-sequelize
Version:
Official Express/Sequelize Liana for Forest
29 lines (28 loc) • 1.09 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
require("core-js/modules/es.promise.js");
var _forestExpress = require("forest-express");
var _errors = require("./errors");
var _queryOptions = _interopRequireDefault(require("./query-options"));
class ResourcesRemover {
constructor(model, params, ids, user) {
this._model = model.unscoped();
this._params = params;
this._ids = ids;
this._user = user;
}
async perform() {
if (!Array.isArray(this._ids) || !this._ids.length) {
throw new _errors.InvalidParameterError('`ids` must be a non-empty array.');
}
const {
timezone
} = this._params;
const scopeFilters = await _forestExpress.scopeManager.getScopeForUser(this._user, this._model.name, true);
const queryOptions = new _queryOptions.default(this._model);
await queryOptions.filterByIds(this._ids);
await queryOptions.filterByConditionTree(scopeFilters, timezone);
return this._model.destroy(queryOptions.sequelizeOptions);
}
}
module.exports = ResourcesRemover;
;