MCPcopy
hub / github.com/sequelize/sequelize / _validateIncludedElements

Method _validateIncludedElements

lib/model.js:498–585  ·  lib/model.js::Model._validateIncludedElements
(options, tableNames)

Source from the content-addressed store, hash-verified

496 }
497
498 static _validateIncludedElements(options, tableNames) {
499 if (!options.model) options.model = this;
500
501 tableNames = tableNames || {};
502 options.includeNames = [];
503 options.includeMap = {};
504
505 /* Legacy */
506 options.hasSingleAssociation = false;
507 options.hasMultiAssociation = false;
508
509 if (!options.parent) {
510 options.topModel = options.model;
511 options.topLimit = options.limit;
512 }
513
514 options.include = options.include.map(include => {
515 include = this._conformInclude(include);
516 include.parent = options;
517 include.topLimit = options.topLimit;
518
519 this._validateIncludedElement.call(options.model, include, tableNames, options);
520
521 if (include.duplicating === undefined) {
522 include.duplicating = include.association.isMultiAssociation;
523 }
524
525 include.hasDuplicating = include.hasDuplicating || include.duplicating;
526 include.hasRequired = include.hasRequired || include.required;
527
528 options.hasDuplicating = options.hasDuplicating || include.hasDuplicating;
529 options.hasRequired = options.hasRequired || include.required;
530
531 options.hasWhere = options.hasWhere || include.hasWhere || !!include.where;
532 return include;
533 });
534
535 for (const include of options.include) {
536 include.hasParentWhere = options.hasParentWhere || !!options.where;
537 include.hasParentRequired = options.hasParentRequired || !!options.required;
538
539 if (include.subQuery !== false && options.hasDuplicating && options.topLimit) {
540 if (include.duplicating) {
541 include.subQuery = include.subQuery || false;
542 include.subQueryFilter = include.hasRequired;
543 } else {
544 include.subQuery = include.hasRequired;
545 include.subQueryFilter = false;
546 }
547 } else {
548 include.subQuery = include.subQuery || false;
549 if (include.duplicating) {
550 include.subQueryFilter = include.subQuery;
551 } else {
552 include.subQueryFilter = false;
553 include.subQuery = include.subQuery || include.hasParentRequired && include.hasRequired && !include.separate;
554 }
555 }

Callers 12

findAllMethod · 0.95
aggregateMethod · 0.95
bulkBuildMethod · 0.95
bulkCreateMethod · 0.95
constructorMethod · 0.80
selectQueryMethod · 0.80
select.test.jsFile · 0.80
testsqlFunction · 0.80
order.test.jsFile · 0.80
include.test.jsFile · 0.80

Calls 1

_conformIncludeMethod · 0.95

Tested by 1

testsqlFunction · 0.64