HasManyInsertOperation.js 966 B

1234567891011121314151617181920212223242526272829303132333435
  1. const RelationInsertOperation = require('../RelationInsertOperation');
  2. const { after } = require('../../utils/promiseUtils');
  3. class HasManyInsertOperation extends RelationInsertOperation {
  4. onAdd(builder, args) {
  5. const retVal = super.onAdd(builder, args);
  6. const ownerProp = this.relation.ownerProp;
  7. const relatedProp = this.relation.relatedProp;
  8. for (let i = 0, lm = this.models.length; i < lm; ++i) {
  9. const model = this.models[i];
  10. for (let j = 0, lp = relatedProp.size; j < lp; ++j) {
  11. relatedProp.setProp(model, j, ownerProp.getProp(this.owner, j));
  12. }
  13. }
  14. return retVal;
  15. }
  16. onAfter1(builder, ret) {
  17. const maybePromise = super.onAfter1(builder, ret);
  18. if (!this.assignResultToOwner) {
  19. return maybePromise;
  20. }
  21. return after(maybePromise, inserted => {
  22. this.owner.$appendRelated(this.relation, inserted);
  23. return inserted;
  24. });
  25. }
  26. }
  27. module.exports = HasManyInsertOperation;