BelongsToOneUnrelateOperation.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. const UnrelateOperation = require('../../queryBuilder/operations/UnrelateOperation');
  2. class BelongsToOneUnrelateOperation extends UnrelateOperation {
  3. onAdd(builder, args) {
  4. const ids = new Array(this.relation.ownerProp.size);
  5. for (let i = 0, l = this.relation.ownerProp.size; i < l; ++i) {
  6. ids[i] = null;
  7. }
  8. this.ids = [ids];
  9. return true;
  10. }
  11. queryExecutor(builder) {
  12. const patch = {};
  13. const ownerProp = this.relation.ownerProp;
  14. const idColumn = builder.fullIdColumnFor(this.relation.ownerModelClass);
  15. for (let i = 0, l = ownerProp.size; i < l; ++i) {
  16. const relatedValue = this.ids[0][i];
  17. ownerProp.setProp(this.owner, i, relatedValue);
  18. ownerProp.patch(patch, i, relatedValue);
  19. }
  20. return this.relation.ownerModelClass
  21. .query()
  22. .childQueryOf(builder)
  23. .copyFrom(builder, builder.constructor.WhereSelector)
  24. .patch(patch)
  25. .whereComposite(idColumn, this.owner.$id());
  26. }
  27. }
  28. module.exports = BelongsToOneUnrelateOperation;