InstanceDeleteOperation.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const DeleteOperation = require('./DeleteOperation');
  2. const { assertHasId } = require('../../utils/assert');
  3. const { afterReturn } = require('../../utils/promiseUtils');
  4. class InstanceDeleteOperation extends DeleteOperation {
  5. constructor(name, opt) {
  6. super(name, opt);
  7. this.instance = opt.instance;
  8. }
  9. onBefore2(builder, result) {
  10. const maybePromise = this.instance.$beforeDelete(builder.context());
  11. return afterReturn(maybePromise, result);
  12. }
  13. onBuild(builder) {
  14. super.onBuild(builder);
  15. assertHasId(this.instance);
  16. const idColumn = builder.fullIdColumnFor(builder.modelClass());
  17. const id = this.instance.$id();
  18. builder.whereComposite(idColumn, id);
  19. }
  20. onAfter2(builder, result) {
  21. // The result may be an object if `returning` was used.
  22. if (Array.isArray(result)) {
  23. result = result[0];
  24. }
  25. const maybePromise = this.instance.$afterDelete(builder.context());
  26. return afterReturn(maybePromise, result);
  27. }
  28. }
  29. module.exports = InstanceDeleteOperation;