123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const RelationInsertOperation = require('../RelationInsertOperation');
- const { after } = require('../../utils/promiseUtils');
- class BelongsToOneInsertOperation extends RelationInsertOperation {
- onAdd(builder, args) {
- const retVal = super.onAdd(builder, args);
- if (this.models.length > 1) {
- throw this.relation.createError('can only insert one model to a BelongsToOneRelation');
- }
- return retVal;
- }
- onAfter1(builder, ret) {
- const maybePromise = super.onAfter1(builder, ret);
- const owner = this.owner;
- const ownerProp = this.relation.ownerProp;
- const relatedProp = this.relation.relatedProp;
- return after(maybePromise, inserted => {
- const patch = {};
- for (let i = 0, l = ownerProp.size; i < l; ++i) {
- const relatedValue = relatedProp.getProp(inserted[0], i);
- ownerProp.setProp(this.owner, i, relatedValue);
- ownerProp.patch(patch, i, relatedValue);
- }
- if (this.assignResultToOwner) {
- owner.$setRelated(this.relation, inserted);
- }
- return this.owner
- .$query()
- .childQueryOf(builder)
- .patch(patch)
- .return(inserted);
- });
- }
- }
- module.exports = BelongsToOneInsertOperation;
|