@contember/engine-content-api 1.2.0-alpha.9 → 1.2.0-beta.1
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 +2 -3
- package/dist/src/acl/EvaluatedPredicateReplacer.d.ts.map +1 -1
- package/dist/src/acl/EvaluatedPredicateReplacer.js +5 -14
- package/dist/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
- package/dist/src/acl/PredicateFactory.d.ts +9 -3
- package/dist/src/acl/PredicateFactory.d.ts.map +1 -1
- package/dist/src/acl/PredicateFactory.js +47 -36
- 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 +13 -18
- package/dist/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts +0 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +26 -23
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts +5 -4
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js +11 -14
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js +18 -14
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts +3 -3
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +3 -3
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts +5 -4
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js +11 -15
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
- package/dist/src/input-validation/ColumnValueResolver.d.ts +4 -3
- package/dist/src/input-validation/ColumnValueResolver.d.ts.map +1 -1
- package/dist/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/src/input-validation/EntityRulesResolver.js +4 -4
- package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/src/input-validation/QueryAstFactory.js +1 -1
- package/dist/src/input-validation/QueryAstFactory.js.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/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +7 -8
- package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
- package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/src/input-validation/preValidation/InputPreValidator.js +4 -4
- package/dist/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +7 -8
- package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
- package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/src/inputProcessing/CreateInputProcessor.d.ts +8 -9
- package/dist/src/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
- package/dist/src/inputProcessing/CreateInputVisitor.d.ts +7 -7
- package/dist/src/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
- package/dist/src/inputProcessing/CreateInputVisitor.js +15 -46
- package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/src/inputProcessing/UpdateInputProcessor.d.ts +8 -9
- package/dist/src/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
- package/dist/src/inputProcessing/UpdateInputVisitor.d.ts +7 -7
- package/dist/src/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
- package/dist/src/inputProcessing/UpdateInputVisitor.js +13 -28
- package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/src/inputProcessing/index.d.ts +0 -1
- package/dist/src/inputProcessing/index.d.ts.map +1 -1
- package/dist/src/inputProcessing/index.js +0 -1
- package/dist/src/inputProcessing/index.js.map +1 -1
- package/dist/src/introspection/IntrospectionSchemaFactory.js +7 -7
- package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
- package/dist/src/mapper/ErrorUtils.d.ts.map +1 -1
- package/dist/src/mapper/ErrorUtils.js +2 -2
- package/dist/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/src/mapper/Mapper.d.ts +6 -6
- package/dist/src/mapper/Mapper.d.ts.map +1 -1
- package/dist/src/mapper/Mapper.js +26 -21
- 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 +4 -4
- package/dist/src/mapper/MapperContainer.js.map +1 -1
- package/dist/src/mapper/Result.d.ts.map +1 -1
- package/dist/src/mapper/Result.js +2 -4
- package/dist/src/mapper/Result.js.map +1 -1
- package/dist/src/mapper/delete/DeleteExecutor.js +6 -6
- package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/src/mapper/insert/InsertBuilder.d.ts +1 -1
- package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts +4 -2
- package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
- package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/src/mapper/select/JoinVisitor.d.ts +6 -6
- package/dist/src/mapper/select/JoinVisitor.d.ts.map +1 -1
- package/dist/src/mapper/select/JoinVisitor.js +6 -6
- package/dist/src/mapper/select/JoinVisitor.js.map +1 -1
- package/dist/src/mapper/select/Path.d.ts +1 -0
- package/dist/src/mapper/select/Path.d.ts.map +1 -1
- package/dist/src/mapper/select/Path.js +4 -1
- package/dist/src/mapper/select/Path.js.map +1 -1
- package/dist/src/mapper/select/RelationFetcher.d.ts +11 -19
- package/dist/src/mapper/select/RelationFetcher.d.ts.map +1 -1
- package/dist/src/mapper/select/RelationFetcher.js +34 -25
- package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/src/mapper/select/SelectBuilder.d.ts +4 -1
- package/dist/src/mapper/select/SelectBuilder.d.ts.map +1 -1
- package/dist/src/mapper/select/SelectBuilder.js +52 -12
- package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/src/mapper/select/SelectBuilderFactory.d.ts +2 -1
- package/dist/src/mapper/select/SelectBuilderFactory.d.ts.map +1 -1
- package/dist/src/mapper/select/SelectExecutionHandler.d.ts +16 -4
- package/dist/src/mapper/select/SelectExecutionHandler.d.ts.map +1 -1
- package/dist/src/mapper/select/SelectHydrator.d.ts +3 -2
- package/dist/src/mapper/select/SelectHydrator.d.ts.map +1 -1
- package/dist/src/mapper/select/SelectHydrator.js +6 -9
- package/dist/src/mapper/select/SelectHydrator.js.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.d.ts +8 -4
- package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.js +137 -35
- package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts +10 -8
- package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitor.js +129 -94
- package/dist/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js +1 -1
- package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/src/mapper/select/handlers/MetaHandler.d.ts.map +1 -1
- package/dist/src/mapper/select/handlers/MetaHandler.js +6 -11
- package/dist/src/mapper/select/handlers/MetaHandler.js.map +1 -1
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts.map +1 -1
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.js +6 -0
- package/dist/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
- package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts +9 -1
- package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -1
- package/dist/src/mapper/select/optimizer/WhereOptimizer.js +127 -13
- package/dist/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
- package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts +3 -0
- package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -0
- package/dist/src/mapper/select/optimizer/WhereReplacer.js +46 -0
- package/dist/src/mapper/select/optimizer/WhereReplacer.js.map +1 -0
- package/dist/src/mapper/select/optimizer/helpers.d.ts +1 -1
- package/dist/src/mapper/select/optimizer/helpers.js +1 -1
- package/dist/src/mapper/select/optimizer/helpers.js.map +1 -1
- package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts +2 -3
- package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
- package/dist/src/mapper/update/SqlUpdateInputProcessor.js +3 -4
- package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/src/mapper/update/UpdateBuilder.js +3 -3
- package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/src/resolvers/ExecutionContainerFactory.d.ts +1 -1
- package/dist/src/resolvers/ExecutionContainerFactory.d.ts.map +1 -1
- package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts +1 -2
- package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
- package/dist/src/resolvers/GraphQlQueryAstFactory.js +2 -2
- package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
- package/dist/src/resolvers/MutationResolver.js +13 -2
- 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/schema/EnumsProvider.d.ts.map +1 -1
- package/dist/src/schema/EnumsProvider.js +1 -2
- package/dist/src/schema/EnumsProvider.js.map +1 -1
- package/dist/src/schema/FieldAccessVisitor.d.ts +2 -2
- package/dist/src/schema/FieldAccessVisitor.d.ts.map +1 -1
- package/dist/src/schema/FieldAccessVisitor.js +2 -2
- package/dist/src/schema/FieldAccessVisitor.js.map +1 -1
- package/dist/src/schema/OrderByTypeProvider.d.ts +1 -1
- package/dist/src/schema/OrderByTypeProvider.d.ts.map +1 -1
- package/dist/src/schema/OrderByTypeProvider.js +2 -2
- package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/src/schema/WhereTypeProvider.d.ts +1 -2
- package/dist/src/schema/WhereTypeProvider.d.ts.map +1 -1
- package/dist/src/schema/WhereTypeProvider.js +4 -4
- package/dist/src/schema/WhereTypeProvider.js.map +1 -1
- package/dist/src/schema/entities/FieldArgsVisitor.d.ts +4 -5
- package/dist/src/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
- package/dist/src/schema/entities/FieldArgsVisitor.js +3 -3
- package/dist/src/schema/entities/FieldArgsVisitor.js.map +1 -1
- package/dist/src/schema/entities/FieldTypeVisitor.d.ts +3 -3
- package/dist/src/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
- package/dist/src/schema/entities/FieldTypeVisitor.js +3 -3
- package/dist/src/schema/entities/FieldTypeVisitor.js.map +1 -1
- package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts +3 -3
- package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
- package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +3 -3
- package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
- package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
- package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
- package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +6 -6
- package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +3 -3
- package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
- package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +5 -5
- package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +10 -4
- package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +3 -3
- package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
- package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +6 -6
- package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +2 -2
- package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +2 -2
- package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/src/schema/utils.d.ts +1 -1
- package/dist/src/schema/utils.d.ts.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/uniqueWhereFields.js +3 -3
- package/dist/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/tests/cases/bugs/bug102.test.js +6 -6
- package/dist/tests/cases/bugs/bug102.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js +51 -4
- package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +26 -25
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js +9 -6
- package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js +109 -0
- package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js +17 -15
- package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js +4 -5
- package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js +9 -13
- package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js +5 -3
- package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js +10 -10
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +4 -4
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
- package/dist/tests/cases/unit/predicatesFactory.test.js +7 -1
- package/dist/tests/cases/unit/predicatesFactory.test.js.map +1 -1
- package/dist/tests/cases/unit/predicatesInjector.test.js +105 -0
- package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
- package/dist/tests/cases/unit/whereBuilder.test.d.ts +2 -0
- package/dist/tests/cases/unit/whereBuilder.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/whereBuilder.test.js +131 -0
- package/dist/tests/cases/unit/whereBuilder.test.js.map +1 -0
- package/dist/tests/cases/unit/whereOptimizer.test.js +173 -0
- package/dist/tests/cases/unit/whereOptimizer.test.js.map +1 -1
- package/dist/tests/src/test.js +2 -2
- package/dist/tests/src/test.js.map +1 -1
- package/dist/tests/src/testGraphql.d.ts.map +1 -1
- package/dist/tests/src/testGraphql.js +9 -5
- package/dist/tests/src/testGraphql.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -10
- package/src/acl/EvaluatedPredicateReplacer.ts +9 -15
- package/src/acl/PredicateFactory.ts +64 -40
- package/src/acl/PredicatesInjector.ts +18 -17
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +21 -28
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +1 -6
- package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +10 -28
- package/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.ts +11 -8
- package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +4 -22
- package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +10 -29
- package/src/input-validation/ColumnValueResolver.ts +2 -3
- package/src/input-validation/EntityRulesResolver.ts +4 -4
- package/src/input-validation/QueryAstFactory.ts +1 -1
- package/src/input-validation/ValidationDataSelector.ts +1 -1
- package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +7 -8
- package/src/input-validation/preValidation/InputPreValidator.ts +4 -4
- package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +7 -8
- package/src/inputProcessing/CreateInputProcessor.ts +8 -9
- package/src/inputProcessing/CreateInputVisitor.ts +27 -89
- package/src/inputProcessing/UpdateInputProcessor.ts +8 -9
- package/src/inputProcessing/UpdateInputVisitor.ts +25 -71
- package/src/inputProcessing/index.ts +0 -1
- package/src/introspection/IntrospectionSchemaFactory.ts +7 -7
- package/src/mapper/ErrorUtils.ts +2 -2
- package/src/mapper/JunctionTableManager.ts +3 -3
- package/src/mapper/Mapper.ts +34 -31
- package/src/mapper/MapperContainer.ts +7 -5
- package/src/mapper/Result.ts +2 -4
- package/src/mapper/delete/DeleteExecutor.ts +6 -6
- package/src/mapper/insert/InsertBuilder.ts +2 -2
- package/src/mapper/insert/SqlCreateInputProcessor.ts +3 -3
- package/src/mapper/select/JoinVisitor.ts +6 -33
- package/src/mapper/select/Path.ts +4 -1
- package/src/mapper/select/RelationFetcher.ts +49 -50
- package/src/mapper/select/SelectBuilder.ts +71 -13
- package/src/mapper/select/SelectBuilderFactory.ts +2 -1
- package/src/mapper/select/SelectExecutionHandler.ts +16 -8
- package/src/mapper/select/SelectHydrator.ts +15 -11
- package/src/mapper/select/WhereBuilder.ts +168 -61
- package/src/mapper/select/handlers/FieldsVisitor.ts +80 -111
- package/src/mapper/select/handlers/FieldsVisitorFactory.ts +1 -0
- package/src/mapper/select/handlers/MetaHandler.ts +6 -17
- package/src/mapper/select/optimizer/ConditionOptimizer.ts +6 -0
- package/src/mapper/select/optimizer/WhereOptimizer.ts +148 -21
- package/src/mapper/select/optimizer/WhereReplacer.ts +39 -0
- package/src/mapper/select/optimizer/helpers.ts +2 -2
- package/src/mapper/update/SqlUpdateInputProcessor.ts +4 -10
- package/src/mapper/update/UpdateBuilder.ts +3 -3
- package/src/resolvers/ExecutionContainerFactory.ts +1 -1
- package/src/resolvers/GraphQlQueryAstFactory.ts +5 -4
- package/src/resolvers/MutationResolver.ts +14 -4
- package/src/resolvers/ReadHelpers.ts +3 -3
- package/src/resolvers/ReadResolver.ts +2 -2
- package/src/schema/EnumsProvider.ts +2 -4
- package/src/schema/FieldAccessVisitor.ts +2 -2
- package/src/schema/OrderByTypeProvider.ts +10 -3
- package/src/schema/WhereTypeProvider.ts +5 -6
- package/src/schema/entities/FieldArgsVisitor.ts +4 -5
- package/src/schema/entities/FieldTypeVisitor.ts +3 -3
- package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +3 -6
- package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +6 -20
- package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +6 -20
- package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +3 -6
- package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +6 -20
- package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +9 -14
- package/src/schema/utils.ts +1 -1
- package/src/tsconfig.json +6 -6
- package/src/utils/uniqueWhereFields.ts +3 -3
- package/tests/cases/bugs/bug102.test.ts +6 -6
- package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.ts +54 -4
- package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +26 -25
- package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +9 -6
- package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +104 -0
- package/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.ts +17 -15
- package/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.ts +4 -5
- package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.ts +9 -13
- package/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.ts +5 -3
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +10 -10
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +5 -5
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +2 -3
- package/tests/cases/unit/predicatesFactory.test.ts +8 -2
- package/tests/cases/unit/predicatesInjector.test.ts +97 -2
- package/tests/cases/unit/whereBuilder.test.ts +148 -0
- package/tests/cases/unit/whereOptimizer.test.ts +199 -0
- package/tests/src/test.ts +2 -2
- package/tests/src/testGraphql.ts +9 -5
- package/dist/src/inputProcessing/InputContext.d.ts +0 -43
- package/dist/src/inputProcessing/InputContext.d.ts.map +0 -1
- package/dist/src/inputProcessing/InputContext.js +0 -3
- package/dist/src/inputProcessing/InputContext.js.map +0 -1
- package/src/inputProcessing/InputContext.ts +0 -49
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../../src/mapper/select/Path.ts"],"names":[],"mappings":";;;AAAA,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEhC,MAAa,YAAY;IAAzB;QACS,eAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAW/C,CAAC;IATO,aAAa,CAAC,KAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,OAAO,KAAK,CAAA;SACZ;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACpC,OAAO,QAAQ,CAAA;IAChB,CAAC;CACD;AAZD,oCAYC;AAED,MAAa,WAAW;IAGvB;QAFQ,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAA;IAEnB,CAAC;IAEhB,MAAM,CAAC,IAAc,EAAE,SAAS,GAAG,OAAO;QAChD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpD,CAAC;CACD;AARD,kCAQC;AAED,MAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../../src/mapper/select/Path.ts"],"names":[],"mappings":";;;AAAA,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEhC,MAAa,YAAY;IAAzB;QACS,eAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAW/C,CAAC;IATO,aAAa,CAAC,KAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,OAAO,KAAK,CAAA;SACZ;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACpC,OAAO,QAAQ,CAAA;IAChB,CAAC;CACD;AAZD,oCAYC;AAED,MAAa,WAAW;IAGvB;QAFQ,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAA;IAEnB,CAAC;IAEhB,MAAM,CAAC,IAAc,EAAE,SAAS,GAAG,OAAO;QAChD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpD,CAAC;CACD;AARD,kCAQC;AAED,MAAa,IAAI;IAMhB,YACiB,IAAc,EACb,YAA0B,EAC3B,YAAY,OAAO;QAFnB,SAAI,GAAJ,IAAI,CAAU;QACb,iBAAY,GAAZ,YAAY,CAAc;QAC3B,cAAS,GAAT,SAAS,CAAU;QARpB,UAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IASvC,CAAC;IAPJ,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;IAOM,IAAI;QACV,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5D,CAAC;IAEM,GAAG,CAAC,IAAY;QACtB,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACzE,CAAC;IAEO,WAAW;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;QAE5B,sDAAsD;QACtD,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,EAAE;YACzC,OAAO,KAAK,CAAA;SACZ;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC/D,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,qBAAqB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAA;IAClF,CAAC;CACD;AAhCD,oBAgCC"}
|
|
@@ -10,31 +10,23 @@ export declare type GroupedCounts = Record<Input.PrimaryValue, number>;
|
|
|
10
10
|
declare type CountOneHasManyGroupsArgs = {
|
|
11
11
|
mapper: Mapper;
|
|
12
12
|
filter: Input.OptionalWhere | undefined;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
relationPath: Model.AnyRelationContext[];
|
|
14
|
+
relationContext: Model.OneHasManyContext;
|
|
15
15
|
ids: Input.PrimaryValue[];
|
|
16
16
|
};
|
|
17
17
|
declare type FetchOneHasManyGroupsArgs = {
|
|
18
18
|
mapper: Mapper;
|
|
19
19
|
objectNode: ObjectNode<Input.ListQueryInput>;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
targetRelation: Model.ManyHasOneRelation;
|
|
20
|
+
relationPath: Model.AnyRelationContext[];
|
|
21
|
+
relationContext: Model.OneHasManyContext;
|
|
23
22
|
ids: Input.PrimaryValue[];
|
|
24
23
|
};
|
|
25
24
|
declare type ManyHasManyBaseArgs = {
|
|
26
25
|
mapper: Mapper;
|
|
27
|
-
targetEntity: Model.Entity;
|
|
28
26
|
ids: Input.PrimaryValue[];
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
targetRelation: Model.ManyHasManyInverseRelation | null;
|
|
33
|
-
} | {
|
|
34
|
-
directionFrom: 'inverse';
|
|
35
|
-
sourceRelation: Model.ManyHasManyInverseRelation;
|
|
36
|
-
targetRelation: Model.ManyHasManyOwningRelation;
|
|
37
|
-
});
|
|
27
|
+
relationPath: Model.AnyRelationContext[];
|
|
28
|
+
relationContext: Model.ManyHasManyInverseContext | Model.ManyHasManyOwningContext;
|
|
29
|
+
};
|
|
38
30
|
declare type CountManyHasManyGroupArgs = ManyHasManyBaseArgs & {
|
|
39
31
|
filter: Input.OptionalWhere | undefined;
|
|
40
32
|
};
|
|
@@ -47,11 +39,11 @@ export declare class RelationFetcher {
|
|
|
47
39
|
private readonly predicateInjector;
|
|
48
40
|
private readonly pathFactory;
|
|
49
41
|
constructor(whereBuilder: WhereBuilder, orderBuilder: OrderByBuilder, predicateInjector: PredicatesInjector, pathFactory: PathFactory);
|
|
50
|
-
countOneHasManyGroups({ mapper, filter,
|
|
51
|
-
fetchOneHasManyGroups({ mapper, objectNode,
|
|
42
|
+
countOneHasManyGroups({ mapper, filter, relationContext, relationPath, ids, }: CountOneHasManyGroupsArgs): Promise<GroupedCounts>;
|
|
43
|
+
fetchOneHasManyGroups({ mapper, objectNode, relationContext, relationPath, ids, }: FetchOneHasManyGroupsArgs): Promise<SelectGroupedObjects>;
|
|
52
44
|
private createOneHasManyFilter;
|
|
53
|
-
countManyHasManyGroups({ mapper, filter,
|
|
54
|
-
fetchManyHasManyGroups({ mapper, field,
|
|
45
|
+
countManyHasManyGroups({ mapper, filter, relationContext, relationPath, ids, }: CountManyHasManyGroupArgs): Promise<GroupedCounts>;
|
|
46
|
+
fetchManyHasManyGroups({ mapper, field, relationContext, relationPath, ids, }: FetchManyHasManyGroupsArgs): Promise<SelectGroupedObjects>;
|
|
55
47
|
private resolveJoiningColumns;
|
|
56
48
|
private buildManyHasManyGroups;
|
|
57
49
|
private fetchJunction;
|
|
@@ -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;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,
|
|
1
|
+
{"version":3,"file":"RelationFetcher.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/RelationFetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,15 +11,23 @@ class RelationFetcher {
|
|
|
11
11
|
this.predicateInjector = predicateInjector;
|
|
12
12
|
this.pathFactory = pathFactory;
|
|
13
13
|
}
|
|
14
|
-
async countOneHasManyGroups({ mapper, filter,
|
|
14
|
+
async countOneHasManyGroups({ mapper, filter, relationContext, relationPath, ids, }) {
|
|
15
|
+
const { targetRelation, targetEntity } = relationContext;
|
|
15
16
|
const filterWithParent = this.createOneHasManyFilter(targetEntity, targetRelation, ids, filter);
|
|
16
|
-
return mapper.countGrouped(targetEntity, filterWithParent, targetRelation
|
|
17
|
+
return mapper.countGrouped(targetEntity, filterWithParent, targetRelation, [
|
|
18
|
+
...relationPath,
|
|
19
|
+
relationContext,
|
|
20
|
+
]);
|
|
17
21
|
}
|
|
18
|
-
async fetchOneHasManyGroups({ mapper, objectNode,
|
|
22
|
+
async fetchOneHasManyGroups({ mapper, objectNode, relationContext, relationPath, ids, }) {
|
|
23
|
+
const { relation, targetEntity, targetRelation } = relationContext;
|
|
19
24
|
const filter = this.createOneHasManyFilter(targetEntity, targetRelation, ids, objectNode.args.filter);
|
|
20
25
|
const objectNodeWithWhere = objectNode.withArg('filter', filter);
|
|
21
26
|
const objectNodeWithOrder = OrderByHelper_1.OrderByHelper.appendDefaultOrderBy(targetEntity, objectNodeWithWhere, relation.orderBy || []);
|
|
22
|
-
return mapper.selectGrouped(targetEntity, objectNodeWithOrder, targetRelation
|
|
27
|
+
return mapper.selectGrouped(targetEntity, objectNodeWithOrder, targetRelation, [
|
|
28
|
+
...relationPath,
|
|
29
|
+
relationContext,
|
|
30
|
+
]);
|
|
23
31
|
}
|
|
24
32
|
createOneHasManyFilter(targetEntity, targetRelation, ids, filter) {
|
|
25
33
|
const targetRelationFilter = { [targetEntity.primary]: { in: ids } };
|
|
@@ -30,10 +38,10 @@ class RelationFetcher {
|
|
|
30
38
|
: { and: [filter[targetRelation.name], targetRelationFilter] },
|
|
31
39
|
};
|
|
32
40
|
}
|
|
33
|
-
async countManyHasManyGroups({ mapper, filter,
|
|
34
|
-
const owningRelation =
|
|
35
|
-
const joiningColumns = this.resolveJoiningColumns({
|
|
36
|
-
const qb = this.buildJunctionQb(owningRelation, ids, joiningColumns, targetEntity, { filter })
|
|
41
|
+
async countManyHasManyGroups({ mapper, filter, relationContext, relationPath, ids, }) {
|
|
42
|
+
const owningRelation = relationContext.type === 'manyHasManyInverse' ? relationContext.targetRelation : relationContext.relation;
|
|
43
|
+
const joiningColumns = this.resolveJoiningColumns({ relationType: relationContext.type, joiningTable: owningRelation.joiningTable });
|
|
44
|
+
const qb = this.buildJunctionQb(owningRelation, ids, joiningColumns, relationContext.targetEntity, { filter }, relationPath)
|
|
37
45
|
.select(['junction_', joiningColumns.sourceColumn.columnName])
|
|
38
46
|
.select(expr => expr.raw('count(*)'), 'row_count')
|
|
39
47
|
.groupBy(['junction_', joiningColumns.sourceColumn.columnName]);
|
|
@@ -44,12 +52,13 @@ class RelationFetcher {
|
|
|
44
52
|
}
|
|
45
53
|
return Object.fromEntries(result);
|
|
46
54
|
}
|
|
47
|
-
async fetchManyHasManyGroups({ mapper, field,
|
|
48
|
-
const owningRelation =
|
|
49
|
-
const joiningColumns = this.resolveJoiningColumns({
|
|
50
|
-
const defaultOrderBy =
|
|
51
|
-
const objectNode = OrderByHelper_1.OrderByHelper.appendDefaultOrderBy(targetEntity, field, defaultOrderBy);
|
|
52
|
-
const
|
|
55
|
+
async fetchManyHasManyGroups({ mapper, field, relationContext, relationPath, ids, }) {
|
|
56
|
+
const owningRelation = relationContext.type === 'manyHasManyInverse' ? relationContext.targetRelation : relationContext.relation;
|
|
57
|
+
const joiningColumns = this.resolveJoiningColumns({ relationType: relationContext.type, joiningTable: owningRelation.joiningTable });
|
|
58
|
+
const defaultOrderBy = relationContext.relation.orderBy || [];
|
|
59
|
+
const objectNode = OrderByHelper_1.OrderByHelper.appendDefaultOrderBy(relationContext.targetEntity, field, defaultOrderBy);
|
|
60
|
+
const { targetEntity } = relationContext;
|
|
61
|
+
const junctionValues = await this.fetchJunction(mapper.db, owningRelation, ids, joiningColumns, targetEntity, objectNode, relationPath);
|
|
53
62
|
if (junctionValues.length === 0) {
|
|
54
63
|
return {};
|
|
55
64
|
}
|
|
@@ -65,16 +74,16 @@ class RelationFetcher {
|
|
|
65
74
|
},
|
|
66
75
|
})
|
|
67
76
|
.withField(primaryField);
|
|
68
|
-
const result = await mapper.select(targetEntity, queryWithWhere,
|
|
77
|
+
const result = await mapper.select(targetEntity, queryWithWhere, [...relationPath, relationContext]);
|
|
69
78
|
return this.buildManyHasManyGroups(targetEntity, joiningColumns, result, junctionValues);
|
|
70
79
|
}
|
|
71
|
-
resolveJoiningColumns({
|
|
72
|
-
return
|
|
73
|
-
sourceColumn:
|
|
74
|
-
targetColumn:
|
|
80
|
+
resolveJoiningColumns({ relationType, joiningTable }) {
|
|
81
|
+
return relationType === 'manyHasManyOwning' ? {
|
|
82
|
+
sourceColumn: joiningTable.joiningColumn,
|
|
83
|
+
targetColumn: joiningTable.inverseJoiningColumn,
|
|
75
84
|
} : {
|
|
76
|
-
sourceColumn:
|
|
77
|
-
targetColumn:
|
|
85
|
+
sourceColumn: joiningTable.inverseJoiningColumn,
|
|
86
|
+
targetColumn: joiningTable.joiningColumn,
|
|
78
87
|
};
|
|
79
88
|
}
|
|
80
89
|
buildManyHasManyGroups(entity, joiningColumns, resultObjects, junctionValues) {
|
|
@@ -96,9 +105,9 @@ class RelationFetcher {
|
|
|
96
105
|
}
|
|
97
106
|
return groupedResult;
|
|
98
107
|
}
|
|
99
|
-
async fetchJunction(db, relation, values, column, targetEntity, object) {
|
|
108
|
+
async fetchJunction(db, relation, values, column, targetEntity, object, relationPath) {
|
|
100
109
|
const joiningTable = relation.joiningTable;
|
|
101
|
-
const qb = this.buildJunctionQb(relation, values, column, targetEntity, object.args)
|
|
110
|
+
const qb = this.buildJunctionQb(relation, values, column, targetEntity, object.args, relationPath)
|
|
102
111
|
.select(['junction_', joiningTable.inverseJoiningColumn.columnName])
|
|
103
112
|
.select(['junction_', joiningTable.joiningColumn.columnName]);
|
|
104
113
|
const wrapper = new database_1.LimitByGroupWrapper(['junction_', column.sourceColumn.columnName], (orderable, qb) => {
|
|
@@ -109,7 +118,7 @@ class RelationFetcher {
|
|
|
109
118
|
}, object.args.offset, object.args.limit);
|
|
110
119
|
return await wrapper.getResult(qb, db);
|
|
111
120
|
}
|
|
112
|
-
buildJunctionQb(relation, ids, column, targetEntity, objectArgs) {
|
|
121
|
+
buildJunctionQb(relation, ids, column, targetEntity, objectArgs, relationPath) {
|
|
113
122
|
const joiningTable = relation.joiningTable;
|
|
114
123
|
const whereColumn = column.sourceColumn.columnName;
|
|
115
124
|
let qb = database_1.SelectBuilder.create()
|
|
@@ -129,7 +138,7 @@ class RelationFetcher {
|
|
|
129
138
|
]));
|
|
130
139
|
}
|
|
131
140
|
if (where && hasWhere) {
|
|
132
|
-
qb = this.whereBuilder.build(qb, targetEntity, this.pathFactory.create([]), where);
|
|
141
|
+
qb = this.whereBuilder.build(qb, targetEntity, this.pathFactory.create([]), where, { relationPath });
|
|
133
142
|
}
|
|
134
143
|
return qb;
|
|
135
144
|
}
|
|
@@ -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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"}
|
|
@@ -9,6 +9,7 @@ import { SelectExecutionHandler } from './SelectExecutionHandler';
|
|
|
9
9
|
import { MetaHandler } from './handlers';
|
|
10
10
|
import { Mapper } from '../Mapper';
|
|
11
11
|
import { ObjectNode } from '../../inputProcessing';
|
|
12
|
+
import { PredicateFactory } from '../../acl';
|
|
12
13
|
export declare class SelectBuilder {
|
|
13
14
|
private readonly schema;
|
|
14
15
|
private readonly whereBuilder;
|
|
@@ -19,12 +20,14 @@ export declare class SelectBuilder {
|
|
|
19
20
|
private readonly fieldsVisitorFactory;
|
|
20
21
|
private readonly selectHandlers;
|
|
21
22
|
private readonly pathFactory;
|
|
23
|
+
private readonly relationPath;
|
|
24
|
+
private readonly predicateFactory;
|
|
22
25
|
private resolver;
|
|
23
26
|
readonly rows: Promise<SelectRow[]>;
|
|
24
27
|
private queryWrapper;
|
|
25
28
|
constructor(schema: Model.Schema, whereBuilder: WhereBuilder, orderByBuilder: OrderByBuilder, metaHandler: MetaHandler, qb: DbSelectBuilder<DbSelectBuilder.Result>, hydrator: SelectHydrator, fieldsVisitorFactory: FieldsVisitorFactory, selectHandlers: {
|
|
26
29
|
[key: string]: SelectExecutionHandler<any>;
|
|
27
|
-
}, pathFactory: PathFactory);
|
|
30
|
+
}, pathFactory: PathFactory, relationPath: Model.AnyRelationContext[], predicateFactory: PredicateFactory);
|
|
28
31
|
execute(db: Client): Promise<SelectRow[]>;
|
|
29
32
|
select(mapper: Mapper, entity: Model.Entity, input: ObjectNode<Input.ListQueryInput>, path: Path, groupBy?: string): void;
|
|
30
33
|
private selectInternal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectBuilder.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SelectBuilder.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAqB,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAuB,aAAa,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAiC,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAa,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,qBAAa,aAAa;IASxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAlBlC,OAAO,CAAC,QAAQ,CAEf;IACD,SAAgB,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAoD;IAE9F,OAAO,CAAC,YAAY,CAAmC;gBAGrC,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACjC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,EAClC,QAAQ,EAAE,cAAc,EACxB,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;KAAE,EAC9D,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,KAAK,CAAC,kBAAkB,EAAE,EACxC,gBAAgB,EAAE,gBAAgB;IAGvC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAW/C,MAAM,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EACvC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,MAAM;IA8BjB,OAAO,CAAC,cAAc;YA+GR,eAAe;CAQ7B"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SelectBuilder = void 0;
|
|
4
|
+
const schema_1 = require("@contember/schema");
|
|
4
5
|
const schema_utils_1 = require("@contember/schema-utils");
|
|
5
6
|
const database_1 = require("@contember/database");
|
|
6
7
|
const inputProcessing_1 = require("../../inputProcessing");
|
|
7
8
|
const utils_1 = require("../../utils");
|
|
8
9
|
class SelectBuilder {
|
|
9
|
-
constructor(schema, whereBuilder, orderByBuilder, metaHandler, qb, hydrator, fieldsVisitorFactory, selectHandlers, pathFactory) {
|
|
10
|
+
constructor(schema, whereBuilder, orderByBuilder, metaHandler, qb, hydrator, fieldsVisitorFactory, selectHandlers, pathFactory, relationPath, predicateFactory) {
|
|
10
11
|
this.schema = schema;
|
|
11
12
|
this.whereBuilder = whereBuilder;
|
|
12
13
|
this.orderByBuilder = orderByBuilder;
|
|
@@ -16,6 +17,8 @@ class SelectBuilder {
|
|
|
16
17
|
this.fieldsVisitorFactory = fieldsVisitorFactory;
|
|
17
18
|
this.selectHandlers = selectHandlers;
|
|
18
19
|
this.pathFactory = pathFactory;
|
|
20
|
+
this.relationPath = relationPath;
|
|
21
|
+
this.predicateFactory = predicateFactory;
|
|
19
22
|
this.resolver = () => {
|
|
20
23
|
throw new Error('SelectBuilder: Resolver called too soon');
|
|
21
24
|
};
|
|
@@ -37,7 +40,7 @@ class SelectBuilder {
|
|
|
37
40
|
this.selectInternal(mapper, entity, path, input);
|
|
38
41
|
const where = input.args.filter;
|
|
39
42
|
if (where) {
|
|
40
|
-
this.qb = this.whereBuilder.build(this.qb, entity, path, where);
|
|
43
|
+
this.qb = this.whereBuilder.build(this.qb, entity, path, where, { relationPath: this.relationPath });
|
|
41
44
|
}
|
|
42
45
|
const orderBy = input.args.orderBy || [];
|
|
43
46
|
if (groupBy) {
|
|
@@ -60,6 +63,27 @@ class SelectBuilder {
|
|
|
60
63
|
if (!input.fields.find(it => it.name === entity.primary && it.alias === entity.primary)) {
|
|
61
64
|
input = input.withField(new inputProcessing_1.FieldNode(entity.primary, entity.primary, {}));
|
|
62
65
|
}
|
|
66
|
+
const fetchedPredicates = new Set();
|
|
67
|
+
const addPredicate = (predicate) => {
|
|
68
|
+
if (typeof predicate === 'boolean') {
|
|
69
|
+
return () => predicate;
|
|
70
|
+
}
|
|
71
|
+
const predicatePath = path.for('__predicate').for(predicate);
|
|
72
|
+
if (!fetchedPredicates.has(predicate)) {
|
|
73
|
+
const relationContext = this.relationPath[this.relationPath.length - 1];
|
|
74
|
+
const primaryPredicate = this.predicateFactory.create(entity, schema_1.Acl.Operation.read, undefined, relationContext);
|
|
75
|
+
const fieldPredicate = this.predicateFactory.buildPredicates(entity, [predicate], relationContext);
|
|
76
|
+
this.qb = this.whereBuilder.buildAdvanced(entity, path.back(), fieldPredicate, apply => this.qb.select(expr => expr.selectCondition(condition => {
|
|
77
|
+
condition = apply(condition);
|
|
78
|
+
if (condition.isEmpty()) {
|
|
79
|
+
return condition.raw('true');
|
|
80
|
+
}
|
|
81
|
+
return condition;
|
|
82
|
+
}), predicatePath.alias), { relationPath: this.relationPath, evaluatedPredicates: [primaryPredicate] });
|
|
83
|
+
fetchedPredicates.add(predicate);
|
|
84
|
+
}
|
|
85
|
+
return row => row[predicatePath.alias] === true;
|
|
86
|
+
};
|
|
63
87
|
for (let field of input.fields) {
|
|
64
88
|
const fieldPath = path.for(field.alias);
|
|
65
89
|
const fieldProperty = (() => {
|
|
@@ -73,16 +97,30 @@ class SelectBuilder {
|
|
|
73
97
|
})();
|
|
74
98
|
const executionContext = {
|
|
75
99
|
mapper,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
100
|
+
relationPath: this.relationPath,
|
|
101
|
+
addData: async ({ field, dataProvider, defaultValue, predicate }) => {
|
|
102
|
+
if (predicate === false) {
|
|
103
|
+
this.hydrator.addPromise(fieldPath, path.for(field), Promise.resolve({}), defaultValue !== null && defaultValue !== void 0 ? defaultValue : null);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const predicateGetter = predicate !== undefined && predicate !== true ? addPredicate(predicate) : null;
|
|
107
|
+
const columnName = (0, schema_utils_1.getColumnName)(this.schema, entity, field);
|
|
108
|
+
let ids = await this.getColumnValues(path.for(field), columnName, predicateGetter);
|
|
109
|
+
const data = ids.length > 0 ? dataProvider(ids) : Promise.resolve({});
|
|
110
|
+
this.hydrator.addPromise(fieldPath, path.for(field), data, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null);
|
|
81
111
|
},
|
|
82
|
-
addColumn: (
|
|
83
|
-
|
|
84
|
-
|
|
112
|
+
addColumn: ({ path = fieldPath, predicate, query, valueGetter }) => {
|
|
113
|
+
if (predicate === false) {
|
|
114
|
+
this.hydrator.addColumn(path, () => null);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const predicateGetter = predicate !== undefined && predicate !== true ? addPredicate(predicate) : null;
|
|
118
|
+
if (query) {
|
|
119
|
+
this.qb = query(this.qb);
|
|
120
|
+
}
|
|
121
|
+
this.hydrator.addColumn(path, valueGetter !== null && valueGetter !== void 0 ? valueGetter : (row => predicateGetter === null || predicateGetter(row) ? row[path.alias] : null));
|
|
85
122
|
},
|
|
123
|
+
addPredicate: addPredicate,
|
|
86
124
|
path: fieldPath,
|
|
87
125
|
entity: entity,
|
|
88
126
|
...fieldProperty,
|
|
@@ -107,11 +145,13 @@ class SelectBuilder {
|
|
|
107
145
|
(0, schema_utils_1.acceptFieldVisitor)(this.schema, entity, field.name, fieldVisitor);
|
|
108
146
|
}
|
|
109
147
|
}
|
|
110
|
-
async getColumnValues(columnPath, columnName) {
|
|
148
|
+
async getColumnValues(columnPath, columnName, predicateGetter) {
|
|
111
149
|
this.qb = this.qb.select([columnPath.back().alias, columnName], columnPath.alias);
|
|
112
150
|
const rows = await this.rows;
|
|
151
|
+
const filteredRows = predicateGetter === null ? rows : rows.filter(predicateGetter);
|
|
113
152
|
const columnAlias = columnPath.alias;
|
|
114
|
-
|
|
153
|
+
const ids = filteredRows.map((it) => it[columnAlias]).filter(it => it !== null);
|
|
154
|
+
return Array.from(new Set(ids));
|
|
115
155
|
}
|
|
116
156
|
}
|
|
117
157
|
exports.SelectBuilder = SelectBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectBuilder.js","sourceRoot":"","sources":["../../../../src/mapper/select/SelectBuilder.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SelectBuilder.js","sourceRoot":"","sources":["../../../../src/mapper/select/SelectBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { SelectBuilder } from './SelectBuilder';
|
|
2
2
|
import { SelectHydrator } from './SelectHydrator';
|
|
3
3
|
import { SelectBuilder as DbSelectBuilder } from '@contember/database';
|
|
4
|
+
import { Model } from '@contember/schema';
|
|
4
5
|
export interface SelectBuilderFactory {
|
|
5
|
-
create(qb: DbSelectBuilder<DbSelectBuilder.Result>, hydrator: SelectHydrator): SelectBuilder;
|
|
6
|
+
create(qb: DbSelectBuilder<DbSelectBuilder.Result>, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder;
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=SelectBuilderFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"SelectBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,CAAC,kBAAkB,EAAE,GAAG,aAAa,CAAA;CACtI"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Path } from './Path';
|
|
2
|
-
import { Input, Model } from '@contember/schema';
|
|
3
|
-
import { SelectNestedData, SelectNestedDefaultValue } from './SelectHydrator';
|
|
2
|
+
import { Acl, Input, Model } from '@contember/schema';
|
|
3
|
+
import { ColumnValueGetter, SelectNestedData, SelectNestedDefaultValue, SelectRow } from './SelectHydrator';
|
|
4
4
|
import { SelectBuilder } from '@contember/database';
|
|
5
5
|
import { Mapper } from '../Mapper';
|
|
6
6
|
import { FieldNode, ObjectNode } from '../../inputProcessing';
|
|
@@ -12,8 +12,20 @@ export declare type SelectExecutionHandlerContext<FieldArgs = any, FieldExtensio
|
|
|
12
12
|
mapper: Mapper;
|
|
13
13
|
path: Path;
|
|
14
14
|
entity: Model.Entity;
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
relationPath: Model.AnyRelationContext[];
|
|
16
|
+
addPredicate: (predicate: Acl.Predicate) => (row: SelectRow) => boolean;
|
|
17
|
+
addColumn: (args: {
|
|
18
|
+
predicate?: Acl.Predicate;
|
|
19
|
+
query?: (qb: SelectBuilder<SelectBuilder.Result>) => SelectBuilder<SelectBuilder.Result>;
|
|
20
|
+
path?: Path;
|
|
21
|
+
valueGetter?: ColumnValueGetter;
|
|
22
|
+
}) => void;
|
|
23
|
+
addData: (args: {
|
|
24
|
+
field: string;
|
|
25
|
+
dataProvider: DataCallback;
|
|
26
|
+
predicate?: Acl.Predicate;
|
|
27
|
+
defaultValue?: SelectNestedDefaultValue;
|
|
28
|
+
}) => void;
|
|
17
29
|
} & ({
|
|
18
30
|
fieldNode: FieldNode<FieldExtensions>;
|
|
19
31
|
objectNode?: never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectExecutionHandler.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectExecutionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"SelectExecutionHandler.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectExecutionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,WAAW,sBAAsB,CACtC,SAAS,GAAG,OAAO,EACnB,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEjE,OAAO,CAAC,OAAO,EAAE,6BAA6B,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,IAAI,CAAA;CACjF;AAED,oBAAY,YAAY,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAEnF,oBAAY,6BAA6B,CACxC,SAAS,GAAG,GAAG,EACf,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC9D;IACH,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,KAAK,CAAC,MAAM,CAAA;IACpB,YAAY,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAA;IACxC,YAAY,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAA;IACvE,SAAS,EAAE,CAAC,IAAI,EAAE;QACjB,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;QACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACxF,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,WAAW,CAAC,EAAE,iBAAiB,CAAA;KAC/B,KAAK,IAAI,CAAA;IACV,OAAO,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,YAAY,CAAA;QAC1B,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAA;QACzB,YAAY,CAAC,EAAE,wBAAwB,CAAA;KACvC,KAAK,IAAI,CAAA;CACV,GAAG,CACD;IACD,SAAS,EAAE,SAAS,CAAC,eAAe,CAAC,CAAA;IACrC,UAAU,CAAC,EAAE,KAAK,CAAA;CAChB,GACD;IACD,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;CAChD,CACH,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Path } from './Path';
|
|
2
2
|
import { Value } from '@contember/schema';
|
|
3
|
+
export declare type ColumnValueGetter<T extends Value.FieldValue = Value.FieldValue> = (row: SelectRow) => T;
|
|
3
4
|
export declare class SelectHydrator {
|
|
4
5
|
private columns;
|
|
5
6
|
private promises;
|
|
6
|
-
addColumn(path: Path): void;
|
|
7
|
+
addColumn(path: Path, getValue: ColumnValueGetter): void;
|
|
7
8
|
addPromise(path: Path, parentKeyPath: Path, data: Promise<SelectNestedData>, defaultValue: SelectNestedDefaultValue): void;
|
|
8
9
|
hydrateGroups(rows: SelectRow[], groupBy: string): Promise<SelectGroupedObjects>;
|
|
9
10
|
hydrateAll(rows: SelectRow[]): Promise<SelectResultObject[]>;
|
|
@@ -13,7 +14,7 @@ export declare class SelectHydrator {
|
|
|
13
14
|
private formatValue;
|
|
14
15
|
}
|
|
15
16
|
export declare type SelectRow = {
|
|
16
|
-
[key: string]: Value.
|
|
17
|
+
[key: string]: Value.FieldValue;
|
|
17
18
|
};
|
|
18
19
|
export declare type SelectResultObject = Value.Object;
|
|
19
20
|
export declare type SelectIndexedResultObjects = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectHydrator.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectHydrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"SelectHydrator.d.ts","sourceRoot":"","sources":["../../../../src/mapper/select/SelectHydrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAkBzC,oBAAY,iBAAiB,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,SAAS,KAAK,CAAC,CAAA;AAOpG,qBAAa,cAAc;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAqB;IAE9B,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB;IAIjD,UAAU,CAChB,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,IAAI,EACnB,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAC/B,YAAY,EAAE,wBAAwB;IAK1B,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAahF,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC5D,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAqBhG,OAAO,CAAC,UAAU;YAwBJ,mBAAmB;IAkBjC,OAAO,CAAC,WAAW;CAMnB;AAED,oBAAY,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,UAAU,CAAA;CAAE,CAAA;AAC3D,oBAAY,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAA;AAC7C,oBAAY,0BAA0B,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;CAAE,CAAA;AAC9E,oBAAY,oBAAoB,GAAG;IAAE,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAA;CAAE,CAAA;AAClF,oBAAY,gBAAgB,GAAG,oBAAoB,GAAG,0BAA0B,CAAA;AAChF,oBAAY,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAA"}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SelectHydrator = void 0;
|
|
4
4
|
const utils_1 = require("../../utils");
|
|
5
|
+
const logger_1 = require("@contember/logger");
|
|
5
6
|
class SelectHydrator {
|
|
6
7
|
constructor() {
|
|
7
8
|
this.columns = [];
|
|
8
9
|
this.promises = [];
|
|
9
10
|
}
|
|
10
|
-
addColumn(path) {
|
|
11
|
-
this.columns.push(path);
|
|
11
|
+
addColumn(path, getValue) {
|
|
12
|
+
this.columns.push({ path, getValue });
|
|
12
13
|
}
|
|
13
14
|
addPromise(path, parentKeyPath, data, defaultValue) {
|
|
14
15
|
this.promises.push({ path, parentKeyPath, data, defaultValue });
|
|
@@ -43,11 +44,10 @@ class SelectHydrator {
|
|
|
43
44
|
hydrateRow(row, resolvedData) {
|
|
44
45
|
const result = {};
|
|
45
46
|
for (let columnPath of this.columns) {
|
|
46
|
-
const path = [...columnPath.path];
|
|
47
|
+
const path = [...columnPath.path.path];
|
|
47
48
|
const last = path.pop();
|
|
48
49
|
const currentObject = path.reduce((obj, part) => (obj[part] = obj[part] || {}), result);
|
|
49
|
-
|
|
50
|
-
currentObject[last] = this.formatValue(field);
|
|
50
|
+
currentObject[last] = this.formatValue(columnPath.getValue(row));
|
|
51
51
|
}
|
|
52
52
|
for (let { path, parentKeyPath, data, defaultValue } of resolvedData) {
|
|
53
53
|
const pathTmp = [...path.path];
|
|
@@ -70,10 +70,7 @@ class SelectHydrator {
|
|
|
70
70
|
const failures = (0, utils_1.getRejections)(results);
|
|
71
71
|
if (failures.length > 0) {
|
|
72
72
|
if (failures.length > 1) {
|
|
73
|
-
|
|
74
|
-
console.error('Multiple error has occurred, printing them & rethrowing the first one');
|
|
75
|
-
// eslint-disable-next-line no-console
|
|
76
|
-
failures.slice(1).map(e => console.error(e));
|
|
73
|
+
failures.slice(1).map(e => logger_1.logger.error(e, { loc: 'SelectHydrator' }));
|
|
77
74
|
}
|
|
78
75
|
throw failures[0];
|
|
79
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectHydrator.js","sourceRoot":"","sources":["../../../../src/mapper/select/SelectHydrator.ts"],"names":[],"mappings":";;;AAEA,uCAA+D;
|
|
1
|
+
{"version":3,"file":"SelectHydrator.js","sourceRoot":"","sources":["../../../../src/mapper/select/SelectHydrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,23 @@ 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
|
+
import { WhereOptimizationHints, WhereOptimizer } from './optimizer/WhereOptimizer';
|
|
7
7
|
export declare class WhereBuilder {
|
|
8
8
|
private readonly schema;
|
|
9
9
|
private readonly joinBuilder;
|
|
10
10
|
private readonly conditionBuilder;
|
|
11
11
|
private readonly pathFactory;
|
|
12
12
|
private readonly whereOptimizer;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
private readonly useExistsInHasManyFilter;
|
|
14
|
+
constructor(schema: Model.Schema, joinBuilder: JoinBuilder, conditionBuilder: ConditionBuilder, pathFactory: PathFactory, whereOptimizer: WhereOptimizer, useExistsInHasManyFilter: boolean);
|
|
15
|
+
build(qb: SelectBuilder<SelectBuilder.Result>, entity: Model.Entity, path: Path, where: Input.OptionalWhere, optimizationHints?: WhereOptimizationHints): SelectBuilder<SelectBuilder.Result>;
|
|
16
|
+
buildAdvanced(entity: Model.Entity, path: Path, where: Input.OptionalWhere, callback: (clauseCb: (clause: SqlConditionBuilder) => SqlConditionBuilder) => SelectBuilder<SelectBuilder.Result>, optimizationHints?: WhereOptimizationHints): SelectBuilder<SelectBuilder.Result>;
|
|
16
17
|
private buildInternal;
|
|
18
|
+
private buildRecursive;
|
|
17
19
|
private createManyHasManySubquery;
|
|
18
20
|
private transformWhereToPrimaryCondition;
|
|
21
|
+
private hasRootIsNull;
|
|
22
|
+
private conditionHasIsNull;
|
|
19
23
|
}
|
|
20
24
|
export declare type WhereJoinDefinition = {
|
|
21
25
|
path: Path;
|