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

Method _validateIncludedElements

src/model.js:521–608  ·  view source on GitHub ↗
(options, tableNames)

Source from the content-addressed store, hash-verified

519 }
520
521 static _validateIncludedElements(options, tableNames) {
522 if (!options.model) options.model = this;
523
524 tableNames = tableNames || {};
525 options.includeNames = [];
526 options.includeMap = {};
527
528 /* Legacy */
529 options.hasSingleAssociation = false;
530 options.hasMultiAssociation = false;
531
532 if (!options.parent) {
533 options.topModel = options.model;
534 options.topLimit = options.limit;
535 }
536
537 options.include = options.include.map(include => {
538 include = this._conformInclude(include);
539 include.parent = options;
540 include.topLimit = options.topLimit;
541
542 this._validateIncludedElement.call(options.model, include, tableNames, options);
543
544 if (include.duplicating === undefined) {
545 include.duplicating = include.association.isMultiAssociation;
546 }
547
548 include.hasDuplicating = include.hasDuplicating || include.duplicating;
549 include.hasRequired = include.hasRequired || include.required;
550
551 options.hasDuplicating = options.hasDuplicating || include.hasDuplicating;
552 options.hasRequired = options.hasRequired || include.required;
553
554 options.hasWhere = options.hasWhere || include.hasWhere || !!include.where;
555 return include;
556 });
557
558 for (const include of options.include) {
559 include.hasParentWhere = options.hasParentWhere || !!options.where;
560 include.hasParentRequired = options.hasParentRequired || !!options.required;
561
562 if (include.subQuery !== false && options.hasDuplicating && options.topLimit) {
563 if (include.duplicating) {
564 include.subQuery = include.subQuery || false;
565 include.subQueryFilter = include.hasRequired;
566 } else {
567 include.subQuery = include.hasRequired;
568 include.subQueryFilter = false;
569 }
570 } else {
571 include.subQuery = include.subQuery || false;
572 if (include.duplicating) {
573 include.subQueryFilter = include.subQuery;
574 } else {
575 include.subQueryFilter = false;
576 include.subQuery = include.subQuery || include.hasParentRequired && include.hasRequired && !include.separate;
577 }
578 }

Callers 12

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

Calls 1

_conformIncludeMethod · 0.95

Tested by 1

testsqlFunction · 0.64