@contember/engine-content-api 1.2.0-alpha.4 → 1.2.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/acl/EvaluatedPredicateReplacer.d.ts +10 -0
- package/dist/src/acl/EvaluatedPredicateReplacer.d.ts.map +1 -0
- package/dist/src/acl/EvaluatedPredicateReplacer.js +40 -0
- package/dist/src/acl/EvaluatedPredicateReplacer.js.map +1 -0
- package/dist/src/acl/PredicateFactory.d.ts +4 -2
- package/dist/src/acl/PredicateFactory.d.ts.map +1 -1
- package/dist/src/acl/PredicateFactory.js +24 -6
- package/dist/src/acl/PredicateFactory.js.map +1 -1
- package/dist/src/acl/PredicatesInjector.d.ts +1 -1
- package/dist/src/acl/PredicatesInjector.d.ts.map +1 -1
- package/dist/src/acl/PredicatesInjector.js +14 -11
- package/dist/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js +25 -13
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js +26 -13
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
- package/dist/src/input-validation/ValidationDataSelector.d.ts.map +1 -1
- package/dist/src/input-validation/ValidationDataSelector.js +1 -1
- package/dist/src/input-validation/ValidationDataSelector.js.map +1 -1
- package/dist/src/mapper/Mapper.d.ts +4 -4
- package/dist/src/mapper/Mapper.d.ts.map +1 -1
- package/dist/src/mapper/Mapper.js +7 -7
- package/dist/src/mapper/Mapper.js.map +1 -1
- package/dist/src/mapper/MapperContainer.d.ts.map +1 -1
- package/dist/src/mapper/MapperContainer.js +5 -2
- package/dist/src/mapper/MapperContainer.js.map +1 -1
- package/dist/src/mapper/select/RelationFetcher.d.ts +40 -5
- package/dist/src/mapper/select/RelationFetcher.d.ts.map +1 -1
- package/dist/src/mapper/select/RelationFetcher.js +19 -6
- package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.d.ts +3 -1
- package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.js +4 -2
- package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts +2 -2
- package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitor.js +31 -18
- package/dist/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts +5 -0
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts.map +1 -0
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.js +33 -0
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -0
- package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts +11 -0
- package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -0
- package/dist/src/mapper/select/optimizer/WhereOptimizer.js +57 -0
- package/dist/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -0
- package/dist/src/mapper/select/optimizer/helpers.d.ts +10 -0
- package/dist/src/mapper/select/optimizer/helpers.d.ts.map +1 -0
- package/dist/src/mapper/select/optimizer/helpers.js +65 -0
- package/dist/src/mapper/select/optimizer/helpers.js.map +1 -0
- package/dist/src/resolvers/MutationResolver.js +1 -1
- package/dist/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/src/resolvers/ReadHelpers.js +3 -3
- package/dist/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/src/resolvers/ReadResolver.js +2 -2
- package/dist/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +3 -2
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.js +137 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.js +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js +73 -0
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js +73 -0
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +2 -2
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
- package/dist/tests/cases/unit/conditionOptimizer.test.d.ts +2 -0
- package/dist/tests/cases/unit/conditionOptimizer.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/conditionOptimizer.test.js +113 -0
- package/dist/tests/cases/unit/conditionOptimizer.test.js.map +1 -0
- package/dist/tests/cases/unit/predicatesFactory.test.d.ts +2 -0
- package/dist/tests/cases/unit/predicatesFactory.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/predicatesFactory.test.js +103 -0
- package/dist/tests/cases/unit/predicatesFactory.test.js.map +1 -0
- package/dist/tests/cases/unit/predicatesInjector.test.js +8 -12
- package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
- package/dist/tests/cases/unit/whereOptimizer.test.d.ts +2 -0
- package/dist/tests/cases/unit/whereOptimizer.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/whereOptimizer.test.js +81 -0
- package/dist/tests/cases/unit/whereOptimizer.test.js.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/acl/EvaluatedPredicateReplacer.ts +38 -0
- package/src/acl/PredicateFactory.ts +30 -7
- package/src/acl/PredicatesInjector.ts +18 -10
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +3 -3
- package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +26 -28
- package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +27 -31
- package/src/input-validation/ValidationDataSelector.ts +2 -2
- package/src/mapper/Mapper.ts +10 -6
- package/src/mapper/MapperContainer.ts +7 -3
- package/src/mapper/select/RelationFetcher.ts +95 -34
- package/src/mapper/select/WhereBuilder.ts +5 -2
- package/src/mapper/select/handlers/FieldsVisitor.ts +31 -24
- package/src/mapper/select/optimizer/ConditionOptimizer.ts +35 -0
- package/src/mapper/select/optimizer/WhereOptimizer.ts +67 -0
- package/src/mapper/select/optimizer/helpers.ts +54 -0
- package/src/resolvers/MutationResolver.ts +1 -1
- package/src/resolvers/ReadHelpers.ts +3 -3
- package/src/resolvers/ReadResolver.ts +2 -2
- package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +3 -2
- package/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.ts +130 -0
- package/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.ts +74 -0
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.ts +77 -0
- package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +2 -2
- package/tests/cases/unit/conditionOptimizer.test.ts +129 -0
- package/tests/cases/unit/predicatesFactory.test.ts +97 -0
- package/tests/cases/unit/predicatesInjector.test.ts +8 -12
- package/tests/cases/unit/whereOptimizer.test.ts +77 -0
|
@@ -9,16 +9,19 @@ const mapper_1 = require("../mapper");
|
|
|
9
9
|
const dic_1 = require("@contember/dic");
|
|
10
10
|
const PaginatedHasManyExecutionHandler_1 = require("../extensions/paginatedHasMany/PaginatedHasManyExecutionHandler");
|
|
11
11
|
const PaginatedHasManyFieldProvider_1 = require("../extensions/paginatedHasMany/PaginatedHasManyFieldProvider");
|
|
12
|
+
const WhereOptimizer_1 = require("./select/optimizer/WhereOptimizer");
|
|
13
|
+
const ConditionOptimizer_1 = require("./select/optimizer/ConditionOptimizer");
|
|
12
14
|
const createMapperContainer = ({ permissions, schema, identityVariables, providers }) => {
|
|
13
15
|
const builder = new dic_1.Builder({})
|
|
14
16
|
.addService('providers', () => providers)
|
|
15
17
|
.addService('variableInjector', () => new acl_1.VariableInjector(schema.model, identityVariables))
|
|
16
|
-
.addService('predicateFactory', ({ variableInjector }) => new acl_1.PredicateFactory(permissions, variableInjector))
|
|
18
|
+
.addService('predicateFactory', ({ variableInjector }) => new acl_1.PredicateFactory(permissions, schema.model, variableInjector))
|
|
17
19
|
.addService('predicatesInjector', ({ predicateFactory }) => new acl_1.PredicatesInjector(schema.model, predicateFactory))
|
|
18
20
|
.addService('joinBuilder', () => new select_1.JoinBuilder(schema.model))
|
|
19
21
|
.addService('conditionBuilder', () => new select_1.ConditionBuilder())
|
|
20
22
|
.addService('pathFactory', () => new mapper_1.PathFactory())
|
|
21
|
-
.addService('
|
|
23
|
+
.addService('whereOptimized', () => new WhereOptimizer_1.WhereOptimizer(schema.model, new ConditionOptimizer_1.ConditionOptimizer()))
|
|
24
|
+
.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized }) => new select_1.WhereBuilder(schema.model, joinBuilder, conditionBuilder, pathFactory, whereOptimized))
|
|
22
25
|
.addService('orderByBuilder', ({ joinBuilder }) => new select_1.OrderByBuilder(schema.model, joinBuilder))
|
|
23
26
|
.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) => new select_1.RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))
|
|
24
27
|
.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, whereBuilder }) => new select_1.FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, whereBuilder))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapperContainer.js","sourceRoot":"","sources":["../../../src/mapper/MapperContainer.ts"],"names":[],"mappings":";;;AAAA,gCAA+E;AAC/E,qCAQiB;AACjB,wDAAwD;AACxD,8CAA8F;AAC9F,sCAekB;AAClB,wCAAwC;AAIxC,sHAAkH;AAClH,gHAA4G;
|
|
1
|
+
{"version":3,"file":"MapperContainer.js","sourceRoot":"","sources":["../../../src/mapper/MapperContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,23 +4,58 @@ import { Input, Model } from '@contember/schema';
|
|
|
4
4
|
import { OrderByBuilder } from './OrderByBuilder';
|
|
5
5
|
import { PredicatesInjector } from '../../acl';
|
|
6
6
|
import { ObjectNode } from '../../inputProcessing';
|
|
7
|
-
import { JoiningColumns } from '../types';
|
|
8
7
|
import { SelectGroupedObjects } from './SelectHydrator';
|
|
9
8
|
import { Mapper } from '../Mapper';
|
|
10
9
|
export declare type GroupedCounts = Record<Input.PrimaryValue, number>;
|
|
10
|
+
declare type CountOneHasManyGroupsArgs = {
|
|
11
|
+
mapper: Mapper;
|
|
12
|
+
filter: Input.OptionalWhere | undefined;
|
|
13
|
+
targetEntity: Model.Entity;
|
|
14
|
+
targetRelation: Model.ManyHasOneRelation;
|
|
15
|
+
ids: Input.PrimaryValue[];
|
|
16
|
+
};
|
|
17
|
+
declare type FetchOneHasManyGroupsArgs = {
|
|
18
|
+
mapper: Mapper;
|
|
19
|
+
objectNode: ObjectNode<Input.ListQueryInput>;
|
|
20
|
+
targetEntity: Model.Entity;
|
|
21
|
+
relation: Model.OneHasManyRelation;
|
|
22
|
+
targetRelation: Model.ManyHasOneRelation;
|
|
23
|
+
ids: Input.PrimaryValue[];
|
|
24
|
+
};
|
|
25
|
+
declare type ManyHasManyBaseArgs = {
|
|
26
|
+
mapper: Mapper;
|
|
27
|
+
targetEntity: Model.Entity;
|
|
28
|
+
ids: Input.PrimaryValue[];
|
|
29
|
+
} & ({
|
|
30
|
+
directionFrom: 'owning';
|
|
31
|
+
sourceRelation: Model.ManyHasManyOwningRelation;
|
|
32
|
+
targetRelation: Model.ManyHasManyInverseRelation | null;
|
|
33
|
+
} | {
|
|
34
|
+
directionFrom: 'inverse';
|
|
35
|
+
sourceRelation: Model.ManyHasManyInverseRelation;
|
|
36
|
+
targetRelation: Model.ManyHasManyOwningRelation;
|
|
37
|
+
});
|
|
38
|
+
declare type CountManyHasManyGroupArgs = ManyHasManyBaseArgs & {
|
|
39
|
+
filter: Input.OptionalWhere | undefined;
|
|
40
|
+
};
|
|
41
|
+
declare type FetchManyHasManyGroupsArgs = ManyHasManyBaseArgs & {
|
|
42
|
+
field: ObjectNode<Input.ListQueryInput>;
|
|
43
|
+
};
|
|
11
44
|
export declare class RelationFetcher {
|
|
12
45
|
private readonly whereBuilder;
|
|
13
46
|
private readonly orderBuilder;
|
|
14
47
|
private readonly predicateInjector;
|
|
15
48
|
private readonly pathFactory;
|
|
16
49
|
constructor(whereBuilder: WhereBuilder, orderBuilder: OrderByBuilder, predicateInjector: PredicatesInjector, pathFactory: PathFactory);
|
|
17
|
-
countOneHasManyGroups(mapper
|
|
18
|
-
fetchOneHasManyGroups(mapper
|
|
50
|
+
countOneHasManyGroups({ mapper, filter, targetEntity, targetRelation, ids, }: CountOneHasManyGroupsArgs): Promise<GroupedCounts>;
|
|
51
|
+
fetchOneHasManyGroups({ mapper, objectNode, targetEntity, relation, targetRelation, ids, }: FetchOneHasManyGroupsArgs): Promise<SelectGroupedObjects>;
|
|
19
52
|
private createOneHasManyFilter;
|
|
20
|
-
countManyHasManyGroups(mapper
|
|
21
|
-
fetchManyHasManyGroups(mapper
|
|
53
|
+
countManyHasManyGroups({ mapper, filter, targetEntity, directionFrom, sourceRelation, targetRelation, ids, }: CountManyHasManyGroupArgs): Promise<GroupedCounts>;
|
|
54
|
+
fetchManyHasManyGroups({ mapper, field, sourceRelation, targetEntity, targetRelation, directionFrom, ids, }: FetchManyHasManyGroupsArgs): Promise<SelectGroupedObjects>;
|
|
55
|
+
private resolveJoiningColumns;
|
|
22
56
|
private buildManyHasManyGroups;
|
|
23
57
|
private fetchJunction;
|
|
24
58
|
private buildJunctionQb;
|
|
25
59
|
}
|
|
60
|
+
export {};
|
|
26
61
|
//# sourceMappingURL=RelationFetcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationFetcher.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/RelationFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAS,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAa,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"RelationFetcher.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/RelationFetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAS,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAa,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAG7D,OAAO,EAAE,oBAAoB,EAAiC,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,oBAAY,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AAE9D,aAAK,yBAAyB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAA;IACvC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAA;IAC1B,cAAc,EAAE,KAAK,CAAC,kBAAkB,CAAA;IACxC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,CAAA;CACzB,CAAA;AAED,aAAK,yBAAyB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAC5C,YAAY,EAAE,KAAK,CAAC,MAAM,CAAA;IAC1B,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAA;IAClC,cAAc,EAAE,KAAK,CAAC,kBAAkB,CAAA;IACxC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,CAAA;CACzB,CAAA;AAED,aAAK,mBAAmB,GACrB;IACD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,KAAK,CAAC,MAAM,CAAA;IAC1B,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,CAAA;CACzB,GAAG,CACD;IACD,aAAa,EAAE,QAAQ,CAAA;IACvB,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAAA;IAC/C,cAAc,EAAE,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAA;CACvD,GACC;IACD,aAAa,EAAE,SAAS,CAAA;IACxB,cAAc,EAAE,KAAK,CAAC,0BAA0B,CAAA;IAChD,cAAc,EAAE,KAAK,CAAC,yBAAyB,CAAA;CAC/C,CACD,CAAA;AACF,aAAK,yBAAyB,GAC3B,mBAAmB,GACnB;IACD,MAAM,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAA;CACvC,CAAA;AAEF,aAAK,0BAA0B,GAC5B,mBAAmB,GACnB;IACD,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;CACvC,CAAA;AAEF,qBAAa,eAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,cAAc,EAC5B,iBAAiB,EAAE,kBAAkB,EACrC,WAAW,EAAE,WAAW;IAG7B,qBAAqB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,YAAY,EACZ,cAAc,EACd,GAAG,GACH,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAKxC,qBAAqB,CAAC,EAClC,MAAM,EACN,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,GAAG,GACH,EAAE,yBAAyB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAY5D,OAAO,CAAC,sBAAsB;IAejB,sBAAsB,CAAC,EACnC,MAAM,EACN,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,GAAG,GACH,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAexC,sBAAsB,CAAC,EACnC,MAAM,EACN,KAAK,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,GAAG,GACH,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoC7D,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,sBAAsB;YAyBhB,aAAa;IAiC3B,OAAO,CAAC,eAAe;CAqCvB"}
|
|
@@ -11,11 +11,11 @@ class RelationFetcher {
|
|
|
11
11
|
this.predicateInjector = predicateInjector;
|
|
12
12
|
this.pathFactory = pathFactory;
|
|
13
13
|
}
|
|
14
|
-
async countOneHasManyGroups(mapper, filter, targetEntity, targetRelation, ids) {
|
|
14
|
+
async countOneHasManyGroups({ mapper, filter, targetEntity, targetRelation, ids, }) {
|
|
15
15
|
const filterWithParent = this.createOneHasManyFilter(targetEntity, targetRelation, ids, filter);
|
|
16
16
|
return mapper.countGrouped(targetEntity, filterWithParent, targetRelation);
|
|
17
17
|
}
|
|
18
|
-
async fetchOneHasManyGroups(mapper, objectNode, targetEntity, relation, targetRelation, ids) {
|
|
18
|
+
async fetchOneHasManyGroups({ mapper, objectNode, targetEntity, relation, targetRelation, ids, }) {
|
|
19
19
|
const filter = this.createOneHasManyFilter(targetEntity, targetRelation, ids, objectNode.args.filter);
|
|
20
20
|
const objectNodeWithWhere = objectNode.withArg('filter', filter);
|
|
21
21
|
const objectNodeWithOrder = OrderByHelper_1.OrderByHelper.appendDefaultOrderBy(targetEntity, objectNodeWithWhere, relation.orderBy || []);
|
|
@@ -30,7 +30,9 @@ class RelationFetcher {
|
|
|
30
30
|
: { and: [filter[targetRelation.name], targetRelationFilter] },
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
async countManyHasManyGroups(mapper, filter, targetEntity,
|
|
33
|
+
async countManyHasManyGroups({ mapper, filter, targetEntity, directionFrom, sourceRelation, targetRelation, ids, }) {
|
|
34
|
+
const owningRelation = directionFrom === 'owning' ? sourceRelation : targetRelation;
|
|
35
|
+
const joiningColumns = this.resolveJoiningColumns({ directionFrom, owningRelation });
|
|
34
36
|
const qb = this.buildJunctionQb(owningRelation, ids, joiningColumns, targetEntity, { filter })
|
|
35
37
|
.select(['junction_', joiningColumns.sourceColumn.columnName])
|
|
36
38
|
.select(expr => expr.raw('count(*)'), 'row_count')
|
|
@@ -42,8 +44,10 @@ class RelationFetcher {
|
|
|
42
44
|
}
|
|
43
45
|
return Object.fromEntries(result);
|
|
44
46
|
}
|
|
45
|
-
async fetchManyHasManyGroups(mapper, field, targetEntity,
|
|
46
|
-
const
|
|
47
|
+
async fetchManyHasManyGroups({ mapper, field, sourceRelation, targetEntity, targetRelation, directionFrom, ids, }) {
|
|
48
|
+
const owningRelation = directionFrom === 'owning' ? sourceRelation : targetRelation;
|
|
49
|
+
const joiningColumns = this.resolveJoiningColumns({ directionFrom, owningRelation });
|
|
50
|
+
const defaultOrderBy = sourceRelation.orderBy || [];
|
|
47
51
|
const objectNode = OrderByHelper_1.OrderByHelper.appendDefaultOrderBy(targetEntity, field, defaultOrderBy);
|
|
48
52
|
const junctionValues = await this.fetchJunction(mapper.db, owningRelation, ids, joiningColumns, targetEntity, objectNode);
|
|
49
53
|
if (junctionValues.length === 0) {
|
|
@@ -61,9 +65,18 @@ class RelationFetcher {
|
|
|
61
65
|
},
|
|
62
66
|
})
|
|
63
67
|
.withField(primaryField);
|
|
64
|
-
const result = await mapper.select(targetEntity, queryWithWhere);
|
|
68
|
+
const result = await mapper.select(targetEntity, queryWithWhere, targetRelation);
|
|
65
69
|
return this.buildManyHasManyGroups(targetEntity, joiningColumns, result, junctionValues);
|
|
66
70
|
}
|
|
71
|
+
resolveJoiningColumns({ directionFrom, owningRelation }) {
|
|
72
|
+
return directionFrom === 'owning' ? {
|
|
73
|
+
sourceColumn: owningRelation.joiningTable.joiningColumn,
|
|
74
|
+
targetColumn: owningRelation.joiningTable.inverseJoiningColumn,
|
|
75
|
+
} : {
|
|
76
|
+
sourceColumn: owningRelation.joiningTable.inverseJoiningColumn,
|
|
77
|
+
targetColumn: owningRelation.joiningTable.joiningColumn,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
67
80
|
buildManyHasManyGroups(entity, joiningColumns, resultObjects, junctionValues) {
|
|
68
81
|
const dataById = {};
|
|
69
82
|
for (let object of resultObjects) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationFetcher.js","sourceRoot":"","sources":["../../../../src/mapper/select/RelationFetcher.ts"],"names":[],"mappings":";;;AAEA,kDAA0F;AAI1F,2DAA6D;AAE7D,mDAA+C;
|
|
1
|
+
{"version":3,"file":"RelationFetcher.js","sourceRoot":"","sources":["../../../../src/mapper/select/RelationFetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,14 @@ import { Path, PathFactory } from './Path';
|
|
|
3
3
|
import { JoinBuilder } from './JoinBuilder';
|
|
4
4
|
import { ConditionBuilder } from './ConditionBuilder';
|
|
5
5
|
import { ConditionBuilder as SqlConditionBuilder, SelectBuilder } from '@contember/database';
|
|
6
|
+
import { WhereOptimizer } from './optimizer/WhereOptimizer';
|
|
6
7
|
export declare class WhereBuilder {
|
|
7
8
|
private readonly schema;
|
|
8
9
|
private readonly joinBuilder;
|
|
9
10
|
private readonly conditionBuilder;
|
|
10
11
|
private readonly pathFactory;
|
|
11
|
-
|
|
12
|
+
private readonly whereOptimizer;
|
|
13
|
+
constructor(schema: Model.Schema, joinBuilder: JoinBuilder, conditionBuilder: ConditionBuilder, pathFactory: PathFactory, whereOptimizer: WhereOptimizer);
|
|
12
14
|
build(qb: SelectBuilder<SelectBuilder.Result>, entity: Model.Entity, path: Path, where: Input.OptionalWhere, allowManyJoin?: boolean): SelectBuilder<SelectBuilder.Result>;
|
|
13
15
|
buildAdvanced(entity: Model.Entity, path: Path, where: Input.OptionalWhere, callback: (clauseCb: (clause: SqlConditionBuilder) => SqlConditionBuilder) => SelectBuilder<SelectBuilder.Result>, allowManyJoin?: boolean): SelectBuilder<SelectBuilder.Result>;
|
|
14
16
|
private buildInternal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhereBuilder.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/WhereBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAA0B,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"WhereBuilder.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/WhereBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAA0B,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,qBAAa,YAAY;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAJd,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc;IAGzC,KAAK,CACX,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,EACvC,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,CAAC,aAAa,EAC1B,aAAa,GAAE,OAAe;IAKxB,aAAa,CACnB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,CAAC,aAAa,EAC1B,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,mBAAmB,KAAK,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,EACjH,aAAa,GAAE,OAAe;IAY/B,OAAO,CAAC,aAAa;IA0IrB,OAAO,CAAC,yBAAyB;IAoCjC,OAAO,CAAC,gCAAgC;CA2CxC;AAED,oBAAY,mBAAmB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAA"}
|
|
@@ -5,18 +5,20 @@ const utils_1 = require("../../utils");
|
|
|
5
5
|
const schema_utils_1 = require("@contember/schema-utils");
|
|
6
6
|
const database_1 = require("@contember/database");
|
|
7
7
|
class WhereBuilder {
|
|
8
|
-
constructor(schema, joinBuilder, conditionBuilder, pathFactory) {
|
|
8
|
+
constructor(schema, joinBuilder, conditionBuilder, pathFactory, whereOptimizer) {
|
|
9
9
|
this.schema = schema;
|
|
10
10
|
this.joinBuilder = joinBuilder;
|
|
11
11
|
this.conditionBuilder = conditionBuilder;
|
|
12
12
|
this.pathFactory = pathFactory;
|
|
13
|
+
this.whereOptimizer = whereOptimizer;
|
|
13
14
|
}
|
|
14
15
|
build(qb, entity, path, where, allowManyJoin = false) {
|
|
15
16
|
return this.buildAdvanced(entity, path, where, cb => qb.where(clause => cb(clause)), allowManyJoin);
|
|
16
17
|
}
|
|
17
18
|
buildAdvanced(entity, path, where, callback, allowManyJoin = false) {
|
|
19
|
+
const optimizedWhere = this.whereOptimizer.optimize(where, entity);
|
|
18
20
|
const joinList = [];
|
|
19
|
-
const qbWithWhere = callback(clause => this.buildInternal(clause, entity, path,
|
|
21
|
+
const qbWithWhere = callback(clause => this.buildInternal(clause, entity, path, optimizedWhere, allowManyJoin, joinList));
|
|
20
22
|
return joinList.reduce((qb, { path, entity, relationName }) => this.joinBuilder.join(qb, path, entity, relationName), qbWithWhere);
|
|
21
23
|
}
|
|
22
24
|
buildInternal(conditionBuilder, entity, path, where, allowManyJoin, joinList) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhereBuilder.js","sourceRoot":"","sources":["../../../../src/mapper/select/WhereBuilder.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAClC,0DAA4D;AAK5D,kDAAoH;
|
|
1
|
+
{"version":3,"file":"WhereBuilder.js","sourceRoot":"","sources":["../../../../src/mapper/select/WhereBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,10 +14,10 @@ export declare class FieldsVisitor implements Model.RelationByTypeVisitor<void>,
|
|
|
14
14
|
constructor(schema: Model.Schema, relationFetcher: RelationFetcher, predicateFactory: PredicateFactory, whereBuilder: WhereBuilder, mapper: Mapper, executionContext: SelectExecutionHandlerContext);
|
|
15
15
|
visitColumn(entity: Model.Entity, column: Model.AnyColumn): void;
|
|
16
16
|
visitManyHasManyInverse(entity: Model.Entity, relation: Model.ManyHasManyInverseRelation, targetEntity: Model.Entity, targetRelation: Model.ManyHasManyOwningRelation): void;
|
|
17
|
-
visitManyHasManyOwning(entity: Model.Entity, relation: Model.ManyHasManyOwningRelation, targetEntity: Model.Entity): void;
|
|
17
|
+
visitManyHasManyOwning(entity: Model.Entity, relation: Model.ManyHasManyOwningRelation, targetEntity: Model.Entity, targetRelation: Model.ManyHasManyInverseRelation | null): void;
|
|
18
18
|
visitOneHasMany(entity: Model.Entity, relation: Model.OneHasManyRelation, targetEntity: Model.Entity, targetRelation: Model.ManyHasOneRelation): void;
|
|
19
19
|
visitOneHasOneInverse(entity: Model.Entity, relation: Model.OneHasOneInverseRelation, targetEntity: Model.Entity, targetRelation: Model.OneHasOneOwningRelation): void;
|
|
20
20
|
visitOneHasOneOwning(entity: Model.Entity, relation: Model.OneHasOneOwningRelation, targetEntity: Model.Entity, targetRelation: Model.OneHasOneInverseRelation | null): void;
|
|
21
|
-
visitManyHasOne(entity: Model.Entity, relation: Model.ManyHasOneRelation, targetEntity: Model.Entity): void;
|
|
21
|
+
visitManyHasOne(entity: Model.Entity, relation: Model.ManyHasOneRelation, targetEntity: Model.Entity, targetRelation: Model.OneHasManyRelation | null): void;
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=FieldsVisitor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldsVisitor.d.ts","sourceRoot":"","sources":["../../../../../src/mapper/select/handlers/FieldsVisitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"FieldsVisitor.d.ts","sourceRoot":"","sources":["../../../../../src/mapper/select/handlers/FieldsVisitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,qBAAa,aAAc,YAAW,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;IAEhG,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBALhB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,6BAA6B;IAGjE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAkCzD,uBAAuB,CAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,KAAK,CAAC,0BAA0B,EAC1C,YAAY,EAAE,KAAK,CAAC,MAAM,EAC1B,cAAc,EAAE,KAAK,CAAC,yBAAyB,GAC7C,IAAI;IAuBA,sBAAsB,CAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,KAAK,CAAC,yBAAyB,EACzC,YAAY,EAAE,KAAK,CAAC,MAAM,EAC1B,cAAc,EAAE,KAAK,CAAC,0BAA0B,GAAG,IAAI,GACrD,IAAI;IAsBA,eAAe,CACrB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAClC,YAAY,EAAE,KAAK,CAAC,MAAM,EAC1B,cAAc,EAAE,KAAK,CAAC,kBAAkB,GACtC,IAAI;IAqBA,qBAAqB,CAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,KAAK,CAAC,wBAAwB,EACxC,YAAY,EAAE,KAAK,CAAC,MAAM,EAC1B,cAAc,EAAE,KAAK,CAAC,uBAAuB,GAC3C,IAAI;IA0BA,oBAAoB,CAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,KAAK,CAAC,uBAAuB,EACvC,YAAY,EAAE,KAAK,CAAC,MAAM,EAC1B,cAAc,EAAE,KAAK,CAAC,wBAAwB,GAAG,IAAI,GACnD,IAAI;IAwBA,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,kBAAkB,GAAG,IAAI,GAAG,IAAI;CAuBnK"}
|
|
@@ -28,35 +28,48 @@ class FieldsVisitor {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
visitManyHasManyInverse(entity, relation, targetEntity, targetRelation) {
|
|
31
|
-
const joiningTable = targetRelation.joiningTable;
|
|
32
|
-
const columns = {
|
|
33
|
-
sourceColumn: joiningTable.inverseJoiningColumn,
|
|
34
|
-
targetColumn: joiningTable.joiningColumn,
|
|
35
|
-
};
|
|
36
31
|
const field = this.executionContext.objectNode;
|
|
37
32
|
if (!field) {
|
|
38
33
|
throw new Error();
|
|
39
34
|
}
|
|
40
|
-
this.executionContext.addData(entity.primary, async (ids) => this.relationFetcher.fetchManyHasManyGroups(
|
|
35
|
+
this.executionContext.addData(entity.primary, async (ids) => this.relationFetcher.fetchManyHasManyGroups({
|
|
36
|
+
mapper: this.mapper,
|
|
37
|
+
field: field,
|
|
38
|
+
targetEntity: targetEntity,
|
|
39
|
+
sourceRelation: relation,
|
|
40
|
+
targetRelation,
|
|
41
|
+
directionFrom: 'inverse',
|
|
42
|
+
ids: ids,
|
|
43
|
+
}), []);
|
|
41
44
|
}
|
|
42
|
-
visitManyHasManyOwning(entity, relation, targetEntity) {
|
|
43
|
-
const joiningTable = relation.joiningTable;
|
|
44
|
-
const columns = {
|
|
45
|
-
sourceColumn: joiningTable.joiningColumn,
|
|
46
|
-
targetColumn: joiningTable.inverseJoiningColumn,
|
|
47
|
-
};
|
|
45
|
+
visitManyHasManyOwning(entity, relation, targetEntity, targetRelation) {
|
|
48
46
|
const field = this.executionContext.objectNode;
|
|
49
47
|
if (!field) {
|
|
50
48
|
throw new Error();
|
|
51
49
|
}
|
|
52
|
-
this.executionContext.addData(entity.primary, async (ids) => this.relationFetcher.fetchManyHasManyGroups(
|
|
50
|
+
this.executionContext.addData(entity.primary, async (ids) => this.relationFetcher.fetchManyHasManyGroups({
|
|
51
|
+
mapper: this.mapper,
|
|
52
|
+
field: field,
|
|
53
|
+
targetEntity: targetEntity,
|
|
54
|
+
sourceRelation: relation,
|
|
55
|
+
targetRelation,
|
|
56
|
+
directionFrom: 'owning',
|
|
57
|
+
ids: ids,
|
|
58
|
+
}), []);
|
|
53
59
|
}
|
|
54
60
|
visitOneHasMany(entity, relation, targetEntity, targetRelation) {
|
|
55
61
|
const field = this.executionContext.objectNode;
|
|
56
62
|
if (!field) {
|
|
57
63
|
throw new Error();
|
|
58
64
|
}
|
|
59
|
-
this.executionContext.addData(entity.primary, async (ids) => this.relationFetcher.fetchOneHasManyGroups(
|
|
65
|
+
this.executionContext.addData(entity.primary, async (ids) => this.relationFetcher.fetchOneHasManyGroups({
|
|
66
|
+
mapper: this.mapper,
|
|
67
|
+
objectNode: field,
|
|
68
|
+
targetEntity: targetEntity,
|
|
69
|
+
relation: relation,
|
|
70
|
+
targetRelation: targetRelation,
|
|
71
|
+
ids: ids,
|
|
72
|
+
}), []);
|
|
60
73
|
}
|
|
61
74
|
visitOneHasOneInverse(entity, relation, targetEntity, targetRelation) {
|
|
62
75
|
this.executionContext.addData(entity.primary, async (ids) => {
|
|
@@ -75,7 +88,7 @@ class FieldsVisitor {
|
|
|
75
88
|
and: [idsWhere, field.args.filter].filter((it) => it !== undefined),
|
|
76
89
|
};
|
|
77
90
|
const objectWithWhere = field.withArg('filter', where);
|
|
78
|
-
return this.mapper.select(targetEntity, objectWithWhere, targetRelation.name);
|
|
91
|
+
return this.mapper.select(targetEntity, objectWithWhere, targetRelation, targetRelation.name);
|
|
79
92
|
}, null);
|
|
80
93
|
}
|
|
81
94
|
visitOneHasOneOwning(entity, relation, targetEntity, targetRelation) {
|
|
@@ -93,10 +106,10 @@ class FieldsVisitor {
|
|
|
93
106
|
and: [idsWhere, objectNode.args.filter].filter((it) => it !== undefined),
|
|
94
107
|
};
|
|
95
108
|
const objectWithWhere = objectNode.withArg('filter', where);
|
|
96
|
-
return this.mapper.select(targetEntity, objectWithWhere, targetEntity.primary);
|
|
109
|
+
return this.mapper.select(targetEntity, objectWithWhere, targetRelation, targetEntity.primary);
|
|
97
110
|
}, null);
|
|
98
111
|
}
|
|
99
|
-
visitManyHasOne(entity, relation, targetEntity) {
|
|
112
|
+
visitManyHasOne(entity, relation, targetEntity, targetRelation) {
|
|
100
113
|
this.executionContext.addData(relation.name, async (ids) => {
|
|
101
114
|
const idsWhere = {
|
|
102
115
|
[targetEntity.primary]: {
|
|
@@ -111,7 +124,7 @@ class FieldsVisitor {
|
|
|
111
124
|
and: [idsWhere, objectNode.args.filter].filter((it) => it !== undefined),
|
|
112
125
|
};
|
|
113
126
|
const objectWithWhere = objectNode.withArg('filter', where);
|
|
114
|
-
return this.mapper.select(targetEntity, objectWithWhere, targetEntity.primary);
|
|
127
|
+
return this.mapper.select(targetEntity, objectWithWhere, targetRelation, targetEntity.primary);
|
|
115
128
|
}, null);
|
|
116
129
|
}
|
|
117
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldsVisitor.js","sourceRoot":"","sources":["../../../../../src/mapper/select/handlers/FieldsVisitor.ts"],"names":[],"mappings":";;;AAAA,8CAAqD;
|
|
1
|
+
{"version":3,"file":"FieldsVisitor.js","sourceRoot":"","sources":["../../../../../src/mapper/select/handlers/FieldsVisitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionOptimizer.d.ts","sourceRoot":"","sources":["../../../../../src/mapper/select/optimizer/ConditionOptimizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAKzC,qBAAa,kBAAkB;IACvB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,OAAO;CA4BhG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConditionOptimizer = void 0;
|
|
4
|
+
const helpers_1 = require("./helpers");
|
|
5
|
+
class ConditionOptimizer {
|
|
6
|
+
optimize(condition) {
|
|
7
|
+
if (condition.never) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
return (0, helpers_1.optimizeAnd)(Object.entries(condition).map(([key, value]) => {
|
|
11
|
+
if (value === undefined || value === null) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
else if (key === 'always') {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
else if (key === 'and') {
|
|
18
|
+
return (0, helpers_1.optimizeAnd)(value.map(it => this.optimize(it)));
|
|
19
|
+
}
|
|
20
|
+
else if (key === 'or') {
|
|
21
|
+
return (0, helpers_1.optimizeOr)(value.map(it => this.optimize(it)));
|
|
22
|
+
}
|
|
23
|
+
else if (key === 'not') {
|
|
24
|
+
return (0, helpers_1.optimizeNot)(this.optimize(value));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return { [key]: value };
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.ConditionOptimizer = ConditionOptimizer;
|
|
33
|
+
//# sourceMappingURL=ConditionOptimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConditionOptimizer.js","sourceRoot":"","sources":["../../../../../src/mapper/select/optimizer/ConditionOptimizer.ts"],"names":[],"mappings":";;;AACA,uCAAgE;AAIhE,MAAa,kBAAkB;IACvB,QAAQ,CAAC,SAA0B;QACzC,IAAI,SAAS,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAA;SACZ;QAED,OAAO,IAAA,qBAAW,EAChB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC1C,OAAO,SAAS,CAAA;aAEhB;iBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE;gBAC5B,OAAO,IAAI,CAAA;aAEX;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACzB,OAAO,IAAA,qBAAW,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;aAEtD;iBAAM,IAAI,GAAG,KAAK,IAAI,EAAE;gBACxB,OAAO,IAAA,oBAAU,EAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;aAErD;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACzB,OAAO,IAAA,qBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;aAExC;iBAAM;gBACN,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;aACvB;QACF,CAAC,CAAC,CACF,CAAA;IACF,CAAC;CACD;AA7BD,gDA6BC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Input, Model } from '@contember/schema';
|
|
2
|
+
import { ConditionOptimizer } from './ConditionOptimizer';
|
|
3
|
+
export declare class WhereOptimizer {
|
|
4
|
+
private readonly model;
|
|
5
|
+
private readonly conditionOptimizer;
|
|
6
|
+
constructor(model: Model.Schema, conditionOptimizer: ConditionOptimizer);
|
|
7
|
+
optimize(where: Input.OptionalWhere, entity: Model.Entity): Input.Where;
|
|
8
|
+
private optimizeWhere;
|
|
9
|
+
private resolveFieldValue;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=WhereOptimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhereOptimizer.d.ts","sourceRoot":"","sources":["../../../../../src/mapper/select/optimizer/WhereOptimizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAIzD,qBAAa,cAAc;IAEzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,KAAK,EAAE,KAAK,CAAC,MAAM,EACnB,kBAAkB,EAAE,kBAAkB;IAIjD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK;IAU9E,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,iBAAiB;CAsBzB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WhereOptimizer = void 0;
|
|
4
|
+
const schema_utils_1 = require("@contember/schema-utils");
|
|
5
|
+
const helpers_1 = require("./helpers");
|
|
6
|
+
class WhereOptimizer {
|
|
7
|
+
constructor(model, conditionOptimizer) {
|
|
8
|
+
this.model = model;
|
|
9
|
+
this.conditionOptimizer = conditionOptimizer;
|
|
10
|
+
}
|
|
11
|
+
optimize(where, entity) {
|
|
12
|
+
const result = this.optimizeWhere(where, entity);
|
|
13
|
+
if (typeof result === 'boolean') {
|
|
14
|
+
return { [entity.primary]: { [result ? 'always' : 'never']: true } };
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
optimizeWhere(where, entity) {
|
|
19
|
+
return (0, helpers_1.optimizeAnd)(Object.entries(where).map(([key, value]) => {
|
|
20
|
+
if (value === undefined || value === null) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
else if (key === 'and') {
|
|
24
|
+
return (0, helpers_1.optimizeAnd)(value.map(it => this.optimizeWhere(it, entity)));
|
|
25
|
+
}
|
|
26
|
+
else if (key === 'or') {
|
|
27
|
+
return (0, helpers_1.optimizeOr)(value.map(it => this.optimizeWhere(it, entity)));
|
|
28
|
+
}
|
|
29
|
+
else if (key === 'not') {
|
|
30
|
+
return (0, helpers_1.optimizeNot)(this.optimizeWhere(value, entity));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return this.resolveFieldValue(entity, key, value);
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
resolveFieldValue(entity, key, value) {
|
|
38
|
+
return (0, schema_utils_1.acceptFieldVisitor)(this.model, entity, key, {
|
|
39
|
+
visitColumn: () => {
|
|
40
|
+
const optimizedCondition = this.conditionOptimizer.optimize(value);
|
|
41
|
+
if (typeof optimizedCondition === 'boolean') {
|
|
42
|
+
return optimizedCondition;
|
|
43
|
+
}
|
|
44
|
+
return { [key]: optimizedCondition };
|
|
45
|
+
},
|
|
46
|
+
visitRelation: (entity, relation, targetEntity) => {
|
|
47
|
+
const optimizedWhere = this.optimizeWhere(value, targetEntity);
|
|
48
|
+
if (typeof optimizedWhere === 'boolean') {
|
|
49
|
+
return optimizedWhere;
|
|
50
|
+
}
|
|
51
|
+
return { [key]: optimizedWhere };
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.WhereOptimizer = WhereOptimizer;
|
|
57
|
+
//# sourceMappingURL=WhereOptimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhereOptimizer.js","sourceRoot":"","sources":["../../../../../src/mapper/select/optimizer/WhereOptimizer.ts"],"names":[],"mappings":";;;AAEA,0DAA4D;AAC5D,uCAAgE;AAEhE,MAAa,cAAc;IAC1B,YACkB,KAAmB,EACnB,kBAAsC;QADtC,UAAK,GAAL,KAAK,CAAc;QACnB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAExD,CAAC;IAEM,QAAQ,CAAC,KAA0B,EAAE,MAAoB;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEhD,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;YAChC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAA;SACpE;QAED,OAAO,MAAM,CAAA;IACd,CAAC;IAEO,aAAa,CAAC,KAA0B,EAAE,MAAoB;QACrE,OAAO,IAAA,qBAAW,EACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBAC1C,OAAO,SAAS,CAAA;aAEhB;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACzB,OAAO,IAAA,qBAAW,EAAE,KAAgC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;aAE/F;iBAAM,IAAI,GAAG,KAAK,IAAI,EAAE;gBACxB,OAAO,IAAA,oBAAU,EAAE,KAAgC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;aAE9F;iBAAM,IAAI,GAAG,KAAK,KAAK,EAAE;gBACzB,OAAO,IAAA,qBAAW,EAAC,IAAI,CAAC,aAAa,CAAC,KAAoB,EAAE,MAAM,CAAC,CAAC,CAAA;aAEpE;iBAAM;gBACN,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;aACjD;QACF,CAAC,CAAC,CACF,CAAA;IACF,CAAC;IAEO,iBAAiB,CAAC,MAAoB,EAAE,GAAW,EAAE,KAAkC;QAC9F,OAAO,IAAA,iCAAkB,EAAwB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;YACzE,WAAW,EAAE,GAAG,EAAE;gBACjB,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAA;gBAErF,IAAI,OAAO,kBAAkB,KAAK,SAAS,EAAE;oBAC5C,OAAO,kBAAkB,CAAA;iBACzB;gBAED,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,CAAA;YACrC,CAAC;YACD,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;gBACjD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAoB,EAAE,YAAY,CAAC,CAAA;gBAE7E,IAAI,OAAO,cAAc,KAAK,SAAS,EAAE;oBACxC,OAAO,cAAc,CAAA;iBACrB;gBAED,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAA;YACjC,CAAC;SACD,CAAC,CAAA;IACH,CAAC;CACD;AA7DD,wCA6DC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const optimizeOr: <P extends Record<string, unknown>>(operands: readonly (boolean | P)[]) => boolean | P | {
|
|
2
|
+
or?: P[] | undefined;
|
|
3
|
+
};
|
|
4
|
+
export declare const optimizeAnd: <P extends Record<string, unknown>>(operands: readonly (boolean | P | undefined)[]) => boolean | P | {
|
|
5
|
+
and?: P[] | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare const optimizeNot: <P extends Record<string, unknown>>(operand: boolean | P) => boolean | P["not"] | {
|
|
8
|
+
not: P;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=helpers.d.ts.map
|