InstanceFindOperation.js 802 B

12345678910111213141516171819202122232425262728293031323334
  1. const FindOperation = require('./FindOperation');
  2. const { after } = require('../../utils/promiseUtils');
  3. const { assertHasId } = require('../../utils/assert');
  4. class InstanceFindOperation extends FindOperation {
  5. constructor(name, opt) {
  6. super(name, opt);
  7. this.instance = opt.instance;
  8. }
  9. onBuild(builder) {
  10. assertHasId(this.instance);
  11. const idColumn = builder.fullIdColumnFor(builder.modelClass());
  12. const id = this.instance.$id();
  13. builder.whereComposite(idColumn, id);
  14. }
  15. onAfter3(builder, result) {
  16. const maybePromise = super.onAfter3(builder, result);
  17. return after(maybePromise, result => {
  18. if (Array.isArray(result)) {
  19. return result[0];
  20. } else {
  21. return result;
  22. }
  23. });
  24. }
  25. }
  26. module.exports = InstanceFindOperation;