code: function softDelete(callback) {
    var _this2 = this;
  
    if (this[this.primaryKey]) {
      _flowsync2["default"].series([function (next) {
        _this2[_symbols2["default"].callDeep]("delete", function (associationDetails) {
          return associationDetails.type !== "belongsTo" && associationDetails.dependent === true;
        }, next);
      }, function (next) {
        var now = new _fleming2["default"]();
        var attributesToUpdate = {};
        attributesToUpdate[(0, _jargon2["default"])("deletedAt").snake.toString()] = now.toDate();
        _this2[_symbols2["default"].getDatabase]().update(attributesToUpdate).into(_this2.tableName).where(_this2.primaryKey, "=", _this2[_this2.primaryKey]).results(function (error, results) {
          if (error) {
            next(error);
          } else if (results === 0) {
            next(new Error(_this2.constructor.name + " with " + _this2.primaryKey + " " + _this2[_this2.primaryKey] + " cannot be soft deleted because it doesn't exists."));
          } else {
            next();
          }
        });
      }], function (errors, results) {
        callback(errors, results);
      });
    } else {
      callback(new Error("Cannot delete the " + this.constructor.name + " because the primary key is not set."));
    }
  }
docs: Sets a column on the model to "deleted" instead of removing the row from the database.
  
  @method softDelete
  @param  {Function} callback