@contember/engine-content-api 2.0.0-alpha.9 → 2.0.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/development/index.cjs +3 -2
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +3 -2
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/ExecutionContainer.cjs +2 -2
- package/dist/development/src/ExecutionContainer.cjs.map +1 -1
- package/dist/development/src/ExecutionContainer.js +2 -2
- package/dist/development/src/ExecutionContainer.js.map +1 -1
- package/dist/development/src/acl/Authorizator.cjs.map +1 -1
- package/dist/development/src/acl/Authorizator.js.map +1 -1
- package/dist/development/src/acl/EvaluatedPredicateReplacer.cjs.map +1 -1
- package/dist/development/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
- package/dist/development/src/acl/PermissionFactory.cjs.map +1 -1
- package/dist/development/src/acl/PermissionFactory.js.map +1 -1
- package/dist/development/src/acl/PredicateFactory.cjs.map +1 -1
- package/dist/development/src/acl/PredicateFactory.js.map +1 -1
- package/dist/development/src/acl/PredicatesInjector.cjs.map +1 -1
- package/dist/development/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/development/src/acl/VariableInjector.cjs.map +1 -1
- package/dist/development/src/acl/VariableInjector.js.map +1 -1
- package/dist/development/src/acl/VariableUtils.cjs.map +1 -1
- package/dist/development/src/acl/VariableUtils.js.map +1 -1
- package/dist/development/src/exception.cjs.map +1 -1
- package/dist/development/src/exception.js.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +31 -6
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +31 -6
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
- package/dist/development/src/input-validation/ColumnValueResolver.cjs.map +1 -1
- package/dist/development/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/development/src/input-validation/EntityRulesResolver.cjs.map +1 -1
- package/dist/development/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/development/src/input-validation/QueryAstFactory.cjs.map +1 -1
- package/dist/development/src/input-validation/QueryAstFactory.js.map +1 -1
- package/dist/development/src/input-validation/ValidationContext.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationContext.js.map +1 -1
- package/dist/development/src/input-validation/ValidationDataSelector.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationDataSelector.js.map +1 -1
- package/dist/development/src/input-validation/ValidationEvaluation.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationEvaluation.js.map +1 -1
- package/dist/development/src/input-validation/ValidationPath.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationPath.js.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyMerger.cjs.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs +16 -17
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.js +16 -17
- package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/development/src/inputProcessing/FieldNode.cjs.map +1 -1
- package/dist/development/src/inputProcessing/FieldNode.js.map +1 -1
- package/dist/development/src/inputProcessing/ObjectNode.cjs.map +1 -1
- package/dist/development/src/inputProcessing/ObjectNode.js.map +1 -1
- package/dist/development/src/inputProcessing/UniqueWhereExpander.cjs.map +1 -1
- package/dist/development/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs +29 -27
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js +29 -27
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.cjs +6 -163
- package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.cjs.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.js +5 -162
- package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.js.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaFactory.cjs.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
- package/dist/development/src/introspection/introspection.schema.cjs +163 -0
- package/dist/development/src/introspection/introspection.schema.cjs.map +1 -0
- package/dist/development/src/introspection/introspection.schema.js +163 -0
- package/dist/development/src/introspection/introspection.schema.js.map +1 -0
- package/dist/development/src/mapper/CheckedPrimary.cjs.map +1 -1
- package/dist/development/src/mapper/CheckedPrimary.js.map +1 -1
- package/dist/development/src/mapper/ColumnValue.cjs +8 -18
- package/dist/development/src/mapper/ColumnValue.cjs.map +1 -1
- package/dist/development/src/mapper/ColumnValue.js +8 -18
- package/dist/development/src/mapper/ColumnValue.js.map +1 -1
- package/dist/development/src/mapper/ErrorUtils.cjs +1 -1
- package/dist/development/src/mapper/ErrorUtils.cjs.map +1 -1
- package/dist/development/src/mapper/ErrorUtils.js +1 -1
- package/dist/development/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/development/src/mapper/EventManager.cjs +4 -7
- package/dist/development/src/mapper/EventManager.cjs.map +1 -1
- package/dist/development/src/mapper/EventManager.js +4 -7
- package/dist/development/src/mapper/EventManager.js.map +1 -1
- package/dist/development/src/mapper/JunctionTableManager.cjs.map +1 -1
- package/dist/development/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/development/src/mapper/Mapper.cjs +8 -28
- package/dist/development/src/mapper/Mapper.cjs.map +1 -1
- package/dist/development/src/mapper/Mapper.js +8 -28
- package/dist/development/src/mapper/Mapper.js.map +1 -1
- package/dist/development/src/mapper/MapperFactory.cjs.map +1 -1
- package/dist/development/src/mapper/MapperFactory.js.map +1 -1
- package/dist/development/src/mapper/MutationProcessorHelper.cjs +10 -2
- package/dist/development/src/mapper/MutationProcessorHelper.cjs.map +1 -1
- package/dist/development/src/mapper/MutationProcessorHelper.js +10 -2
- package/dist/development/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/development/src/mapper/Result.cjs +10 -27
- package/dist/development/src/mapper/Result.cjs.map +1 -1
- package/dist/development/src/mapper/Result.js +10 -27
- package/dist/development/src/mapper/Result.js.map +1 -1
- package/dist/development/src/mapper/delete/DeleteExecutor.cjs +4 -8
- package/dist/development/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeleteExecutor.js +5 -9
- package/dist/development/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/development/src/mapper/delete/DeleteState.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeleteState.js.map +1 -1
- package/dist/development/src/mapper/delete/DeletedEntitiesStorage.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeletedEntitiesStorage.js.map +1 -1
- package/dist/development/src/mapper/delete/helpers.cjs.map +1 -1
- package/dist/development/src/mapper/delete/helpers.js.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.cjs +13 -21
- package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.js +14 -22
- package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilderFactory.cjs.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.cjs +43 -21
- package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.js +45 -23
- package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs +23 -79
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js +23 -79
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +43 -0
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +43 -0
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +40 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +40 -0
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +38 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +38 -0
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +23 -32
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +23 -32
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +65 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +65 -0
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/select/ConditionBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/ConditionBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/JoinBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/JoinBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/JoinVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/JoinVisitor.js.map +1 -1
- package/dist/development/src/mapper/select/OrderByBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/OrderByBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/OrderByHelper.cjs.map +1 -1
- package/dist/development/src/mapper/select/OrderByHelper.js.map +1 -1
- package/dist/development/src/mapper/select/Path.cjs.map +1 -1
- package/dist/development/src/mapper/select/Path.js.map +1 -1
- package/dist/development/src/mapper/select/RelationFetcher.cjs.map +1 -1
- package/dist/development/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/development/src/mapper/select/SelectBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/SelectHydrator.cjs.map +1 -1
- package/dist/development/src/mapper/select/SelectHydrator.js.map +1 -1
- package/dist/development/src/mapper/select/WhereBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +3 -0
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +3 -0
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/MetaHandler.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/MetaHandler.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/ConditionOptimizer.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereOptimizer.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereReplacer.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereReplacer.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/helpers.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/helpers.js.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.cjs +14 -19
- package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.js +15 -20
- package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilderFactory.cjs.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
- package/dist/development/src/mapper/update/Updater.cjs +45 -17
- package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/development/src/mapper/update/Updater.js +47 -19
- package/dist/development/src/mapper/update/Updater.js.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +84 -0
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +84 -0
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +88 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +88 -0
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +87 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +87 -0
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs +147 -0
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js +147 -0
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +183 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +183 -0
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
- package/dist/development/src/resolvers/GraphQlQueryAstFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.cjs +8 -4
- package/dist/development/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.js +8 -4
- package/dist/development/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/ReadHelpers.cjs.map +1 -1
- package/dist/development/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/development/src/resolvers/ReadResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/development/src/resolvers/ValidationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/ValidationResolver.js.map +1 -1
- package/dist/development/src/schema/ColumnTypeResolver.cjs.map +1 -1
- package/dist/development/src/schema/ColumnTypeResolver.js.map +1 -1
- package/dist/development/src/schema/ConditionTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/ConditionTypeProvider.js.map +1 -1
- package/dist/development/src/schema/CustomTypesProvider.cjs.map +1 -1
- package/dist/development/src/schema/CustomTypesProvider.js.map +1 -1
- package/dist/development/src/schema/EntityTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/EntityTypeProvider.js.map +1 -1
- package/dist/development/src/schema/EnumsProvider.cjs.map +1 -1
- package/dist/development/src/schema/EnumsProvider.js.map +1 -1
- package/dist/development/src/schema/FieldAccessVisitor.cjs.map +1 -1
- package/dist/development/src/schema/FieldAccessVisitor.js.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
- package/dist/development/src/schema/MutationProvider.cjs.map +1 -1
- package/dist/development/src/schema/MutationProvider.js.map +1 -1
- package/dist/development/src/schema/OperationExtension.cjs.map +1 -1
- package/dist/development/src/schema/OperationExtension.js.map +1 -1
- package/dist/development/src/schema/OrderByTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/development/src/schema/PaginatedFieldConfigFactory.cjs.map +1 -1
- package/dist/development/src/schema/PaginatedFieldConfigFactory.js.map +1 -1
- package/dist/development/src/schema/QueryProvider.cjs.map +1 -1
- package/dist/development/src/schema/QueryProvider.js.map +1 -1
- package/dist/development/src/schema/ResultSchemaTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/ResultSchemaTypeProvider.js.map +1 -1
- package/dist/development/src/schema/ValidationQueriesProvider.cjs.map +1 -1
- package/dist/development/src/schema/ValidationQueriesProvider.js.map +1 -1
- package/dist/development/src/schema/WhereTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/WhereTypeProvider.js.map +1 -1
- package/dist/development/src/schema/entities/FieldArgsVisitor.cjs.map +1 -1
- package/dist/development/src/schema/entities/FieldArgsVisitor.js.map +1 -1
- package/dist/development/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
- package/dist/development/src/schema/entities/FieldTypeVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/ConnectOrCreateRelationInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
- package/dist/development/src/schema/mutations/EntityInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/EntityInputProvider.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs +2 -0
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +2 -0
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
- package/dist/development/src/schema/utils.cjs.map +1 -1
- package/dist/development/src/schema/utils.js.map +1 -1
- package/dist/development/src/utils/Mutex.cjs.map +1 -1
- package/dist/development/src/utils/Mutex.js.map +1 -1
- package/dist/development/src/utils/ResolveInfoUtils.cjs.map +1 -1
- package/dist/development/src/utils/ResolveInfoUtils.js.map +1 -1
- package/dist/development/src/utils/accessor.cjs.map +1 -1
- package/dist/development/src/utils/accessor.js.map +1 -1
- package/dist/development/src/utils/isIt.cjs.map +1 -1
- package/dist/development/src/utils/isIt.js.map +1 -1
- package/dist/development/src/utils/object.cjs.map +1 -1
- package/dist/development/src/utils/object.js.map +1 -1
- package/dist/development/src/utils/paginationUtils.cjs.map +1 -1
- package/dist/development/src/utils/paginationUtils.js.map +1 -1
- package/dist/development/src/utils/singletonFactory.cjs.map +1 -1
- package/dist/development/src/utils/singletonFactory.js.map +1 -1
- package/dist/development/src/utils/uniqueWhereFields.cjs.map +1 -1
- package/dist/development/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/production/index.cjs +3 -2
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +3 -2
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/ExecutionContainer.cjs +2 -2
- package/dist/production/src/ExecutionContainer.cjs.map +1 -1
- package/dist/production/src/ExecutionContainer.js +2 -2
- package/dist/production/src/ExecutionContainer.js.map +1 -1
- package/dist/production/src/acl/Authorizator.cjs.map +1 -1
- package/dist/production/src/acl/Authorizator.js.map +1 -1
- package/dist/production/src/acl/EvaluatedPredicateReplacer.cjs.map +1 -1
- package/dist/production/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
- package/dist/production/src/acl/PermissionFactory.cjs.map +1 -1
- package/dist/production/src/acl/PermissionFactory.js.map +1 -1
- package/dist/production/src/acl/PredicateFactory.cjs.map +1 -1
- package/dist/production/src/acl/PredicateFactory.js.map +1 -1
- package/dist/production/src/acl/PredicatesInjector.cjs.map +1 -1
- package/dist/production/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/production/src/acl/VariableInjector.cjs.map +1 -1
- package/dist/production/src/acl/VariableInjector.js.map +1 -1
- package/dist/production/src/acl/VariableUtils.cjs.map +1 -1
- package/dist/production/src/acl/VariableUtils.js.map +1 -1
- package/dist/production/src/exception.cjs.map +1 -1
- package/dist/production/src/exception.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +31 -6
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +31 -6
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
- package/dist/production/src/input-validation/ColumnValueResolver.cjs.map +1 -1
- package/dist/production/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/production/src/input-validation/EntityRulesResolver.cjs.map +1 -1
- package/dist/production/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/production/src/input-validation/QueryAstFactory.cjs.map +1 -1
- package/dist/production/src/input-validation/QueryAstFactory.js.map +1 -1
- package/dist/production/src/input-validation/ValidationContext.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationContext.js.map +1 -1
- package/dist/production/src/input-validation/ValidationDataSelector.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationDataSelector.js.map +1 -1
- package/dist/production/src/input-validation/ValidationEvaluation.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationEvaluation.js.map +1 -1
- package/dist/production/src/input-validation/ValidationPath.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationPath.js.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyMerger.cjs.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +16 -17
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.js +16 -17
- package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/production/src/inputProcessing/FieldNode.cjs.map +1 -1
- package/dist/production/src/inputProcessing/FieldNode.js.map +1 -1
- package/dist/production/src/inputProcessing/ObjectNode.cjs.map +1 -1
- package/dist/production/src/inputProcessing/ObjectNode.js.map +1 -1
- package/dist/production/src/inputProcessing/UniqueWhereExpander.cjs.map +1 -1
- package/dist/production/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +29 -27
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js +29 -27
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.cjs +6 -163
- package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.cjs.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.js +5 -162
- package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.js.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaFactory.cjs.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
- package/dist/production/src/introspection/introspection.schema.cjs +163 -0
- package/dist/production/src/introspection/introspection.schema.cjs.map +1 -0
- package/dist/production/src/introspection/introspection.schema.js +163 -0
- package/dist/production/src/introspection/introspection.schema.js.map +1 -0
- package/dist/production/src/mapper/CheckedPrimary.cjs.map +1 -1
- package/dist/production/src/mapper/CheckedPrimary.js.map +1 -1
- package/dist/production/src/mapper/ColumnValue.cjs +8 -18
- package/dist/production/src/mapper/ColumnValue.cjs.map +1 -1
- package/dist/production/src/mapper/ColumnValue.js +8 -18
- package/dist/production/src/mapper/ColumnValue.js.map +1 -1
- package/dist/production/src/mapper/ErrorUtils.cjs +1 -1
- package/dist/production/src/mapper/ErrorUtils.cjs.map +1 -1
- package/dist/production/src/mapper/ErrorUtils.js +1 -1
- package/dist/production/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/production/src/mapper/EventManager.cjs +4 -7
- package/dist/production/src/mapper/EventManager.cjs.map +1 -1
- package/dist/production/src/mapper/EventManager.js +4 -7
- package/dist/production/src/mapper/EventManager.js.map +1 -1
- package/dist/production/src/mapper/JunctionTableManager.cjs.map +1 -1
- package/dist/production/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/production/src/mapper/Mapper.cjs +8 -28
- package/dist/production/src/mapper/Mapper.cjs.map +1 -1
- package/dist/production/src/mapper/Mapper.js +8 -28
- package/dist/production/src/mapper/Mapper.js.map +1 -1
- package/dist/production/src/mapper/MapperFactory.cjs.map +1 -1
- package/dist/production/src/mapper/MapperFactory.js.map +1 -1
- package/dist/production/src/mapper/MutationProcessorHelper.cjs +10 -2
- package/dist/production/src/mapper/MutationProcessorHelper.cjs.map +1 -1
- package/dist/production/src/mapper/MutationProcessorHelper.js +10 -2
- package/dist/production/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/production/src/mapper/Result.cjs +10 -27
- package/dist/production/src/mapper/Result.cjs.map +1 -1
- package/dist/production/src/mapper/Result.js +10 -27
- package/dist/production/src/mapper/Result.js.map +1 -1
- package/dist/production/src/mapper/delete/DeleteExecutor.cjs +4 -8
- package/dist/production/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeleteExecutor.js +5 -9
- package/dist/production/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/production/src/mapper/delete/DeleteState.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeleteState.js.map +1 -1
- package/dist/production/src/mapper/delete/DeletedEntitiesStorage.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeletedEntitiesStorage.js.map +1 -1
- package/dist/production/src/mapper/delete/helpers.cjs.map +1 -1
- package/dist/production/src/mapper/delete/helpers.js.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.cjs +13 -21
- package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.js +14 -22
- package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilderFactory.cjs.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.cjs +43 -21
- package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.js +45 -23
- package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +23 -79
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +23 -79
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +43 -0
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +43 -0
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +40 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +40 -0
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +38 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +38 -0
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +23 -32
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +23 -32
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +65 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +65 -0
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/select/ConditionBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/ConditionBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/JoinBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/JoinBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/JoinVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/JoinVisitor.js.map +1 -1
- package/dist/production/src/mapper/select/OrderByBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/OrderByBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/OrderByHelper.cjs.map +1 -1
- package/dist/production/src/mapper/select/OrderByHelper.js.map +1 -1
- package/dist/production/src/mapper/select/Path.cjs.map +1 -1
- package/dist/production/src/mapper/select/Path.js.map +1 -1
- package/dist/production/src/mapper/select/RelationFetcher.cjs.map +1 -1
- package/dist/production/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/production/src/mapper/select/SelectBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/SelectHydrator.cjs.map +1 -1
- package/dist/production/src/mapper/select/SelectHydrator.js.map +1 -1
- package/dist/production/src/mapper/select/WhereBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +3 -0
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +3 -0
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/MetaHandler.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/MetaHandler.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/ConditionOptimizer.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereOptimizer.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereReplacer.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereReplacer.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/helpers.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/helpers.js.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.cjs +14 -19
- package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.js +15 -20
- package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilderFactory.cjs.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
- package/dist/production/src/mapper/update/Updater.cjs +45 -17
- package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/production/src/mapper/update/Updater.js +47 -19
- package/dist/production/src/mapper/update/Updater.js.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +84 -0
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +84 -0
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +88 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +88 -0
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +87 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +87 -0
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs +147 -0
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js +147 -0
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +183 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +183 -0
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
- package/dist/production/src/resolvers/GraphQlQueryAstFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.cjs +8 -4
- package/dist/production/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.js +8 -4
- package/dist/production/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/ReadHelpers.cjs.map +1 -1
- package/dist/production/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/production/src/resolvers/ReadResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/production/src/resolvers/ValidationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/ValidationResolver.js.map +1 -1
- package/dist/production/src/schema/ColumnTypeResolver.cjs.map +1 -1
- package/dist/production/src/schema/ColumnTypeResolver.js.map +1 -1
- package/dist/production/src/schema/ConditionTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/ConditionTypeProvider.js.map +1 -1
- package/dist/production/src/schema/CustomTypesProvider.cjs.map +1 -1
- package/dist/production/src/schema/CustomTypesProvider.js.map +1 -1
- package/dist/production/src/schema/EntityTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/EntityTypeProvider.js.map +1 -1
- package/dist/production/src/schema/EnumsProvider.cjs.map +1 -1
- package/dist/production/src/schema/EnumsProvider.js.map +1 -1
- package/dist/production/src/schema/FieldAccessVisitor.cjs.map +1 -1
- package/dist/production/src/schema/FieldAccessVisitor.js.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
- package/dist/production/src/schema/MutationProvider.cjs.map +1 -1
- package/dist/production/src/schema/MutationProvider.js.map +1 -1
- package/dist/production/src/schema/OperationExtension.cjs.map +1 -1
- package/dist/production/src/schema/OperationExtension.js.map +1 -1
- package/dist/production/src/schema/OrderByTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/production/src/schema/PaginatedFieldConfigFactory.cjs.map +1 -1
- package/dist/production/src/schema/PaginatedFieldConfigFactory.js.map +1 -1
- package/dist/production/src/schema/QueryProvider.cjs.map +1 -1
- package/dist/production/src/schema/QueryProvider.js.map +1 -1
- package/dist/production/src/schema/ResultSchemaTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/ResultSchemaTypeProvider.js.map +1 -1
- package/dist/production/src/schema/ValidationQueriesProvider.cjs.map +1 -1
- package/dist/production/src/schema/ValidationQueriesProvider.js.map +1 -1
- package/dist/production/src/schema/WhereTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/WhereTypeProvider.js.map +1 -1
- package/dist/production/src/schema/entities/FieldArgsVisitor.cjs.map +1 -1
- package/dist/production/src/schema/entities/FieldArgsVisitor.js.map +1 -1
- package/dist/production/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
- package/dist/production/src/schema/entities/FieldTypeVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/ConnectOrCreateRelationInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
- package/dist/production/src/schema/mutations/EntityInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/EntityInputProvider.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs +2 -0
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +2 -0
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
- package/dist/production/src/schema/utils.cjs.map +1 -1
- package/dist/production/src/schema/utils.js.map +1 -1
- package/dist/production/src/utils/Mutex.cjs.map +1 -1
- package/dist/production/src/utils/Mutex.js.map +1 -1
- package/dist/production/src/utils/ResolveInfoUtils.cjs.map +1 -1
- package/dist/production/src/utils/ResolveInfoUtils.js.map +1 -1
- package/dist/production/src/utils/accessor.cjs.map +1 -1
- package/dist/production/src/utils/accessor.js.map +1 -1
- package/dist/production/src/utils/isIt.cjs.map +1 -1
- package/dist/production/src/utils/isIt.js.map +1 -1
- package/dist/production/src/utils/object.cjs.map +1 -1
- package/dist/production/src/utils/object.js.map +1 -1
- package/dist/production/src/utils/paginationUtils.cjs.map +1 -1
- package/dist/production/src/utils/paginationUtils.js.map +1 -1
- package/dist/production/src/utils/singletonFactory.cjs.map +1 -1
- package/dist/production/src/utils/singletonFactory.js.map +1 -1
- package/dist/production/src/utils/uniqueWhereFields.cjs.map +1 -1
- package/dist/production/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connectOrCreate.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connectOrCreate.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.d.ts +2 -2
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.d.ts +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/model.d.ts +4 -4
- package/dist/tests/cases/integration/graphQlSchema/model.d.ts.map +1 -1
- package/dist/tests/src/assert.d.ts +5 -0
- package/dist/tests/src/assert.d.ts.map +1 -0
- package/dist/tests/src/test.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ExecutionContainer.d.ts +8 -5
- package/dist/types/ExecutionContainer.d.ts.map +1 -1
- package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
- package/dist/types/input-validation/ColumnValueResolver.d.ts +1 -1
- package/dist/types/input-validation/ColumnValueResolver.d.ts.map +1 -1
- package/dist/types/input-validation/ValidationDataSelector.d.ts +1 -1
- package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +3 -3
- package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
- package/dist/types/input-validation/preValidation/InputPreValidator.d.ts +3 -3
- package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
- package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +4 -4
- package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputProcessor.d.ts +8 -6
- package/dist/types/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts +11 -10
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputProcessor.d.ts +14 -12
- package/dist/types/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +11 -10
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
- package/dist/types/introspection/IntrospectionSchemaDefinitionFactory.d.ts +1 -3
- package/dist/types/introspection/IntrospectionSchemaDefinitionFactory.d.ts.map +1 -1
- package/dist/types/introspection/index.d.ts +2 -1
- package/dist/types/introspection/index.d.ts.map +1 -1
- package/dist/types/introspection/introspection.schema.d.ts +5 -0
- package/dist/types/introspection/introspection.schema.d.ts.map +1 -0
- package/dist/types/mapper/ColumnValue.d.ts +4 -8
- package/dist/types/mapper/ColumnValue.d.ts.map +1 -1
- package/dist/types/mapper/EventManager.d.ts +9 -9
- package/dist/types/mapper/EventManager.d.ts.map +1 -1
- package/dist/types/mapper/Mapper.d.ts +6 -7
- package/dist/types/mapper/Mapper.d.ts.map +1 -1
- package/dist/types/mapper/MutationProcessorHelper.d.ts +2 -2
- package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
- package/dist/types/mapper/Result.d.ts +16 -9
- package/dist/types/mapper/Result.d.ts.map +1 -1
- package/dist/types/mapper/delete/DeleteExecutor.d.ts.map +1 -1
- package/dist/types/mapper/insert/InsertBuilder.d.ts +4 -9
- package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/types/mapper/insert/Inserter.d.ts +3 -3
- package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
- package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts +11 -8
- package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +26 -0
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +25 -0
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +28 -0
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +31 -0
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +26 -0
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
- package/dist/types/mapper/types.d.ts +84 -1
- package/dist/types/mapper/types.d.ts.map +1 -1
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +12 -8
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/UpdateBuilder.d.ts +4 -8
- package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
- package/dist/types/mapper/update/Updater.d.ts +2 -2
- package/dist/types/mapper/update/Updater.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +48 -0
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +42 -0
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +48 -0
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts +38 -0
- package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts +42 -0
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -0
- package/dist/types/resolvers/MutationResolver.d.ts.map +1 -1
- package/dist/types/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/graphql.codegen.yml +2 -2
- package/package.json +14 -18
- package/src/ExecutionContainer.ts +5 -2
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +35 -2
- package/src/input-validation/ColumnValueResolver.ts +1 -1
- package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +2 -2
- package/src/input-validation/preValidation/InputPreValidator.ts +10 -12
- package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +3 -3
- package/src/inputProcessing/CreateInputProcessor.ts +8 -6
- package/src/inputProcessing/CreateInputVisitor.ts +32 -33
- package/src/inputProcessing/UpdateInputProcessor.ts +13 -11
- package/src/inputProcessing/UpdateInputVisitor.ts +44 -40
- package/src/introspection/IntrospectionSchemaDefinitionFactory.ts +2 -194
- package/src/introspection/index.ts +2 -1
- package/src/introspection/introspection.schema.ts +194 -0
- package/src/mapper/ColumnValue.ts +11 -25
- package/src/mapper/ErrorUtils.ts +1 -1
- package/src/mapper/EventManager.ts +9 -13
- package/src/mapper/Mapper.ts +19 -37
- package/src/mapper/MutationProcessorHelper.ts +16 -8
- package/src/mapper/Result.ts +14 -49
- package/src/mapper/delete/DeleteExecutor.ts +4 -8
- package/src/mapper/insert/InsertBuilder.ts +23 -34
- package/src/mapper/insert/Inserter.ts +55 -41
- package/src/mapper/insert/SqlCreateInputProcessor.ts +36 -91
- package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +59 -0
- package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +57 -0
- package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +52 -0
- package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +90 -0
- package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +87 -0
- package/src/mapper/select/handlers/FieldsVisitor.ts +3 -0
- package/src/mapper/types.ts +115 -1
- package/src/mapper/update/SqlUpdateInputProcessor.ts +50 -47
- package/src/mapper/update/UpdateBuilder.ts +25 -31
- package/src/mapper/update/Updater.ts +55 -35
- package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +112 -0
- package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +125 -0
- package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +113 -0
- package/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts +184 -0
- package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +240 -0
- package/src/resolvers/MutationResolver.ts +6 -4
- package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +5 -0
- package/tests/cases/bugs/bug-filter-or.test.ts +1 -1
- package/tests/cases/bugs/bug-update-by-nested-unique.test.ts +1 -1
- package/tests/cases/bugs/bug102.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/acl/setField.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/aclInsert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/basicInsert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.ts +37 -0
- package/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.ts +9 -9
- package/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/relationAcl.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.ts +1 -1
- 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/filter/containsQuery.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.ts +70 -1
- package/tests/cases/integration/graphQlRequests/query/misc/transaction.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/advanced.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/query/view/view.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connectOrCreate.test.ts +100 -0
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.ts +90 -0
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +10 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/update/queryPortal.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/transaction.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/conditions.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/required.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.ts +1 -2
- package/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.ts +1 -1
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +4 -4
- package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +6 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +28 -28
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +6 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -0
- package/tests/cases/integration/graphQlSchema/schema-basic.gql +15 -0
- package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +7 -0
- package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +15 -0
- package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +7 -0
- package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +123 -107
- package/tests/cases/unit/aclVariablesFactory.test.ts +5 -5
- package/tests/cases/unit/conditionOptimizer.test.ts +7 -1
- package/tests/cases/unit/inputPreValidator.test.ts +3 -2
- package/tests/cases/unit/inputValidation.test.ts +7 -6
- package/tests/cases/unit/orderbyHelper.test.ts +3 -2
- package/tests/cases/unit/permissionMerger.test.ts +2 -1
- package/tests/cases/unit/predicatesFactory.test.ts +2 -1
- package/tests/cases/unit/predicatesInjector.test.ts +2 -1
- package/tests/cases/unit/uuidType.test.ts +5 -5
- package/tests/cases/unit/variableInjector.test.ts +2 -1
- package/tests/cases/unit/whereBuilder.test.ts +2 -1
- package/tests/cases/unit/whereOptimizer.test.ts +2 -1
- package/tests/src/assert.ts +10 -0
- package/tests/src/test.ts +4 -1
- package/tests/src/testGraphql.ts +3 -3
- package/dist/development/src/mapper/DataManipulationBuilder.cjs +0 -5
- package/dist/development/src/mapper/DataManipulationBuilder.cjs.map +0 -1
- package/dist/development/src/mapper/DataManipulationBuilder.js +0 -5
- package/dist/development/src/mapper/DataManipulationBuilder.js.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
- package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
- package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
- package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs +0 -131
- package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js +0 -131
- package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
- package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
- package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/DataManipulationBuilder.cjs +0 -5
- package/dist/production/src/mapper/DataManipulationBuilder.cjs.map +0 -1
- package/dist/production/src/mapper/DataManipulationBuilder.js +0 -5
- package/dist/production/src/mapper/DataManipulationBuilder.js.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
- package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
- package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
- package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs +0 -131
- package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js +0 -131
- package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
- package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
- package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
- package/dist/types/mapper/DataManipulationBuilder.d.ts +0 -7
- package/dist/types/mapper/DataManipulationBuilder.d.ts.map +0 -1
- package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts +0 -32
- package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts +0 -32
- package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts +0 -29
- package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts +0 -21
- package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts +0 -32
- package/dist/types/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts +0 -21
- package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +0 -1
- package/dist/types/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts +0 -37
- package/dist/types/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +0 -1
- package/src/mapper/DataManipulationBuilder.ts +0 -12
- package/src/mapper/relations/ManyHasManyInputProcessor.ts +0 -108
- package/src/mapper/relations/ManyHasOneInputProcessor.ts +0 -158
- package/src/mapper/relations/OneHasManyInputProcessor.ts +0 -101
- package/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts +0 -99
- package/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.ts +0 -164
- package/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts +0 -92
- package/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts +0 -253
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationProcessorHelper.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/MutationProcessorHelper.ts"],"sourcesContent":["import { MutationResultList, prependPath } from './Result'\nimport { Model } from '@contember/schema'\n\nexport const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }>(\n\tinnerProcessor: (context: Context) => Promise<MutationResultList>,\n) => {\n\treturn async (context: Context): Promise<MutationResultList> => {\n\t\tconst { relation, index, alias } = context\n\t\tconst path = [{ field: relation.name }, { index, alias }]\n\t\treturn prependPath(path, await
|
|
1
|
+
{"version":3,"file":"MutationProcessorHelper.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/MutationProcessorHelper.ts"],"sourcesContent":["import { MutationResultList, prependPath } from './Result'\nimport { Model } from '@contember/schema'\n\nexport const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }, Args>(\n\tinnerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,\n) => {\n\treturn async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {\n\t\tconst { relation, index, alias } = context\n\t\tconst path = [{ field: relation.name }, { index, alias }]\n\t\tconst innerResult = await innerProcessor(context)\n\t\tif (typeof innerResult === 'function') {\n\t\t\treturn async (it: Args) => prependPath(path, await innerResult(it))\n\t\t}\n\t\treturn prependPath(path, innerResult)\n\t}\n}\n\nexport const hasOneProcessor = <Context extends { relation: Model.AnyRelation }, Args>(\n\tinnerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,\n) => {\n\treturn async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {\n\t\tconst { relation } = context\n\t\tconst path = [{ field: relation.name }]\n\t\tconst innerResult = await innerProcessor(context)\n\t\tif (typeof innerResult === 'function') {\n\t\t\treturn async (it: Args) => prependPath(path, await innerResult(it))\n\t\t}\n\t\treturn prependPath(path, innerResult)\n\t}\n}\n"],"names":["prependPath"],"mappings":";;;AAGa,MAAA,mBAAmB,CAC/B,mBACI;AACJ,SAAO,OAAO,YAAkG;AAC/G,UAAM,EAAE,UAAU,OAAO,MAAU,IAAA;AAC7B,UAAA,OAAO,CAAC,EAAE,OAAO,SAAS,QAAQ,EAAE,OAAO,OAAO;AAClD,UAAA,cAAc,MAAM,eAAe,OAAO;AAC5C,QAAA,OAAO,gBAAgB,YAAY;AACtC,aAAO,OAAO,OAAaA,OAAA,YAAY,MAAM,MAAM,YAAY,EAAE,CAAC;AAAA,IAAA;AAE5D,WAAAA,OAAA,YAAY,MAAM,WAAW;AAAA,EACrC;AACD;AAEa,MAAA,kBAAkB,CAC9B,mBACI;AACJ,SAAO,OAAO,YAAkG;AACzG,UAAA,EAAE,aAAa;AACrB,UAAM,OAAO,CAAC,EAAE,OAAO,SAAS,MAAM;AAChC,UAAA,cAAc,MAAM,eAAe,OAAO;AAC5C,QAAA,OAAO,gBAAgB,YAAY;AACtC,aAAO,OAAO,OAAaA,OAAA,YAAY,MAAM,MAAM,YAAY,EAAE,CAAC;AAAA,IAAA;AAE5D,WAAAA,OAAA,YAAY,MAAM,WAAW;AAAA,EACrC;AACD;;;"}
|
|
@@ -3,14 +3,22 @@ const hasManyProcessor = (innerProcessor) => {
|
|
|
3
3
|
return async (context) => {
|
|
4
4
|
const { relation, index, alias } = context;
|
|
5
5
|
const path = [{ field: relation.name }, { index, alias }];
|
|
6
|
-
|
|
6
|
+
const innerResult = await innerProcessor(context);
|
|
7
|
+
if (typeof innerResult === "function") {
|
|
8
|
+
return async (it) => prependPath(path, await innerResult(it));
|
|
9
|
+
}
|
|
10
|
+
return prependPath(path, innerResult);
|
|
7
11
|
};
|
|
8
12
|
};
|
|
9
13
|
const hasOneProcessor = (innerProcessor) => {
|
|
10
14
|
return async (context) => {
|
|
11
15
|
const { relation } = context;
|
|
12
16
|
const path = [{ field: relation.name }];
|
|
13
|
-
|
|
17
|
+
const innerResult = await innerProcessor(context);
|
|
18
|
+
if (typeof innerResult === "function") {
|
|
19
|
+
return async (it) => prependPath(path, await innerResult(it));
|
|
20
|
+
}
|
|
21
|
+
return prependPath(path, innerResult);
|
|
14
22
|
};
|
|
15
23
|
};
|
|
16
24
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationProcessorHelper.js","sources":["../../../../../packages/engine-content-api/src/mapper/MutationProcessorHelper.ts"],"sourcesContent":["import { MutationResultList, prependPath } from './Result'\nimport { Model } from '@contember/schema'\n\nexport const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }>(\n\tinnerProcessor: (context: Context) => Promise<MutationResultList>,\n) => {\n\treturn async (context: Context): Promise<MutationResultList> => {\n\t\tconst { relation, index, alias } = context\n\t\tconst path = [{ field: relation.name }, { index, alias }]\n\t\treturn prependPath(path, await
|
|
1
|
+
{"version":3,"file":"MutationProcessorHelper.js","sources":["../../../../../packages/engine-content-api/src/mapper/MutationProcessorHelper.ts"],"sourcesContent":["import { MutationResultList, prependPath } from './Result'\nimport { Model } from '@contember/schema'\n\nexport const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }, Args>(\n\tinnerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,\n) => {\n\treturn async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {\n\t\tconst { relation, index, alias } = context\n\t\tconst path = [{ field: relation.name }, { index, alias }]\n\t\tconst innerResult = await innerProcessor(context)\n\t\tif (typeof innerResult === 'function') {\n\t\t\treturn async (it: Args) => prependPath(path, await innerResult(it))\n\t\t}\n\t\treturn prependPath(path, innerResult)\n\t}\n}\n\nexport const hasOneProcessor = <Context extends { relation: Model.AnyRelation }, Args>(\n\tinnerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,\n) => {\n\treturn async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {\n\t\tconst { relation } = context\n\t\tconst path = [{ field: relation.name }]\n\t\tconst innerResult = await innerProcessor(context)\n\t\tif (typeof innerResult === 'function') {\n\t\t\treturn async (it: Args) => prependPath(path, await innerResult(it))\n\t\t}\n\t\treturn prependPath(path, innerResult)\n\t}\n}\n"],"names":[],"mappings":";AAGa,MAAA,mBAAmB,CAC/B,mBACI;AACJ,SAAO,OAAO,YAAkG;AAC/G,UAAM,EAAE,UAAU,OAAO,MAAU,IAAA;AAC7B,UAAA,OAAO,CAAC,EAAE,OAAO,SAAS,QAAQ,EAAE,OAAO,OAAO;AAClD,UAAA,cAAc,MAAM,eAAe,OAAO;AAC5C,QAAA,OAAO,gBAAgB,YAAY;AACtC,aAAO,OAAO,OAAa,YAAY,MAAM,MAAM,YAAY,EAAE,CAAC;AAAA,IAAA;AAE5D,WAAA,YAAY,MAAM,WAAW;AAAA,EACrC;AACD;AAEa,MAAA,kBAAkB,CAC9B,mBACI;AACJ,SAAO,OAAO,YAAkG;AACzG,UAAA,EAAE,aAAa;AACrB,UAAM,OAAO,CAAC,EAAE,OAAO,SAAS,MAAM;AAChC,UAAA,cAAc,MAAM,eAAe,OAAO;AAC5C,QAAA,OAAO,gBAAgB,YAAY;AACtC,aAAO,OAAO,OAAa,YAAY,MAAM,MAAM,YAAY,EAAE,CAAC;AAAA,IAAA;AAE5D,WAAA,YAAY,MAAM,WAAW;AAAA,EACrC;AACD;"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const ErrorUtils = require("./ErrorUtils.cjs");
|
|
4
|
-
const promises = require("../utils/promises.cjs");
|
|
5
|
-
require("@contember/schema-utils");
|
|
6
|
-
const Database = require("@contember/database");
|
|
7
|
-
const logger = require("@contember/logger");
|
|
8
3
|
var __defProp = Object.defineProperty;
|
|
9
4
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
5
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -32,6 +27,7 @@ class MutationUpdateOk {
|
|
|
32
27
|
this.input = input;
|
|
33
28
|
this.values = values;
|
|
34
29
|
this.oldValues = oldValues;
|
|
30
|
+
__publicField(this, "error", false);
|
|
35
31
|
__publicField(
|
|
36
32
|
this,
|
|
37
33
|
"result",
|
|
@@ -54,6 +50,7 @@ class MutationCreateOk {
|
|
|
54
50
|
this.primary = primary;
|
|
55
51
|
this.input = input;
|
|
56
52
|
this.values = values;
|
|
53
|
+
__publicField(this, "error", false);
|
|
57
54
|
__publicField(
|
|
58
55
|
this,
|
|
59
56
|
"result",
|
|
@@ -74,6 +71,7 @@ class MutationDeleteOk {
|
|
|
74
71
|
this.paths = paths;
|
|
75
72
|
this.entity = entity;
|
|
76
73
|
this.primary = primary;
|
|
74
|
+
__publicField(this, "error", false);
|
|
77
75
|
__publicField(
|
|
78
76
|
this,
|
|
79
77
|
"result",
|
|
@@ -96,6 +94,7 @@ class MutationJunctionUpdateOk {
|
|
|
96
94
|
this.relation = relation;
|
|
97
95
|
this.owningUnique = owningUnique;
|
|
98
96
|
this.inverseUnique = inverseUnique;
|
|
97
|
+
__publicField(this, "error", false);
|
|
99
98
|
__publicField(
|
|
100
99
|
this,
|
|
101
100
|
"result",
|
|
@@ -123,6 +122,7 @@ class MutationNothingToDo {
|
|
|
123
122
|
constructor(paths, reason) {
|
|
124
123
|
this.paths = paths;
|
|
125
124
|
this.reason = reason;
|
|
125
|
+
__publicField(this, "error", false);
|
|
126
126
|
__publicField(
|
|
127
127
|
this,
|
|
128
128
|
"result",
|
|
@@ -143,6 +143,7 @@ class MutationInputError {
|
|
|
143
143
|
this.kind = kind;
|
|
144
144
|
this.message = message;
|
|
145
145
|
this.hints = hints;
|
|
146
|
+
__publicField(this, "error", true);
|
|
146
147
|
__publicField(
|
|
147
148
|
this,
|
|
148
149
|
"result",
|
|
@@ -156,6 +157,7 @@ class MutationSqlError {
|
|
|
156
157
|
this.paths = paths;
|
|
157
158
|
this.message = message;
|
|
158
159
|
this.hints = hints;
|
|
160
|
+
__publicField(this, "error", true);
|
|
159
161
|
__publicField(
|
|
160
162
|
this,
|
|
161
163
|
"result",
|
|
@@ -176,6 +178,7 @@ class MutationConstraintViolationError {
|
|
|
176
178
|
this.constraint = constraint;
|
|
177
179
|
this.message = message;
|
|
178
180
|
this.hints = hints;
|
|
181
|
+
__publicField(this, "error", true);
|
|
179
182
|
__publicField(
|
|
180
183
|
this,
|
|
181
184
|
"result",
|
|
@@ -188,6 +191,7 @@ class MutationEntryNotFoundError {
|
|
|
188
191
|
constructor(paths, where) {
|
|
189
192
|
this.paths = paths;
|
|
190
193
|
this.where = where;
|
|
194
|
+
__publicField(this, "error", true);
|
|
191
195
|
__publicField(
|
|
192
196
|
this,
|
|
193
197
|
"result",
|
|
@@ -204,6 +208,7 @@ class MutationNoResultError {
|
|
|
204
208
|
this.paths = paths;
|
|
205
209
|
this.message = message;
|
|
206
210
|
this.hints = hints;
|
|
211
|
+
__publicField(this, "error", true);
|
|
207
212
|
__publicField(
|
|
208
213
|
this,
|
|
209
214
|
"result",
|
|
@@ -217,26 +222,6 @@ const prependPath = (path, results) => results.map((it) => ({
|
|
|
217
222
|
paths: (it.paths.length === 0 ? [[]] : it.paths).map((it2) => [...path, ...it2])
|
|
218
223
|
}));
|
|
219
224
|
const getInsertPrimary = (result) => result[0] && result[0].result === "ok" && result[0].type === "create" ? result[0].primary : void 0;
|
|
220
|
-
const flattenResult = (result) => result.reduce((acc, it) => [...acc, ...it], []).reduce((acc, it) => Array.isArray(it) ? [...acc, ...it] : [...acc, it], []);
|
|
221
|
-
const collectResults = async (schema, schemaDatabaseMetadata, mainPromise, otherPromises) => {
|
|
222
|
-
let index = 0;
|
|
223
|
-
const allPromises = [mainPromise, ...otherPromises].filter((it) => !!it).map(
|
|
224
|
-
(it) => it.catch((e) => [ErrorUtils.convertError(schema, schemaDatabaseMetadata, e)]).then((value) => ({ value, index: index++ }))
|
|
225
|
-
);
|
|
226
|
-
const results = await Promise.allSettled(allPromises);
|
|
227
|
-
const failures = promises.getRejections(results);
|
|
228
|
-
if (failures.length > 0) {
|
|
229
|
-
if (failures.length > 1 && !failures.every((it) => it instanceof Database.SerializationFailureError)) {
|
|
230
|
-
failures.slice(1).map((e) => logger.logger.error(e));
|
|
231
|
-
}
|
|
232
|
-
throw failures[0];
|
|
233
|
-
}
|
|
234
|
-
const values = promises.getFulfilledValues(results);
|
|
235
|
-
const sortedValues = [values[0], ...values.slice(1).sort((a, b) => a.index - b.index)];
|
|
236
|
-
return flattenResult(
|
|
237
|
-
sortedValues.map((it) => it.value).filter((it) => !!it)
|
|
238
|
-
);
|
|
239
|
-
};
|
|
240
225
|
exports.ConstraintType = ConstraintType;
|
|
241
226
|
exports.InputErrorKind = InputErrorKind;
|
|
242
227
|
exports.MutationConstraintViolationError = MutationConstraintViolationError;
|
|
@@ -252,8 +237,6 @@ exports.MutationResultType = MutationResultType;
|
|
|
252
237
|
exports.MutationSqlError = MutationSqlError;
|
|
253
238
|
exports.MutationUpdateOk = MutationUpdateOk;
|
|
254
239
|
exports.NothingToDoReason = NothingToDoReason;
|
|
255
|
-
exports.collectResults = collectResults;
|
|
256
|
-
exports.flattenResult = flattenResult;
|
|
257
240
|
exports.getInsertPrimary = getInsertPrimary;
|
|
258
241
|
exports.prependPath = prependPath;
|
|
259
242
|
//# sourceMappingURL=Result.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { convertError } from './ErrorUtils'\nimport { getFulfilledValues, getRejections } from '../utils'\nimport { DatabaseMetadata, SerializationFailureError } from '@contember/database'\nimport { logger } from '@contember/logger'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: Input.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: Input.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.Where) {\n\t\tthis.message = 'for input ' + JSON.stringify(where)\n\t}\n}\n\n// possibly denied by acl\nexport class MutationNoResultError implements MutationResultInterface {\n\tresult = MutationResultType.noResultError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport const prependPath = (path: Path, results: MutationResultList): MutationResultList =>\n\tresults.map(it => ({\n\t\t...it,\n\t\tpaths: (it.paths.length === 0 ? [[]] : it.paths).map(it => [...path, ...it]),\n\t}))\n\nexport const getInsertPrimary = (result: MutationResultList) =>\n\tresult[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create\n\t\t? result[0].primary\n\t\t: undefined\n\nexport const getUpdatePrimary = (result: MutationResultList) =>\n\tresult[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.update\n\t\t? result[0].primary\n\t\t: undefined\n\nexport const flattenResult = (result: (MutationResultList | MutationResultList[])[]): MutationResultList =>\n\tresult\n\t\t.reduce<(MutationResult | MutationResult[])[]>((acc, it) => [...acc, ...it], [])\n\t\t.reduce<MutationResultList>((acc, it) => (Array.isArray(it) ? [...acc, ...it] : [...acc, it]), [])\n\nexport type ResultListNotFlatten = MutationResultList | MutationResultList[]\n\nexport const collectResults = async (\n\tschema: Model.Schema,\n\tschemaDatabaseMetadata: DatabaseMetadata,\n\tmainPromise: Promise<ResultListNotFlatten | undefined> | undefined,\n\totherPromises: (Promise<ResultListNotFlatten | undefined> | undefined)[],\n): Promise<MutationResultList> => {\n\tlet index = 0\n\tconst allPromises: Promise<{ index: number; value: ResultListNotFlatten }>[] = [mainPromise, ...otherPromises]\n\t\t.filter((it): it is Promise<ResultListNotFlatten> => !!it)\n\t\t.map(it =>\n\t\t\tit //\n\t\t\t\t.catch(e => [convertError(schema, schemaDatabaseMetadata, e)])\n\t\t\t\t.then(value => ({ value, index: index++ })),\n\t\t)\n\tconst results = await Promise.allSettled(allPromises)\n\tconst failures = getRejections(results)\n\tif (failures.length > 0) {\n\t\tif (failures.length > 1 && !failures.every(it => it instanceof SerializationFailureError)) {\n\t\t\tfailures.slice(1).map(e => logger.error(e))\n\t\t}\n\t\tthrow failures[0]\n\t}\n\n\tconst values = getFulfilledValues(results)\n\tconst sortedValues = [values[0], ...values.slice(1).sort((a, b) => a.index - b.index)]\n\n\treturn flattenResult(\n\t\tsortedValues.map(it => it.value).filter((it): it is MutationResultList | MutationResultList[] => !!it),\n\t)\n}\n"],"names":["MutationResultType","MutationResultHint","NothingToDoReason","InputErrorKind","ConstraintType","it","convertError","getRejections","SerializationFailureError","logger","getFulfilledValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Result.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { MapperInput } from './types'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\terror: boolean\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.Where) {\n\t\tthis.message = 'for input ' + JSON.stringify(where)\n\t}\n}\n\n// possibly denied by acl\nexport class MutationNoResultError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.noResultError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport const prependPath = (path: Path, results: MutationResultList): MutationResultList =>\n\tresults.map(it => ({\n\t\t...it,\n\t\tpaths: (it.paths.length === 0 ? [[]] : it.paths).map(it => [...path, ...it]),\n\t}))\n\nexport const getInsertPrimary = (result: MutationResultList) =>\n\tresult[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create\n\t\t? result[0].primary\n\t\t: undefined\n"],"names":["MutationResultType","MutationResultHint","NothingToDoReason","InputErrorKind","ConstraintType","it"],"mappings":"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"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import { convertError } from "./ErrorUtils.js";
|
|
2
|
-
import { getRejections, getFulfilledValues } from "../utils/promises.js";
|
|
3
|
-
import "@contember/schema-utils";
|
|
4
|
-
import { SerializationFailureError } from "@contember/database";
|
|
5
|
-
import { logger } from "@contember/logger";
|
|
6
1
|
var __defProp = Object.defineProperty;
|
|
7
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
@@ -30,6 +25,7 @@ class MutationUpdateOk {
|
|
|
30
25
|
this.input = input;
|
|
31
26
|
this.values = values;
|
|
32
27
|
this.oldValues = oldValues;
|
|
28
|
+
__publicField(this, "error", false);
|
|
33
29
|
__publicField(
|
|
34
30
|
this,
|
|
35
31
|
"result",
|
|
@@ -52,6 +48,7 @@ class MutationCreateOk {
|
|
|
52
48
|
this.primary = primary;
|
|
53
49
|
this.input = input;
|
|
54
50
|
this.values = values;
|
|
51
|
+
__publicField(this, "error", false);
|
|
55
52
|
__publicField(
|
|
56
53
|
this,
|
|
57
54
|
"result",
|
|
@@ -72,6 +69,7 @@ class MutationDeleteOk {
|
|
|
72
69
|
this.paths = paths;
|
|
73
70
|
this.entity = entity;
|
|
74
71
|
this.primary = primary;
|
|
72
|
+
__publicField(this, "error", false);
|
|
75
73
|
__publicField(
|
|
76
74
|
this,
|
|
77
75
|
"result",
|
|
@@ -94,6 +92,7 @@ class MutationJunctionUpdateOk {
|
|
|
94
92
|
this.relation = relation;
|
|
95
93
|
this.owningUnique = owningUnique;
|
|
96
94
|
this.inverseUnique = inverseUnique;
|
|
95
|
+
__publicField(this, "error", false);
|
|
97
96
|
__publicField(
|
|
98
97
|
this,
|
|
99
98
|
"result",
|
|
@@ -121,6 +120,7 @@ class MutationNothingToDo {
|
|
|
121
120
|
constructor(paths, reason) {
|
|
122
121
|
this.paths = paths;
|
|
123
122
|
this.reason = reason;
|
|
123
|
+
__publicField(this, "error", false);
|
|
124
124
|
__publicField(
|
|
125
125
|
this,
|
|
126
126
|
"result",
|
|
@@ -141,6 +141,7 @@ class MutationInputError {
|
|
|
141
141
|
this.kind = kind;
|
|
142
142
|
this.message = message;
|
|
143
143
|
this.hints = hints;
|
|
144
|
+
__publicField(this, "error", true);
|
|
144
145
|
__publicField(
|
|
145
146
|
this,
|
|
146
147
|
"result",
|
|
@@ -154,6 +155,7 @@ class MutationSqlError {
|
|
|
154
155
|
this.paths = paths;
|
|
155
156
|
this.message = message;
|
|
156
157
|
this.hints = hints;
|
|
158
|
+
__publicField(this, "error", true);
|
|
157
159
|
__publicField(
|
|
158
160
|
this,
|
|
159
161
|
"result",
|
|
@@ -174,6 +176,7 @@ class MutationConstraintViolationError {
|
|
|
174
176
|
this.constraint = constraint;
|
|
175
177
|
this.message = message;
|
|
176
178
|
this.hints = hints;
|
|
179
|
+
__publicField(this, "error", true);
|
|
177
180
|
__publicField(
|
|
178
181
|
this,
|
|
179
182
|
"result",
|
|
@@ -186,6 +189,7 @@ class MutationEntryNotFoundError {
|
|
|
186
189
|
constructor(paths, where) {
|
|
187
190
|
this.paths = paths;
|
|
188
191
|
this.where = where;
|
|
192
|
+
__publicField(this, "error", true);
|
|
189
193
|
__publicField(
|
|
190
194
|
this,
|
|
191
195
|
"result",
|
|
@@ -202,6 +206,7 @@ class MutationNoResultError {
|
|
|
202
206
|
this.paths = paths;
|
|
203
207
|
this.message = message;
|
|
204
208
|
this.hints = hints;
|
|
209
|
+
__publicField(this, "error", true);
|
|
205
210
|
__publicField(
|
|
206
211
|
this,
|
|
207
212
|
"result",
|
|
@@ -215,26 +220,6 @@ const prependPath = (path, results) => results.map((it) => ({
|
|
|
215
220
|
paths: (it.paths.length === 0 ? [[]] : it.paths).map((it2) => [...path, ...it2])
|
|
216
221
|
}));
|
|
217
222
|
const getInsertPrimary = (result) => result[0] && result[0].result === "ok" && result[0].type === "create" ? result[0].primary : void 0;
|
|
218
|
-
const flattenResult = (result) => result.reduce((acc, it) => [...acc, ...it], []).reduce((acc, it) => Array.isArray(it) ? [...acc, ...it] : [...acc, it], []);
|
|
219
|
-
const collectResults = async (schema, schemaDatabaseMetadata, mainPromise, otherPromises) => {
|
|
220
|
-
let index = 0;
|
|
221
|
-
const allPromises = [mainPromise, ...otherPromises].filter((it) => !!it).map(
|
|
222
|
-
(it) => it.catch((e) => [convertError(schema, schemaDatabaseMetadata, e)]).then((value) => ({ value, index: index++ }))
|
|
223
|
-
);
|
|
224
|
-
const results = await Promise.allSettled(allPromises);
|
|
225
|
-
const failures = getRejections(results);
|
|
226
|
-
if (failures.length > 0) {
|
|
227
|
-
if (failures.length > 1 && !failures.every((it) => it instanceof SerializationFailureError)) {
|
|
228
|
-
failures.slice(1).map((e) => logger.error(e));
|
|
229
|
-
}
|
|
230
|
-
throw failures[0];
|
|
231
|
-
}
|
|
232
|
-
const values = getFulfilledValues(results);
|
|
233
|
-
const sortedValues = [values[0], ...values.slice(1).sort((a, b) => a.index - b.index)];
|
|
234
|
-
return flattenResult(
|
|
235
|
-
sortedValues.map((it) => it.value).filter((it) => !!it)
|
|
236
|
-
);
|
|
237
|
-
};
|
|
238
223
|
export {
|
|
239
224
|
ConstraintType,
|
|
240
225
|
InputErrorKind,
|
|
@@ -251,8 +236,6 @@ export {
|
|
|
251
236
|
MutationSqlError,
|
|
252
237
|
MutationUpdateOk,
|
|
253
238
|
NothingToDoReason,
|
|
254
|
-
collectResults,
|
|
255
|
-
flattenResult,
|
|
256
239
|
getInsertPrimary,
|
|
257
240
|
prependPath
|
|
258
241
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.js","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { convertError } from './ErrorUtils'\nimport { getFulfilledValues, getRejections } from '../utils'\nimport { DatabaseMetadata, SerializationFailureError } from '@contember/database'\nimport { logger } from '@contember/logger'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: Input.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: Input.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.Where) {\n\t\tthis.message = 'for input ' + JSON.stringify(where)\n\t}\n}\n\n// possibly denied by acl\nexport class MutationNoResultError implements MutationResultInterface {\n\tresult = MutationResultType.noResultError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport const prependPath = (path: Path, results: MutationResultList): MutationResultList =>\n\tresults.map(it => ({\n\t\t...it,\n\t\tpaths: (it.paths.length === 0 ? [[]] : it.paths).map(it => [...path, ...it]),\n\t}))\n\nexport const getInsertPrimary = (result: MutationResultList) =>\n\tresult[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create\n\t\t? result[0].primary\n\t\t: undefined\n\nexport const getUpdatePrimary = (result: MutationResultList) =>\n\tresult[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.update\n\t\t? result[0].primary\n\t\t: undefined\n\nexport const flattenResult = (result: (MutationResultList | MutationResultList[])[]): MutationResultList =>\n\tresult\n\t\t.reduce<(MutationResult | MutationResult[])[]>((acc, it) => [...acc, ...it], [])\n\t\t.reduce<MutationResultList>((acc, it) => (Array.isArray(it) ? [...acc, ...it] : [...acc, it]), [])\n\nexport type ResultListNotFlatten = MutationResultList | MutationResultList[]\n\nexport const collectResults = async (\n\tschema: Model.Schema,\n\tschemaDatabaseMetadata: DatabaseMetadata,\n\tmainPromise: Promise<ResultListNotFlatten | undefined> | undefined,\n\totherPromises: (Promise<ResultListNotFlatten | undefined> | undefined)[],\n): Promise<MutationResultList> => {\n\tlet index = 0\n\tconst allPromises: Promise<{ index: number; value: ResultListNotFlatten }>[] = [mainPromise, ...otherPromises]\n\t\t.filter((it): it is Promise<ResultListNotFlatten> => !!it)\n\t\t.map(it =>\n\t\t\tit //\n\t\t\t\t.catch(e => [convertError(schema, schemaDatabaseMetadata, e)])\n\t\t\t\t.then(value => ({ value, index: index++ })),\n\t\t)\n\tconst results = await Promise.allSettled(allPromises)\n\tconst failures = getRejections(results)\n\tif (failures.length > 0) {\n\t\tif (failures.length > 1 && !failures.every(it => it instanceof SerializationFailureError)) {\n\t\t\tfailures.slice(1).map(e => logger.error(e))\n\t\t}\n\t\tthrow failures[0]\n\t}\n\n\tconst values = getFulfilledValues(results)\n\tconst sortedValues = [values[0], ...values.slice(1).sort((a, b) => a.index - b.index)]\n\n\treturn flattenResult(\n\t\tsortedValues.map(it => it.value).filter((it): it is MutationResultList | MutationResultList[] => !!it),\n\t)\n}\n"],"names":["MutationResultType","MutationResultHint","NothingToDoReason","InputErrorKind","ConstraintType","it"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Result.js","sources":["../../../../../packages/engine-content-api/src/mapper/Result.ts"],"sourcesContent":["import { Input, Model, Value } from '@contember/schema'\nimport { MapperInput } from './types'\n\nexport enum MutationResultType {\n\tok = 'ok',\n\tnothingToDo = 'nothingToDo',\n\tnotFoundError = 'notFoundError',\n\tconstraintViolationError = 'constraintViolationError',\n\tnoResultError = 'noResultError',\n\tvalidationError = 'validationError',\n\tinputError = 'inputError',\n\tsqlError = 'sqlError',\n}\n\nexport enum MutationResultHint {\n\tsqlError = 'sqlError',\n\tsubSequentSqlError = 'subsequentSqlError',\n}\n\nexport enum ModificationType {\n\tcreate = 'create',\n\tupdate = 'update',\n\tdelete = 'delete',\n\tjunctionUpdate = 'junctionUpdate',\n}\n\nexport type MutationResult =\n\t| MutationUpdateOk\n\t| MutationCreateOk\n\t| MutationDeleteOk\n\t| MutationJunctionUpdateOk\n\t| MutationEntryNotFoundError\n\t| MutationNothingToDo\n\t| MutationConstraintViolationError\n\t| MutationNoResultError\n\t| MutationInputError\n\t| MutationSqlError\n\nexport type MutationResultList = MutationResult[]\n\ntype Path = ({ field: string } | { index: number; alias?: string })[]\n\ninterface MutationResultInterface {\n\terror: boolean\n\tresult: MutationResultType\n\tpaths: Path[]\n\tmessage?: string\n\thints: MutationResultHint[]\n}\n\nexport type RowValues = { [fieldName: string]: Value.FieldValue }\n\nexport class MutationUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.update as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.UpdateDataInput,\n\t\tpublic readonly values: RowValues,\n\t\tpublic readonly oldValues?: RowValues,\n\t) {}\n}\n\nexport class MutationCreateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.create as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t\tpublic readonly input: MapperInput.CreateDataInput,\n\t\tpublic readonly values: RowValues,\n\t) {}\n}\n\nexport class MutationDeleteOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.delete as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly primary: Value.PrimaryValue,\n\t) {}\n}\n\nexport class MutationJunctionUpdateOk implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.ok as const\n\ttype = ModificationType.junctionUpdate as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly entity: Model.Entity,\n\t\tpublic readonly relation: Model.ManyHasManyOwningRelation,\n\t\tpublic readonly owningUnique: Input.PrimaryValue,\n\t\tpublic readonly inverseUnique: Input.PrimaryValue,\n\t) {}\n}\n\nexport enum NothingToDoReason {\n\tnoData = 'noData',\n\temptyRelation = 'emptyRelation',\n\talreadyExists = 'alreadyExists',\n\taborted = 'aborted',\n\talreadyDeleted = 'alreadyDeleted',\n}\n\nexport class MutationNothingToDo implements MutationResultInterface {\n\terror = false\n\tresult = MutationResultType.nothingToDo as const\n\thints: MutationResultHint[] = []\n\n\tconstructor(public readonly paths: Path[], public readonly reason: NothingToDoReason) {}\n}\n\nexport enum InputErrorKind {\n\tnonUniqueWhere = 'nonUniqueWhere',\n\tinvalidData = 'invalidData',\n}\n\nexport class MutationInputError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.inputError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly kind: InputErrorKind,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport class MutationSqlError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.sqlError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport enum ConstraintType {\n\tnotNull = 'notNull',\n\tuniqueKey = 'uniqueKey',\n\tforeignKey = 'foreignKey',\n}\n\nexport class MutationConstraintViolationError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.constraintViolationError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly constraint: ConstraintType,\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\n// maybe denied by acl\nexport class MutationEntryNotFoundError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.notFoundError as const\n\thints: MutationResultHint[] = []\n\tmessage: string\n\n\tconstructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.Where) {\n\t\tthis.message = 'for input ' + JSON.stringify(where)\n\t}\n}\n\n// possibly denied by acl\nexport class MutationNoResultError implements MutationResultInterface {\n\terror = true\n\tresult = MutationResultType.noResultError as const\n\n\tconstructor(\n\t\tpublic readonly paths: Path[],\n\t\tpublic readonly message?: string,\n\t\tpublic readonly hints: MutationResultHint[] = [],\n\t) {}\n}\n\nexport const prependPath = (path: Path, results: MutationResultList): MutationResultList =>\n\tresults.map(it => ({\n\t\t...it,\n\t\tpaths: (it.paths.length === 0 ? [[]] : it.paths).map(it => [...path, ...it]),\n\t}))\n\nexport const getInsertPrimary = (result: MutationResultList) =>\n\tresult[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create\n\t\t? result[0].primary\n\t\t: undefined\n"],"names":["MutationResultType","MutationResultHint","NothingToDoReason","InputErrorKind","ConstraintType","it"],"mappings":"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"}
|
|
@@ -19,10 +19,8 @@ class DeleteExecutor {
|
|
|
19
19
|
}
|
|
20
20
|
async execute(mapper, entity, by, filter) {
|
|
21
21
|
return mapper.mutex.execute(async () => {
|
|
22
|
-
const primaryValue = await mapper.getPrimaryValue(entity, by);
|
|
23
|
-
if (
|
|
24
|
-
return [new Result.MutationEntryNotFoundError([], by)];
|
|
25
|
-
}
|
|
22
|
+
const [primaryValue, err] = await mapper.getPrimaryValue(entity, by);
|
|
23
|
+
if (err) return [err];
|
|
26
24
|
if (mapper.deletedEntities.isDeleted(entity.name, primaryValue)) {
|
|
27
25
|
return [new Result.MutationNothingToDo([], Result.NothingToDoReason.alreadyDeleted)];
|
|
28
26
|
}
|
|
@@ -45,8 +43,7 @@ class DeleteExecutor {
|
|
|
45
43
|
columnName: Object.keys(entry.values)[0],
|
|
46
44
|
fieldName: Object.keys(entry.input)[0],
|
|
47
45
|
columnType: "text",
|
|
48
|
-
|
|
49
|
-
value: Promise.resolve(null)
|
|
46
|
+
value: null
|
|
50
47
|
}], entry.primary);
|
|
51
48
|
entryToEventMap.set(entry, beforeUpdateEvent);
|
|
52
49
|
await mapper.eventManager.fire(beforeUpdateEvent);
|
|
@@ -63,8 +60,7 @@ class DeleteExecutor {
|
|
|
63
60
|
columnName: Object.keys(entry.values)[0],
|
|
64
61
|
fieldName: Object.keys(entry.input)[0],
|
|
65
62
|
columnType: "text",
|
|
66
|
-
|
|
67
|
-
value: Promise.resolve(null),
|
|
63
|
+
value: null,
|
|
68
64
|
old: Object.values(entry.oldValues ?? {})[0]
|
|
69
65
|
}];
|
|
70
66
|
const afterEvent = new EventManager.AfterUpdateEvent(entry.entity, data, entry.primary);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteExecutor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/delete/DeleteExecutor.ts"],"sourcesContent":["import { Acl, Input, Model } from '@contember/schema'\nimport { assertNever } from '../../utils'\nimport { Client, DeleteBuilder, Literal, SelectBuilder } from '@contember/database'\nimport { PathFactory, WhereBuilder } from '../select'\nimport { PredicateFactory } from '../../acl'\nimport { UpdateBuilderFactory } from '../update'\nimport {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationDeleteOk,\n\tMutationEntryNotFoundError,\n\tMutationNoResultError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationUpdateOk,\n\tNothingToDoReason,\n} from '../Result'\nimport { Mapper } from '../Mapper'\nimport { CheckedPrimary } from '../CheckedPrimary'\nimport { DeleteState } from './DeleteState'\nimport {\n\tEntityReferenceRow,\n\tfindOwningRelations,\n\tfindRelationsWithOrphanRemoval,\n\tformatConstraintViolationMessage,\n\tOneHasOneOwningRelationTuple,\n} from './helpers'\nimport { getEntity } from '@contember/schema-utils'\nimport { AfterUpdateEvent, BeforeDeleteEvent, BeforeUpdateEvent, EventManager } from '../EventManager'\nimport { ImplementationException } from '../../exception'\n\ntype DeleteQueue = [entity: Model.Entity, ids: Input.PrimaryValue[]][]\n\ntype DeleteInfoRow = { allowed: boolean; id: Input.PrimaryValue } & { [K in `_${string}`]: Input.PrimaryValue }\n\nexport class DeleteExecutor {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly predicateFactory: PredicateFactory,\n\t\tprivate readonly whereBuilder: WhereBuilder,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t\tprivate readonly pathFactory: PathFactory,\n\t) {\n\t}\n\n\tpublic async execute(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tby: Input.UniqueWhere | CheckedPrimary,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\treturn mapper.mutex.execute(async () => {\n\t\t\tconst primaryValue = await mapper.getPrimaryValue(entity, by)\n\t\t\tif (!primaryValue) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], by as Input.UniqueWhere)]\n\t\t\t}\n\n\t\t\tif (mapper.deletedEntities.isDeleted(entity.name, primaryValue)) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyDeleted)]\n\t\t\t}\n\n\t\t\tconst primaryWhere = { [entity.primary]: { eq: primaryValue } }\n\t\t\tconst where = filter ? { and: [primaryWhere, filter] } : primaryWhere\n\t\t\tconst state = new DeleteState(mapper.deletedEntities)\n\t\t\tconst deletePrimary = await this.collectDeleteInfo(state, mapper, entity, where)\n\n\t\t\tconst deleteQueue: DeleteQueue = [[entity, deletePrimary]]\n\t\t\tawait this.collectOrphanRemovals(state, mapper, deleteQueue)\n\t\t\tif (!state.isOk()) {\n\t\t\t\treturn state.getResult()\n\t\t\t}\n\t\t\tconst result = state.getResult()\n\t\t\tconst entryToEventMap = new Map<MutationUpdateOk, BeforeUpdateEvent>()\n\t\t\tfor (const entry of result) {\n\t\t\t\tif (entry instanceof MutationDeleteOk) {\n\t\t\t\t\tawait mapper.eventManager.fire(new BeforeDeleteEvent(entry.entity, entry.primary))\n\t\t\t\t} else if (entry instanceof MutationUpdateOk) {\n\t\t\t\t\tconst beforeUpdateEvent = new BeforeUpdateEvent(entry.entity, [{\n\t\t\t\t\t\tcolumnName: Object.keys(entry.values)[0],\n\t\t\t\t\t\tfieldName: Object.keys(entry.input)[0],\n\t\t\t\t\t\tcolumnType: 'text',\n\t\t\t\t\t\tresolvedValue: null,\n\t\t\t\t\t\tvalue: Promise.resolve(null),\n\t\t\t\t\t}], entry.primary)\n\t\t\t\t\tentryToEventMap.set(entry, beforeUpdateEvent)\n\t\t\t\t\tawait mapper.eventManager.fire(beforeUpdateEvent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.executeDeletes(deleteQueue, mapper.db)\n\n\t\t\tfor (const entry of result) {\n\t\t\t\tif (entry instanceof MutationUpdateOk) {\n\t\t\t\t\tconst beforeEvent = entryToEventMap.get(entry)\n\t\t\t\t\tif (!beforeEvent) {\n\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\tconst data = [{\n\t\t\t\t\t\tcolumnName: Object.keys(entry.values)[0],\n\t\t\t\t\t\tfieldName: Object.keys(entry.input)[0],\n\t\t\t\t\t\tcolumnType: 'text',\n\t\t\t\t\t\tresolvedValue: null,\n\t\t\t\t\t\tvalue: Promise.resolve(null),\n\t\t\t\t\t\told: Object.values(entry.oldValues ?? {})[0],\n\t\t\t\t\t}]\n\t\t\t\t\tconst afterEvent = new AfterUpdateEvent(entry.entity, data, entry.primary)\n\t\t\t\t\tbeforeEvent.afterEvent = afterEvent\n\t\t\t\t\tawait mapper.eventManager.fire(afterEvent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.confirmDeleted()\n\n\t\t\treturn state.getResult()\n\t\t})\n\t}\n\n\tprivate async executeDeletes(deleteQueue: DeleteQueue, db: Client): Promise<void> {\n\t\tfor (const [entity, ids] of deleteQueue) {\n\t\t\tif (ids.length === 0) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tawait DeleteBuilder.create()\n\t\t\t\t.from(entity.tableName)\n\t\t\t\t.where(expr => expr.in(entity.primaryColumn, ids))\n\t\t\t\t.execute(db)\n\t\t}\n\t}\n\n\tprivate async collectDeleteInfo(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.OptionalWhere,\n\t): Promise<Input.PrimaryValue[]> {\n\t\tconst predicate = this.predicateFactory.createDeletePredicate(entity)\n\t\tconst orphanRemovals = findRelationsWithOrphanRemoval(this.schema, entity)\n\n\t\tconst qb = SelectBuilder.create<DeleteInfoRow>()\n\t\t\t.from(entity.tableName, 'root_')\n\t\t\t.select(['root_', entity.primaryColumn], 'id')\n\n\t\tconst qbWithOrphanColumns = this.qbOrphanColumns(qb, orphanRemovals)\n\t\tconst qbWithAllowedFlag = this.qbWithAllowed(entity, predicate, qbWithOrphanColumns)\n\t\tconst qbWithWhere = this.whereBuilder.build(qbWithAllowedFlag, entity, this.pathFactory.create([]), where)\n\n\t\tconst fullResult = await qbWithWhere.getResult(mapper.db)\n\n\t\tif (fullResult.length === 0) {\n\t\t\tstate.pushFailResult(new MutationNoResultError([]))\n\t\t\treturn []\n\t\t}\n\n\t\tconst result = this.filterPlannedForDelete(state, entity, fullResult)\n\n\t\tconst disallowed: Input.PrimaryValue[] = result.filter(it => !it.allowed).map(it => it.id)\n\t\tif (disallowed.length) {\n\t\t\tstate.pushFailResult(new MutationEntryNotFoundError([], { [entity.primary]: { in: disallowed } }))\n\t\t\treturn []\n\t\t}\n\n\t\treturn await this.processDeleteResult(state, mapper, entity, result, orphanRemovals)\n\t}\n\n\n\tprivate async collectOnDeleteInfo(state: DeleteState, mapper: Mapper, entity: Model.Entity, values: Input.PrimaryValue[]): Promise<void> {\n\t\tif (values.length === 0) {\n\t\t\treturn\n\t\t}\n\t\tconst owningRelations = findOwningRelations(this.schema, entity)\n\t\tfor (const [owningEntity, relation] of owningRelations) {\n\t\t\tif (owningEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t\tawait this.collectRestrictResult(state, mapper, owningEntity, relation, values)\n\t\t\t} else if (relation.joiningColumn.onDelete === Model.OnDelete.cascade) {\n\t\t\t\tawait this.collectCascadeResult(state, mapper, owningEntity, relation, values)\n\t\t\t} else if (relation.joiningColumn.onDelete === Model.OnDelete.setNull) {\n\t\t\t\tawait this.collectSetNullResult(state, mapper, owningEntity, relation, values)\n\t\t\t} else {\n\t\t\t\tassertNever(relation.joiningColumn.onDelete)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async collectCascadeResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\trelation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation,\n\t\tvalues: Input.PrimaryValue[],\n\t): Promise<void> {\n\t\tconst predicate = this.predicateFactory.createDeletePredicate(entity)\n\t\tconst orphanRemovals = findRelationsWithOrphanRemoval(this.schema, entity)\n\n\t\tconst qb = this.createFetchByIdQueryBuilder(entity, relation, values)\n\t\tconst qbWithOrphanColumns = this.qbOrphanColumns(qb, orphanRemovals)\n\t\tconst qbWithAllowed = this.qbWithAllowed(entity, predicate, qbWithOrphanColumns)\n\n\t\tconst result = this.filterPlannedForDelete(state, entity, await qbWithAllowed.getResult(mapper.db))\n\n\t\tconst disallowed = result.filter(it => !it.allowed)\n\n\t\tif (disallowed.length > 0) {\n\t\t\tconst message = formatConstraintViolationMessage(disallowed, entity, relation)\n\t\t\t\t+ ' OnDelete behaviour of this relation is set to \"cascade\". This is possibly caused by ACL denial.'\n\n\t\t\tstate.pushFailResult(new MutationConstraintViolationError([], ConstraintType.foreignKey, message))\n\t\t\treturn\n\t\t}\n\n\t\tawait this.processDeleteResult(state, mapper, entity, result, orphanRemovals)\n\t}\n\n\n\tprivate async collectSetNullResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\trelation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation,\n\t\tvalues: Input.PrimaryValue[],\n\t): Promise<void> {\n\t\tconst predicate = this.predicateFactory.create(entity, Acl.Operation.update, [relation.name])\n\n\t\tconst qb = this.createFetchByIdQueryBuilder(entity, relation, values)\n\t\tconst qbWithAllowed = this.qbWithAllowed(entity, predicate, qb)\n\n\t\tconst result = this.filterPlannedForDelete(state, entity, await qbWithAllowed.getResult(mapper.db))\n\n\t\tconst disallowed = result.filter(it => !it.allowed)\n\n\t\tif (disallowed.length === 0) {\n\t\t\tconst input = { [relation.name]: { disconnect: true } }\n\t\t\tconst values = { [relation.joiningColumn.columnName]: null }\n\n\t\t\tstate.pushOkResult(result.map(it => new MutationUpdateOk([], entity, it.id, input, values, { [relation.joiningColumn.columnName]: it.ref })))\n\t\t\treturn\n\t\t}\n\n\t\tconst message = formatConstraintViolationMessage(disallowed, entity, relation)\n\t\t\t+ ' OnDelete behaviour of this relation is set to \"set null\". This is possibly caused by ACL denial.'\n\t\tstate.pushFailResult(new MutationConstraintViolationError([], ConstraintType.foreignKey, message))\n\t}\n\n\n\tprivate async collectRestrictResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\trelation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation,\n\t\tvalues: Input.PrimaryValue[],\n\t): Promise<void> {\n\t\tif (mapper.constraintHelper.areConstraintsDeferred('foreignKey')) {\n\t\t\treturn\n\t\t}\n\t\tconst qb = this.createFetchByIdQueryBuilder(entity, relation, values)\n\t\tconst result = this.filterPlannedForDelete(state, entity, await qb.getResult(mapper.db))\n\n\t\tif (result.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst message = formatConstraintViolationMessage(result, entity, relation)\n\t\t\t+ ' OnDelete behaviour of this relation is set to \"restrict\". You might consider changing it to \"setNull\" or \"cascade\".'\n\n\t\tstate.pushFailResult(new MutationConstraintViolationError([], ConstraintType.foreignKey, message))\n\t}\n\n\tprivate async collectOrphanRemovals(state: DeleteState, mapper: Mapper, deleteQueue: DeleteQueue) {\n\t\tdo {\n\t\t\tif (!state.isOk()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst orphanRemoval = state.fetchOrphanRemovals()\n\t\t\tif (orphanRemoval === null) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tconst entity = getEntity(this.schema, orphanRemoval[0])\n\t\t\tconst orphanResult = await this.collectDeleteInfo(state, mapper, entity, { [entity.primary]: { in: orphanRemoval[1] } })\n\t\t\tdeleteQueue.push([entity, orphanResult])\n\n\t\t} while (true)\n\t}\n\n\tprivate qbWithAllowed<R>(entity: Model.Entity, predicate: Input.OptionalWhere, selectQb: SelectBuilder<R>): SelectBuilder<R & { allowed: boolean }> {\n\t\treturn this.whereBuilder.buildAdvanced<R & { allowed: boolean }>(entity, this.pathFactory.create([]), predicate, cb => {\n\t\t\tconst qb = selectQb.select(expr => expr.selectCondition(cb), 'allowed')\n\t\t\treturn (qb === selectQb ? qb.select(new Literal('true'), 'allowed') : qb) as SelectBuilder<R & { allowed: boolean }>\n\t\t})\n\t}\n\n\tprivate qbOrphanColumns<R>(qb: SelectBuilder<R>, orphanRemovals: OneHasOneOwningRelationTuple[]): SelectBuilder<R> {\n\t\tconst orphanColumns = orphanRemovals.map(([, rel]) => rel.joiningColumn.columnName)\n\t\treturn orphanColumns.reduce((qb, column) => qb.select(['root_', column], `_${column}`), qb)\n\t}\n\n\tprivate createFetchByIdQueryBuilder(entity: Model.Entity, relation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation, values: Input.PrimaryValue[]) {\n\t\treturn SelectBuilder.create<EntityReferenceRow>()\n\t\t\t.from(entity.tableName, 'root_')\n\t\t\t.select(['root_', entity.primaryColumn], 'id')\n\t\t\t.select(['root_', relation.joiningColumn.columnName], 'ref')\n\t\t\t.where(expr => expr.in(relation.joiningColumn.columnName, values))\n\t}\n\n\tprivate filterPlannedForDelete<R extends {id: Input.PrimaryValue}>(state: DeleteState, entity: Model.Entity, values: R[]): R[] {\n\t\treturn values.filter(it => !state.isPlannedDelete(entity.name, it.id))\n\t}\n\n\n\tprivate async processDeleteResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tresult: DeleteInfoRow[],\n\t\torphanRemovals: OneHasOneOwningRelationTuple[],\n\t): Promise<Input.PrimaryValue[]> {\n\t\tconst ids = result.map(it => it.id)\n\t\tstate.markPlannedDelete(entity.name, ids)\n\t\tstate.pushOkResult(ids.map(id => new MutationDeleteOk([], entity, id)))\n\n\t\tawait this.collectOnDeleteInfo(state, mapper, entity, ids)\n\n\t\tfor (const [entity, relation] of orphanRemovals) {\n\t\t\tconst ids = result.map(it => it[`_${relation.joiningColumn.columnName}`]).filter(it => it !== null)\n\t\t\tif (ids.length) {\n\t\t\t\tstate.addOrphanRemoval(entity.name, ids)\n\t\t\t}\n\t\t}\n\t\treturn ids\n\t}\n}\n"],"names":["schema","MutationEntryNotFoundError","MutationNothingToDo","NothingToDoReason","DeleteState","MutationDeleteOk","BeforeDeleteEvent","MutationUpdateOk","BeforeUpdateEvent","ImplementationException","AfterUpdateEvent","DeleteBuilder","findRelationsWithOrphanRemoval","SelectBuilder","MutationNoResultError","findOwningRelations","Model","assertNever","formatConstraintViolationMessage","MutationConstraintViolationError","ConstraintType","Acl","values","getEntity","Literal","qb","entity","ids"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DeleteExecutor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/delete/DeleteExecutor.ts"],"sourcesContent":["import { Acl, Input, Model } from '@contember/schema'\nimport { assertNever } from '../../utils'\nimport { Client, DeleteBuilder, Literal, SelectBuilder } from '@contember/database'\nimport { PathFactory, WhereBuilder } from '../select'\nimport { PredicateFactory } from '../../acl'\nimport { UpdateBuilderFactory } from '../update'\nimport {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationDeleteOk,\n\tMutationEntryNotFoundError,\n\tMutationNoResultError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationUpdateOk,\n\tNothingToDoReason,\n} from '../Result'\nimport { Mapper } from '../Mapper'\nimport { CheckedPrimary } from '../CheckedPrimary'\nimport { DeleteState } from './DeleteState'\nimport {\n\tEntityReferenceRow,\n\tfindOwningRelations,\n\tfindRelationsWithOrphanRemoval,\n\tformatConstraintViolationMessage,\n\tOneHasOneOwningRelationTuple,\n} from './helpers'\nimport { getEntity } from '@contember/schema-utils'\nimport { AfterUpdateEvent, BeforeDeleteEvent, BeforeUpdateEvent, EventManager } from '../EventManager'\nimport { ImplementationException } from '../../exception'\n\ntype DeleteQueue = [entity: Model.Entity, ids: Input.PrimaryValue[]][]\n\ntype DeleteInfoRow = { allowed: boolean; id: Input.PrimaryValue } & { [K in `_${string}`]: Input.PrimaryValue }\n\nexport class DeleteExecutor {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly predicateFactory: PredicateFactory,\n\t\tprivate readonly whereBuilder: WhereBuilder,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t\tprivate readonly pathFactory: PathFactory,\n\t) {\n\t}\n\n\tpublic async execute(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tby: Input.UniqueWhere | CheckedPrimary,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\treturn mapper.mutex.execute(async () => {\n\t\t\tconst [primaryValue, err] = await mapper.getPrimaryValue(entity, by)\n\t\t\tif (err) return [err]\n\n\t\t\tif (mapper.deletedEntities.isDeleted(entity.name, primaryValue)) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyDeleted)]\n\t\t\t}\n\n\t\t\tconst primaryWhere = { [entity.primary]: { eq: primaryValue } }\n\t\t\tconst where = filter ? { and: [primaryWhere, filter] } : primaryWhere\n\t\t\tconst state = new DeleteState(mapper.deletedEntities)\n\t\t\tconst deletePrimary = await this.collectDeleteInfo(state, mapper, entity, where)\n\n\t\t\tconst deleteQueue: DeleteQueue = [[entity, deletePrimary]]\n\t\t\tawait this.collectOrphanRemovals(state, mapper, deleteQueue)\n\t\t\tif (!state.isOk()) {\n\t\t\t\treturn state.getResult()\n\t\t\t}\n\t\t\tconst result = state.getResult()\n\t\t\tconst entryToEventMap = new Map<MutationUpdateOk, BeforeUpdateEvent>()\n\t\t\tfor (const entry of result) {\n\t\t\t\tif (entry instanceof MutationDeleteOk) {\n\t\t\t\t\tawait mapper.eventManager.fire(new BeforeDeleteEvent(entry.entity, entry.primary))\n\t\t\t\t} else if (entry instanceof MutationUpdateOk) {\n\t\t\t\t\tconst beforeUpdateEvent = new BeforeUpdateEvent(entry.entity, [{\n\t\t\t\t\t\tcolumnName: Object.keys(entry.values)[0],\n\t\t\t\t\t\tfieldName: Object.keys(entry.input)[0],\n\t\t\t\t\t\tcolumnType: 'text',\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t}], entry.primary)\n\t\t\t\t\tentryToEventMap.set(entry, beforeUpdateEvent)\n\t\t\t\t\tawait mapper.eventManager.fire(beforeUpdateEvent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.executeDeletes(deleteQueue, mapper.db)\n\n\t\t\tfor (const entry of result) {\n\t\t\t\tif (entry instanceof MutationUpdateOk) {\n\t\t\t\t\tconst beforeEvent = entryToEventMap.get(entry)\n\t\t\t\t\tif (!beforeEvent) {\n\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\tconst data = [{\n\t\t\t\t\t\tcolumnName: Object.keys(entry.values)[0],\n\t\t\t\t\t\tfieldName: Object.keys(entry.input)[0],\n\t\t\t\t\t\tcolumnType: 'text',\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\told: Object.values(entry.oldValues ?? {})[0],\n\t\t\t\t\t}]\n\t\t\t\t\tconst afterEvent = new AfterUpdateEvent(entry.entity, data, entry.primary)\n\t\t\t\t\tbeforeEvent.afterEvent = afterEvent\n\t\t\t\t\tawait mapper.eventManager.fire(afterEvent)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate.confirmDeleted()\n\n\t\t\treturn state.getResult()\n\t\t})\n\t}\n\n\tprivate async executeDeletes(deleteQueue: DeleteQueue, db: Client): Promise<void> {\n\t\tfor (const [entity, ids] of deleteQueue) {\n\t\t\tif (ids.length === 0) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tawait DeleteBuilder.create()\n\t\t\t\t.from(entity.tableName)\n\t\t\t\t.where(expr => expr.in(entity.primaryColumn, ids))\n\t\t\t\t.execute(db)\n\t\t}\n\t}\n\n\tprivate async collectDeleteInfo(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.OptionalWhere,\n\t): Promise<Input.PrimaryValue[]> {\n\t\tconst predicate = this.predicateFactory.createDeletePredicate(entity)\n\t\tconst orphanRemovals = findRelationsWithOrphanRemoval(this.schema, entity)\n\n\t\tconst qb = SelectBuilder.create<DeleteInfoRow>()\n\t\t\t.from(entity.tableName, 'root_')\n\t\t\t.select(['root_', entity.primaryColumn], 'id')\n\n\t\tconst qbWithOrphanColumns = this.qbOrphanColumns(qb, orphanRemovals)\n\t\tconst qbWithAllowedFlag = this.qbWithAllowed(entity, predicate, qbWithOrphanColumns)\n\t\tconst qbWithWhere = this.whereBuilder.build(qbWithAllowedFlag, entity, this.pathFactory.create([]), where)\n\n\t\tconst fullResult = await qbWithWhere.getResult(mapper.db)\n\n\t\tif (fullResult.length === 0) {\n\t\t\tstate.pushFailResult(new MutationNoResultError([]))\n\t\t\treturn []\n\t\t}\n\n\t\tconst result = this.filterPlannedForDelete(state, entity, fullResult)\n\n\t\tconst disallowed: Input.PrimaryValue[] = result.filter(it => !it.allowed).map(it => it.id)\n\t\tif (disallowed.length) {\n\t\t\tstate.pushFailResult(new MutationEntryNotFoundError([], { [entity.primary]: { in: disallowed } }))\n\t\t\treturn []\n\t\t}\n\n\t\treturn await this.processDeleteResult(state, mapper, entity, result, orphanRemovals)\n\t}\n\n\n\tprivate async collectOnDeleteInfo(state: DeleteState, mapper: Mapper, entity: Model.Entity, values: Input.PrimaryValue[]): Promise<void> {\n\t\tif (values.length === 0) {\n\t\t\treturn\n\t\t}\n\t\tconst owningRelations = findOwningRelations(this.schema, entity)\n\t\tfor (const [owningEntity, relation] of owningRelations) {\n\t\t\tif (owningEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t\tawait this.collectRestrictResult(state, mapper, owningEntity, relation, values)\n\t\t\t} else if (relation.joiningColumn.onDelete === Model.OnDelete.cascade) {\n\t\t\t\tawait this.collectCascadeResult(state, mapper, owningEntity, relation, values)\n\t\t\t} else if (relation.joiningColumn.onDelete === Model.OnDelete.setNull) {\n\t\t\t\tawait this.collectSetNullResult(state, mapper, owningEntity, relation, values)\n\t\t\t} else {\n\t\t\t\tassertNever(relation.joiningColumn.onDelete)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async collectCascadeResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\trelation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation,\n\t\tvalues: Input.PrimaryValue[],\n\t): Promise<void> {\n\t\tconst predicate = this.predicateFactory.createDeletePredicate(entity)\n\t\tconst orphanRemovals = findRelationsWithOrphanRemoval(this.schema, entity)\n\n\t\tconst qb = this.createFetchByIdQueryBuilder(entity, relation, values)\n\t\tconst qbWithOrphanColumns = this.qbOrphanColumns(qb, orphanRemovals)\n\t\tconst qbWithAllowed = this.qbWithAllowed(entity, predicate, qbWithOrphanColumns)\n\n\t\tconst result = this.filterPlannedForDelete(state, entity, await qbWithAllowed.getResult(mapper.db))\n\n\t\tconst disallowed = result.filter(it => !it.allowed)\n\n\t\tif (disallowed.length > 0) {\n\t\t\tconst message = formatConstraintViolationMessage(disallowed, entity, relation)\n\t\t\t\t+ ' OnDelete behaviour of this relation is set to \"cascade\". This is possibly caused by ACL denial.'\n\n\t\t\tstate.pushFailResult(new MutationConstraintViolationError([], ConstraintType.foreignKey, message))\n\t\t\treturn\n\t\t}\n\n\t\tawait this.processDeleteResult(state, mapper, entity, result, orphanRemovals)\n\t}\n\n\n\tprivate async collectSetNullResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\trelation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation,\n\t\tvalues: Input.PrimaryValue[],\n\t): Promise<void> {\n\t\tconst predicate = this.predicateFactory.create(entity, Acl.Operation.update, [relation.name])\n\n\t\tconst qb = this.createFetchByIdQueryBuilder(entity, relation, values)\n\t\tconst qbWithAllowed = this.qbWithAllowed(entity, predicate, qb)\n\n\t\tconst result = this.filterPlannedForDelete(state, entity, await qbWithAllowed.getResult(mapper.db))\n\n\t\tconst disallowed = result.filter(it => !it.allowed)\n\n\t\tif (disallowed.length === 0) {\n\t\t\tconst input = { [relation.name]: { disconnect: true } }\n\t\t\tconst values = { [relation.joiningColumn.columnName]: null }\n\n\t\t\tstate.pushOkResult(result.map(it => new MutationUpdateOk([], entity, it.id, input, values, { [relation.joiningColumn.columnName]: it.ref })))\n\t\t\treturn\n\t\t}\n\n\t\tconst message = formatConstraintViolationMessage(disallowed, entity, relation)\n\t\t\t+ ' OnDelete behaviour of this relation is set to \"set null\". This is possibly caused by ACL denial.'\n\t\tstate.pushFailResult(new MutationConstraintViolationError([], ConstraintType.foreignKey, message))\n\t}\n\n\n\tprivate async collectRestrictResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\trelation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation,\n\t\tvalues: Input.PrimaryValue[],\n\t): Promise<void> {\n\t\tif (mapper.constraintHelper.areConstraintsDeferred('foreignKey')) {\n\t\t\treturn\n\t\t}\n\t\tconst qb = this.createFetchByIdQueryBuilder(entity, relation, values)\n\t\tconst result = this.filterPlannedForDelete(state, entity, await qb.getResult(mapper.db))\n\n\t\tif (result.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst message = formatConstraintViolationMessage(result, entity, relation)\n\t\t\t+ ' OnDelete behaviour of this relation is set to \"restrict\". You might consider changing it to \"setNull\" or \"cascade\".'\n\n\t\tstate.pushFailResult(new MutationConstraintViolationError([], ConstraintType.foreignKey, message))\n\t}\n\n\tprivate async collectOrphanRemovals(state: DeleteState, mapper: Mapper, deleteQueue: DeleteQueue) {\n\t\tdo {\n\t\t\tif (!state.isOk()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst orphanRemoval = state.fetchOrphanRemovals()\n\t\t\tif (orphanRemoval === null) {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tconst entity = getEntity(this.schema, orphanRemoval[0])\n\t\t\tconst orphanResult = await this.collectDeleteInfo(state, mapper, entity, { [entity.primary]: { in: orphanRemoval[1] } })\n\t\t\tdeleteQueue.push([entity, orphanResult])\n\n\t\t} while (true)\n\t}\n\n\tprivate qbWithAllowed<R>(entity: Model.Entity, predicate: Input.OptionalWhere, selectQb: SelectBuilder<R>): SelectBuilder<R & { allowed: boolean }> {\n\t\treturn this.whereBuilder.buildAdvanced<R & { allowed: boolean }>(entity, this.pathFactory.create([]), predicate, cb => {\n\t\t\tconst qb = selectQb.select(expr => expr.selectCondition(cb), 'allowed')\n\t\t\treturn (qb === selectQb ? qb.select(new Literal('true'), 'allowed') : qb) as SelectBuilder<R & { allowed: boolean }>\n\t\t})\n\t}\n\n\tprivate qbOrphanColumns<R>(qb: SelectBuilder<R>, orphanRemovals: OneHasOneOwningRelationTuple[]): SelectBuilder<R> {\n\t\tconst orphanColumns = orphanRemovals.map(([, rel]) => rel.joiningColumn.columnName)\n\t\treturn orphanColumns.reduce((qb, column) => qb.select(['root_', column], `_${column}`), qb)\n\t}\n\n\tprivate createFetchByIdQueryBuilder(entity: Model.Entity, relation: Model.ManyHasOneRelation | Model.OneHasOneOwningRelation, values: Input.PrimaryValue[]) {\n\t\treturn SelectBuilder.create<EntityReferenceRow>()\n\t\t\t.from(entity.tableName, 'root_')\n\t\t\t.select(['root_', entity.primaryColumn], 'id')\n\t\t\t.select(['root_', relation.joiningColumn.columnName], 'ref')\n\t\t\t.where(expr => expr.in(relation.joiningColumn.columnName, values))\n\t}\n\n\tprivate filterPlannedForDelete<R extends {id: Input.PrimaryValue}>(state: DeleteState, entity: Model.Entity, values: R[]): R[] {\n\t\treturn values.filter(it => !state.isPlannedDelete(entity.name, it.id))\n\t}\n\n\n\tprivate async processDeleteResult(\n\t\tstate: DeleteState,\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tresult: DeleteInfoRow[],\n\t\torphanRemovals: OneHasOneOwningRelationTuple[],\n\t): Promise<Input.PrimaryValue[]> {\n\t\tconst ids = result.map(it => it.id)\n\t\tstate.markPlannedDelete(entity.name, ids)\n\t\tstate.pushOkResult(ids.map(id => new MutationDeleteOk([], entity, id)))\n\n\t\tawait this.collectOnDeleteInfo(state, mapper, entity, ids)\n\n\t\tfor (const [entity, relation] of orphanRemovals) {\n\t\t\tconst ids = result.map(it => it[`_${relation.joiningColumn.columnName}`]).filter(it => it !== null)\n\t\t\tif (ids.length) {\n\t\t\t\tstate.addOrphanRemoval(entity.name, ids)\n\t\t\t}\n\t\t}\n\t\treturn ids\n\t}\n}\n"],"names":["schema","MutationNothingToDo","NothingToDoReason","DeleteState","MutationDeleteOk","BeforeDeleteEvent","MutationUpdateOk","BeforeUpdateEvent","ImplementationException","AfterUpdateEvent","DeleteBuilder","findRelationsWithOrphanRemoval","SelectBuilder","MutationNoResultError","MutationEntryNotFoundError","findOwningRelations","Model","assertNever","formatConstraintViolationMessage","MutationConstraintViolationError","ConstraintType","Acl","values","getEntity","Literal","qb","entity","ids"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { ImplementationException } from "../../exception.js";
|
|
|
3
3
|
import { assertNever } from "../../utils/assertNever.js";
|
|
4
4
|
import { getEntity } from "@contember/schema-utils";
|
|
5
5
|
import { DeleteBuilder, SelectBuilder, Literal } from "@contember/database";
|
|
6
|
-
import {
|
|
6
|
+
import { MutationNothingToDo, NothingToDoReason, MutationDeleteOk, MutationUpdateOk, MutationNoResultError, MutationEntryNotFoundError, MutationConstraintViolationError, ConstraintType } from "../Result.js";
|
|
7
7
|
import { DeleteState } from "./DeleteState.js";
|
|
8
8
|
import { findRelationsWithOrphanRemoval, findOwningRelations, formatConstraintViolationMessage } from "./helpers.js";
|
|
9
9
|
import { BeforeDeleteEvent, BeforeUpdateEvent, AfterUpdateEvent } from "../EventManager.js";
|
|
@@ -17,10 +17,8 @@ class DeleteExecutor {
|
|
|
17
17
|
}
|
|
18
18
|
async execute(mapper, entity, by, filter) {
|
|
19
19
|
return mapper.mutex.execute(async () => {
|
|
20
|
-
const primaryValue = await mapper.getPrimaryValue(entity, by);
|
|
21
|
-
if (
|
|
22
|
-
return [new MutationEntryNotFoundError([], by)];
|
|
23
|
-
}
|
|
20
|
+
const [primaryValue, err] = await mapper.getPrimaryValue(entity, by);
|
|
21
|
+
if (err) return [err];
|
|
24
22
|
if (mapper.deletedEntities.isDeleted(entity.name, primaryValue)) {
|
|
25
23
|
return [new MutationNothingToDo([], NothingToDoReason.alreadyDeleted)];
|
|
26
24
|
}
|
|
@@ -43,8 +41,7 @@ class DeleteExecutor {
|
|
|
43
41
|
columnName: Object.keys(entry.values)[0],
|
|
44
42
|
fieldName: Object.keys(entry.input)[0],
|
|
45
43
|
columnType: "text",
|
|
46
|
-
|
|
47
|
-
value: Promise.resolve(null)
|
|
44
|
+
value: null
|
|
48
45
|
}], entry.primary);
|
|
49
46
|
entryToEventMap.set(entry, beforeUpdateEvent);
|
|
50
47
|
await mapper.eventManager.fire(beforeUpdateEvent);
|
|
@@ -61,8 +58,7 @@ class DeleteExecutor {
|
|
|
61
58
|
columnName: Object.keys(entry.values)[0],
|
|
62
59
|
fieldName: Object.keys(entry.input)[0],
|
|
63
60
|
columnType: "text",
|
|
64
|
-
|
|
65
|
-
value: Promise.resolve(null),
|
|
61
|
+
value: null,
|
|
66
62
|
old: Object.values(entry.oldValues ?? {})[0]
|
|
67
63
|
}];
|
|
68
64
|
const afterEvent = new AfterUpdateEvent(entry.entity, data, entry.primary);
|