const UnrelateOperation = require('../../queryBuilder/operations/UnrelateOperation'); class BelongsToOneUnrelateOperation extends UnrelateOperation { onAdd(builder, args) { const ids = new Array(this.relation.ownerProp.size); for (let i = 0, l = this.relation.ownerProp.size; i < l; ++i) { ids[i] = null; } this.ids = [ids]; return true; } queryExecutor(builder) { const patch = {}; const ownerProp = this.relation.ownerProp; const idColumn = builder.fullIdColumnFor(this.relation.ownerModelClass); for (let i = 0, l = ownerProp.size; i < l; ++i) { const relatedValue = this.ids[0][i]; ownerProp.setProp(this.owner, i, relatedValue); ownerProp.patch(patch, i, relatedValue); } return this.relation.ownerModelClass .query() .childQueryOf(builder) .copyFrom(builder, builder.constructor.WhereSelector) .patch(patch) .whereComposite(idColumn, this.owner.$id()); } } module.exports = BelongsToOneUnrelateOperation;