@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":"MutationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||\n\t\t\t\t(path.length === 2 && node.name.value === 'node') ||\n\t\t\t\tpath.length > 2 ||\n\t\t\t\tpath.length === 0 ||\n\t\t\t\t(path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1 &&\n\t\t\t(result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t})),\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n' +\n\t\t\tvalidationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n' +\n\t\t\texecutionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["schema","GraphQlQueryAstFactory","it","logger","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever","executeReadOperations","validationErrors","ValidationResolver","getInsertPrimary","MutationResultType","retryTransaction","BeforeCommitEvent","convertError","AfterCommitEvent","MutationResultHint","path","ConstraintType","Result","InputErrorKind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MutationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||\n\t\t\t\t(path.length === 2 && node.name.value === 'node') ||\n\t\t\t\tpath.length > 2 ||\n\t\t\t\tpath.length === 0 ||\n\t\t\t\t(path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1 &&\n\t\t\t(result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t})),\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n' +\n\t\t\tvalidationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n' +\n\t\t\texecutionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["schema","GraphQlQueryAstFactory","it","logger","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever","executeReadOperations","validationErrors","ValidationResolver","getInsertPrimary","MutationResultType","retryTransaction","BeforeCommitEvent","AfterCommitEvent","convertError","MutationResultHint","path","ConstraintType","Result","InputErrorKind"],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ import { retryTransaction } from "@contember/database";
|
|
|
6
6
|
import { getInsertPrimary, MutationResultType, MutationResultHint, InputErrorKind, ConstraintType } from "../mapper/Result.js";
|
|
7
7
|
import { BeforeCommitEvent, AfterCommitEvent } from "../mapper/EventManager.js";
|
|
8
8
|
import { ObjectNode } from "../inputProcessing/ObjectNode.js";
|
|
9
|
-
import { convertError } from "../mapper/ErrorUtils.js";
|
|
10
9
|
import { logger } from "@contember/logger";
|
|
10
|
+
import { convertError } from "../mapper/ErrorUtils.js";
|
|
11
11
|
import "fast-deep-equal";
|
|
12
12
|
import "../extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js";
|
|
13
13
|
import "graphql";
|
|
@@ -369,11 +369,16 @@ class MutationResolver {
|
|
|
369
369
|
logger.debug("MutationResolver: Transaction failed, rolling back", { result });
|
|
370
370
|
await mapper.db.connection.rollback();
|
|
371
371
|
} else {
|
|
372
|
-
await mapper.eventManager.fire(new BeforeCommitEvent());
|
|
373
|
-
logger.debug("MutationResolver: Transaction ok, committing");
|
|
374
372
|
try {
|
|
373
|
+
await mapper.eventManager.fire(new BeforeCommitEvent());
|
|
374
|
+
logger.debug("MutationResolver: Transaction ok, committing");
|
|
375
375
|
await mapper.db.connection.commit();
|
|
376
|
+
await mapper.eventManager.fire(new AfterCommitEvent());
|
|
376
377
|
} catch (e) {
|
|
378
|
+
try {
|
|
379
|
+
await mapper.db.connection.rollback();
|
|
380
|
+
} catch {
|
|
381
|
+
}
|
|
377
382
|
const err = convertError(this.schema, this.schemaDatabaseMetadata, e);
|
|
378
383
|
const errorResponse = this.createErrorResponse([err]);
|
|
379
384
|
if (!errorResponse) {
|
|
@@ -381,7 +386,6 @@ class MutationResolver {
|
|
|
381
386
|
}
|
|
382
387
|
return { ...result, ...errorResponse };
|
|
383
388
|
}
|
|
384
|
-
await mapper.eventManager.fire(new AfterCommitEvent());
|
|
385
389
|
}
|
|
386
390
|
return result;
|
|
387
391
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MutationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||\n\t\t\t\t(path.length === 2 && node.name.value === 'node') ||\n\t\t\t\tpath.length > 2 ||\n\t\t\t\tpath.length === 0 ||\n\t\t\t\t(path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1 &&\n\t\t\t(result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t})),\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n' +\n\t\t\tvalidationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n' +\n\t\t\texecutionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["it","validationErrors","path"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MutationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||\n\t\t\t\t(path.length === 2 && node.name.value === 'node') ||\n\t\t\t\tpath.length > 2 ||\n\t\t\t\tpath.length === 0 ||\n\t\t\t\t(path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1 &&\n\t\t\t(result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t})),\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n' +\n\t\t\tvalidationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n' +\n\t\t\texecutionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["it","validationErrors","path"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadHelpers.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper'\nimport { ObjectNode } from '../inputProcessing'\nimport { assertNever, createPaginationHelper } from '../utils'\nimport { ImplementationException } from '../exception'\nimport { Operation, readOperationMeta } from '../schema'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":["createPaginationHelper","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever"],"mappings":";;;;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACE,QAAA,mBAAmBA,uCAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAA,
|
|
1
|
+
{"version":3,"file":"ReadHelpers.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper'\nimport { ObjectNode } from '../inputProcessing'\nimport { assertNever, createPaginationHelper } from '../utils'\nimport { ImplementationException } from '../exception'\nimport { Operation, readOperationMeta } from '../schema'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":["createPaginationHelper","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever"],"mappings":";;;;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACE,QAAA,mBAAmBA,uCAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAE,CAAA,IACrD;AACG,QAAA,QAAQ,iBAAiB,YAAY,MAAM,OAAO,OAAO,QAAQ,iBAAiB,WAAW,CAAE,CAAA,IAAI;AAElG,SAAA,iBAAiB,eAAe,YAAY,KAAK;AACzD;AAEO,MAAM,wBAAwB,OACpC,UACA,QACA,WACkC;AAClC,QAAM,YAAiC,CAAC;AAG7B,aAAA,SAAS,SAAS,QAAQ;AAChC,QAAA,EAAE,iBAAiBC,WAAAA,aAAa;AACnC,YAAM,IAAIC,UAAAA,wBAAwB;AAAA,IAAA;AAE7B,UAAA,cAAc,OAAO,MAAM,IAAI;AAC/B,UAAA,OAAOC,mBAAAA,kBAAkB,YAAY,UAAU;AACrD,cAAU,MAAM,KAAK,IAAI,OAAO,MAAM;AACrC,cAAQ,KAAK,WAAW;AAAA,QACvB,KAAKC,mBAAU,UAAA;AACd,iBAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAClD,KAAKA,mBAAU,UAAA;AACd,iBAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAC5C,KAAKA,mBAAU,UAAA;AACd,iBAAO,SAAS,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC3C,KAAKA,mBAAU,UAAA;AAAA,QACf,KAAKA,mBAAU,UAAA;AAAA,QACf,KAAKA,mBAAU,UAAA;AAAA,QACf,KAAKA,mBAAU,UAAA;AACd,gBAAM,IAAIF,UAAAA,wBAAwB;AAAA,MAAA;AAE7B,aAAAG,YAAA,YAAY,KAAK,SAAS;AAAA,IAAA,GAC/B;AAAA,EAAA;AAEG,SAAA;AACR;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadHelpers.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper'\nimport { ObjectNode } from '../inputProcessing'\nimport { assertNever, createPaginationHelper } from '../utils'\nimport { ImplementationException } from '../exception'\nimport { Operation, readOperationMeta } from '../schema'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACE,QAAA,mBAAmB,uBAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAA,
|
|
1
|
+
{"version":3,"file":"ReadHelpers.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper'\nimport { ObjectNode } from '../inputProcessing'\nimport { assertNever, createPaginationHelper } from '../utils'\nimport { ImplementationException } from '../exception'\nimport { Operation, readOperationMeta } from '../schema'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACE,QAAA,mBAAmB,uBAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAE,CAAA,IACrD;AACG,QAAA,QAAQ,iBAAiB,YAAY,MAAM,OAAO,OAAO,QAAQ,iBAAiB,WAAW,CAAE,CAAA,IAAI;AAElG,SAAA,iBAAiB,eAAe,YAAY,KAAK;AACzD;AAEO,MAAM,wBAAwB,OACpC,UACA,QACA,WACkC;AAClC,QAAM,YAAiC,CAAC;AAG7B,aAAA,SAAS,SAAS,QAAQ;AAChC,QAAA,EAAE,iBAAiB,aAAa;AACnC,YAAM,IAAI,wBAAwB;AAAA,IAAA;AAE7B,UAAA,cAAc,OAAO,MAAM,IAAI;AAC/B,UAAA,OAAO,kBAAkB,YAAY,UAAU;AACrD,cAAU,MAAM,KAAK,IAAI,OAAO,MAAM;AACrC,cAAQ,KAAK,WAAW;AAAA,QACvB,KAAK,UAAU;AACd,iBAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAClD,KAAK,UAAU;AACd,iBAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAC5C,KAAK,UAAU;AACd,iBAAO,SAAS,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC3C,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AACd,gBAAM,IAAI,wBAAwB;AAAA,MAAA;AAE7B,aAAA,YAAY,KAAK,SAAS;AAAA,IAAA,GAC/B;AAAA,EAAA;AAEG,SAAA;AACR;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations, paginate } from './ReadHelpers'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":["GraphQlQueryAstFactory","executeReadOperations","paginate"],"mappings":";;;;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ReadResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations, paginate } from './ReadHelpers'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":["GraphQlQueryAstFactory","executeReadOperations","paginate"],"mappings":";;;;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,aAAa,MAA0B;AACnD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAASA,uBAAAA,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAU;AAC7E,UAAA,SAAS,KAAK,cAAc,OAAO;AAClC,WAAAC,kCAAsB,UAAU,QAAQ,MAAM;AAAA,EAAA;AAAA,EAGtD,MAAa,mBAAmB,MAA0B;AACzD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAASD,uBAAAA,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAU;AAEnF,WAAO,KAAK,cAAc,YAAY,OAAM,WAAU;AAC9C,aAAAC,kCAAsB,UAAU,QAAQ,MAAM;AAAA,IAAA,CACrD;AAAA,EAAA;AAAA,EAGF,MAAa,iBAAiB,QAAsB,MAA0B;AAC7E,UAAM,WAA6C,KAAK,gBAAgB,OAAO,IAAI;AAC5E,WAAA,MAAM,KAAK,cAAc,OAAA,EAAS,OAAO,QAAQ,UAAU,EAAE;AAAA,EAAA;AAAA,EAGrE,MAAa,gBAAgB,QAAsB,MAA0B;AAC5E,UAAM,WAA+C,KAAK,gBAAgB,OAAO,IAAI;AAC9E,WAAA,MAAM,KAAK,cAAc,OAAA,EAAS,aAAa,QAAQ,UAAU,EAAE;AAAA,EAAA;AAAA,EAG3E,MAAa,uBAAuB,QAAsB,MAA0B;AACnF,UAAM,WAAmD,KAAK,gBAAgB,OAAO,IAAI;AACnF,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,WAAO,MAAMC,YAAA,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EAAA;AAEhD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations, paginate } from './ReadHelpers'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":[],"mappings":";;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ReadResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations, paginate } from './ReadHelpers'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":[],"mappings":";;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,aAAa,MAA0B;AACnD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAU;AAC7E,UAAA,SAAS,KAAK,cAAc,OAAO;AAClC,WAAA,sBAAsB,UAAU,QAAQ,MAAM;AAAA,EAAA;AAAA,EAGtD,MAAa,mBAAmB,MAA0B;AACzD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAU;AAEnF,WAAO,KAAK,cAAc,YAAY,OAAM,WAAU;AAC9C,aAAA,sBAAsB,UAAU,QAAQ,MAAM;AAAA,IAAA,CACrD;AAAA,EAAA;AAAA,EAGF,MAAa,iBAAiB,QAAsB,MAA0B;AAC7E,UAAM,WAA6C,KAAK,gBAAgB,OAAO,IAAI;AAC5E,WAAA,MAAM,KAAK,cAAc,OAAA,EAAS,OAAO,QAAQ,UAAU,EAAE;AAAA,EAAA;AAAA,EAGrE,MAAa,gBAAgB,QAAsB,MAA0B;AAC5E,UAAM,WAA+C,KAAK,gBAAgB,OAAO,IAAI;AAC9E,WAAA,MAAM,KAAK,cAAc,OAAA,EAAS,aAAa,QAAQ,UAAU,EAAE;AAAA,EAAA;AAAA,EAG3E,MAAa,uBAAuB,QAAsB,MAA0B;AACnF,UAAM,WAAmD,KAAK,gBAAgB,OAAO,IAAI;AACnF,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,WAAO,MAAM,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EAAA;AAEhD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator, ValidationResult } from '../input-validation'\nimport { MapperFactory } from '../mapper'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":["assertNever"],"mappings":";;;;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ValidationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator, ValidationResult } from '../input-validation'\nimport { MapperFactory } from '../mapper'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":["assertNever"],"mappings":";;;;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,eAAe,QAAsB,OAA4D;AACvG,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AAEG,QAAA,iBAAiB,SAAS,GAAG;AACzB,aAAA,mBAAmB,yBAAyB,gBAAgB;AAAA,IAAA;AAE7D,WAAA;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IACT;AAAA,EAAA;AAAA,EAGD,MAAa,eAAe,QAAsB,OAA4D;AACvG,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAC;AAAA,MACP,cAAc;AAAA,IAAA,CACd;AACG,QAAA,iBAAiB,SAAS,GAAG;AACzB,aAAA,mBAAmB,yBAAyB,gBAAgB;AAAA,IAAA;AAE7D,WAAA;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IACT;AAAA,EAAA;AAAA,EAGD,OAAc,yBAAyB,kBAA6D;AAC5F,WAAA;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,iBAAiB,IAAI,CAAO,QAAA;AAAA,QACnC,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,KAAK,IAAI,CAAQ,SAAA;AACzB,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAK;AAAA,UAAA;AAEpD,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAK;AAAA,UAAA;AAEpD,iBAAOA,wBAAgB;AAAA,QACvB,CAAA;AAAA,MAAA,EACA;AAAA,IACH;AAAA,EAAA;AAEF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator, ValidationResult } from '../input-validation'\nimport { MapperFactory } from '../mapper'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ValidationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator, ValidationResult } from '../input-validation'\nimport { MapperFactory } from '../mapper'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,EAAA;AAAA,EAGlB,MAAa,eAAe,QAAsB,OAA4D;AACvG,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AAEG,QAAA,iBAAiB,SAAS,GAAG;AACzB,aAAA,mBAAmB,yBAAyB,gBAAgB;AAAA,IAAA;AAE7D,WAAA;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IACT;AAAA,EAAA;AAAA,EAGD,MAAa,eAAe,QAAsB,OAA4D;AACvG,UAAA,SAAS,KAAK,cAAc,OAAO;AACzC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAC;AAAA,MACP,cAAc;AAAA,IAAA,CACd;AACG,QAAA,iBAAiB,SAAS,GAAG;AACzB,aAAA,mBAAmB,yBAAyB,gBAAgB;AAAA,IAAA;AAE7D,WAAA;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IACT;AAAA,EAAA;AAAA,EAGD,OAAc,yBAAyB,kBAA6D;AAC5F,WAAA;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,iBAAiB,IAAI,CAAO,QAAA;AAAA,QACnC,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,KAAK,IAAI,CAAQ,SAAA;AACzB,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAK;AAAA,UAAA;AAEpD,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAK;AAAA,UAAA;AAEpD,iBAAO,YAAgB;AAAA,QACvB,CAAA;AAAA,MAAA,EACA;AAAA,IACH;AAAA,EAAA;AAEF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnTypeResolver.cjs","sources":["../../../../../packages/engine-content-api/src/schema/ColumnTypeResolver.ts"],"sourcesContent":["import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLScalarType, GraphQLString } from 'graphql'\nimport { Model } from '@contember/schema'\nimport { EnumsProvider } from './EnumsProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ImplementationException } from '../exception'\nimport { singletonFactory } from '../utils'\n\ntype ScalarType = Exclude<Model.ColumnType, Model.ColumnType.Enum>\n\nexport class ColumnTypeResolver {\n\tprivate schema: Model.Schema\n\tprivate enumsProvider: EnumsProvider\n\n\tprivate readonly aliasedTypes = singletonFactory<{ scalar: GraphQLScalarType; base: ScalarType }, string, ScalarType>(\n\t\tthis.createAliasedType.bind(this),\n\t)\n\n\tconstructor(\n\t\tschema: Model.Schema,\n\t\tenumsProvider: EnumsProvider,\n\t\tprivate readonly customTypeProvider: CustomTypesProvider,\n\t) {\n\t\tthis.schema = schema\n\t\tthis.enumsProvider = enumsProvider\n\t}\n\n\tprivate createAliasedType(name: string, baseType: ScalarType): { scalar: GraphQLScalarType; base: ScalarType } {\n\t\tconst baseGraphqlType = this.getScalarType(baseType)\n\t\treturn {\n\t\t\tscalar: new GraphQLScalarType({\n\t\t\t\t...baseGraphqlType.toConfig(),\n\t\t\t\tname,\n\t\t\t\tdescription: null,\n\t\t\t}),\n\t\t\tbase: baseType,\n\t\t}\n\t}\n\n\tpublic getType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tif (column.typeAlias) {\n\t\t\tif (column.type === Model.ColumnType.Enum) {\n\t\t\t\tthrow new Error('GraphQL type alias cannot be specified for enum type')\n\t\t\t}\n\t\t\tconst { scalar, base } = this.aliasedTypes(column.typeAlias, column.type)\n\t\t\tif (base !== column.type) {\n\t\t\t\tthrow new Error('GraphQL type alias with different base type found')\n\t\t\t}\n\t\t\treturn scalar\n\t\t}\n\t\treturn this.resolveType(column)\n\t}\n\n\tprivate resolveType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tswitch (column.type) {\n\t\t\tcase Model.ColumnType.Enum:\n\t\t\t\tif (this.enumsProvider.hasEnum(column.columnType)) {\n\t\t\t\t\treturn this.enumsProvider.getEnum(column.columnType)\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Undefined enum ${column.columnType}`)\n\t\t\tdefault:\n\t\t\t\treturn this.getScalarType(column.type)\n\t\t}\n\t}\n\n\tpublic getScalarType(type: ScalarType): GraphQLScalarType {\n\t\tswitch (type) {\n\t\t\tcase Model.ColumnType.Int:\n\t\t\t\treturn GraphQLInt\n\t\t\tcase Model.ColumnType.String:\n\t\t\t\treturn GraphQLString\n\t\t\tcase Model.ColumnType.Uuid:\n\t\t\t\treturn this.customTypeProvider.uuidType\n\t\t\tcase Model.ColumnType.Double:\n\t\t\t\treturn GraphQLFloat\n\t\t\tcase Model.ColumnType.Bool:\n\t\t\t\treturn GraphQLBoolean\n\t\t\tcase Model.ColumnType.DateTime:\n\t\t\t\treturn this.customTypeProvider.dateTimeType\n\t\t\tcase Model.ColumnType.Date:\n\t\t\t\treturn this.customTypeProvider.dateType\n\t\t\tcase Model.ColumnType.Json:\n\t\t\t\treturn this.customTypeProvider.jsonType\n\t\t\tdefault:\n\t\t\t\t(({}: never): never => {\n\t\t\t\t\tthrow new ImplementationException('Invalid column type')\n\t\t\t\t})(type)\n\t\t}\n\t}\n}\n"],"names":["schema","singletonFactory","GraphQLScalarType","Model","GraphQLInt","GraphQLString","GraphQLFloat","GraphQLBoolean","ImplementationException"],"mappings":";;;;;;;;;;AASO,MAAM,mBAAmB;AAAA,EAQ/B,YACCA,SACA,eACiB,oBAChB;AADgB,SAAA,qBAAA;AAVV,kBAAA,MAAA,QAAA;AACA,kBAAA,MAAA,eAAA;AAER,kBAAA,MAAiB,gBAAeC,iBAAA;AAAA,MAC/B,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACjC;AAOC,SAAK,SAASD;AACd,SAAK,gBAAgB;AAAA,
|
|
1
|
+
{"version":3,"file":"ColumnTypeResolver.cjs","sources":["../../../../../packages/engine-content-api/src/schema/ColumnTypeResolver.ts"],"sourcesContent":["import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLScalarType, GraphQLString } from 'graphql'\nimport { Model } from '@contember/schema'\nimport { EnumsProvider } from './EnumsProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ImplementationException } from '../exception'\nimport { singletonFactory } from '../utils'\n\ntype ScalarType = Exclude<Model.ColumnType, Model.ColumnType.Enum>\n\nexport class ColumnTypeResolver {\n\tprivate schema: Model.Schema\n\tprivate enumsProvider: EnumsProvider\n\n\tprivate readonly aliasedTypes = singletonFactory<{ scalar: GraphQLScalarType; base: ScalarType }, string, ScalarType>(\n\t\tthis.createAliasedType.bind(this),\n\t)\n\n\tconstructor(\n\t\tschema: Model.Schema,\n\t\tenumsProvider: EnumsProvider,\n\t\tprivate readonly customTypeProvider: CustomTypesProvider,\n\t) {\n\t\tthis.schema = schema\n\t\tthis.enumsProvider = enumsProvider\n\t}\n\n\tprivate createAliasedType(name: string, baseType: ScalarType): { scalar: GraphQLScalarType; base: ScalarType } {\n\t\tconst baseGraphqlType = this.getScalarType(baseType)\n\t\treturn {\n\t\t\tscalar: new GraphQLScalarType({\n\t\t\t\t...baseGraphqlType.toConfig(),\n\t\t\t\tname,\n\t\t\t\tdescription: null,\n\t\t\t}),\n\t\t\tbase: baseType,\n\t\t}\n\t}\n\n\tpublic getType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tif (column.typeAlias) {\n\t\t\tif (column.type === Model.ColumnType.Enum) {\n\t\t\t\tthrow new Error('GraphQL type alias cannot be specified for enum type')\n\t\t\t}\n\t\t\tconst { scalar, base } = this.aliasedTypes(column.typeAlias, column.type)\n\t\t\tif (base !== column.type) {\n\t\t\t\tthrow new Error('GraphQL type alias with different base type found')\n\t\t\t}\n\t\t\treturn scalar\n\t\t}\n\t\treturn this.resolveType(column)\n\t}\n\n\tprivate resolveType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tswitch (column.type) {\n\t\t\tcase Model.ColumnType.Enum:\n\t\t\t\tif (this.enumsProvider.hasEnum(column.columnType)) {\n\t\t\t\t\treturn this.enumsProvider.getEnum(column.columnType)\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Undefined enum ${column.columnType}`)\n\t\t\tdefault:\n\t\t\t\treturn this.getScalarType(column.type)\n\t\t}\n\t}\n\n\tpublic getScalarType(type: ScalarType): GraphQLScalarType {\n\t\tswitch (type) {\n\t\t\tcase Model.ColumnType.Int:\n\t\t\t\treturn GraphQLInt\n\t\t\tcase Model.ColumnType.String:\n\t\t\t\treturn GraphQLString\n\t\t\tcase Model.ColumnType.Uuid:\n\t\t\t\treturn this.customTypeProvider.uuidType\n\t\t\tcase Model.ColumnType.Double:\n\t\t\t\treturn GraphQLFloat\n\t\t\tcase Model.ColumnType.Bool:\n\t\t\t\treturn GraphQLBoolean\n\t\t\tcase Model.ColumnType.DateTime:\n\t\t\t\treturn this.customTypeProvider.dateTimeType\n\t\t\tcase Model.ColumnType.Date:\n\t\t\t\treturn this.customTypeProvider.dateType\n\t\t\tcase Model.ColumnType.Json:\n\t\t\t\treturn this.customTypeProvider.jsonType\n\t\t\tdefault:\n\t\t\t\t(({}: never): never => {\n\t\t\t\t\tthrow new ImplementationException('Invalid column type')\n\t\t\t\t})(type)\n\t\t}\n\t}\n}\n"],"names":["schema","singletonFactory","GraphQLScalarType","Model","GraphQLInt","GraphQLString","GraphQLFloat","GraphQLBoolean","ImplementationException"],"mappings":";;;;;;;;;;AASO,MAAM,mBAAmB;AAAA,EAQ/B,YACCA,SACA,eACiB,oBAChB;AADgB,SAAA,qBAAA;AAVV,kBAAA,MAAA,QAAA;AACA,kBAAA,MAAA,eAAA;AAER,kBAAA,MAAiB,gBAAeC,iBAAA;AAAA,MAC/B,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACjC;AAOC,SAAK,SAASD;AACd,SAAK,gBAAgB;AAAA,EAAA;AAAA,EAGd,kBAAkB,MAAc,UAAuE;AACxG,UAAA,kBAAkB,KAAK,cAAc,QAAQ;AAC5C,WAAA;AAAA,MACN,QAAQ,IAAIE,QAAAA,kBAAkB;AAAA,QAC7B,GAAG,gBAAgB,SAAS;AAAA,QAC5B;AAAA,QACA,aAAa;AAAA,MAAA,CACb;AAAA,MACD,MAAM;AAAA,IACP;AAAA,EAAA;AAAA,EAGM,QAAQ,QAA8D;AAC5E,QAAI,OAAO,WAAW;AACrB,UAAI,OAAO,SAASC,aAAM,WAAW,MAAM;AACpC,cAAA,IAAI,MAAM,sDAAsD;AAAA,MAAA;AAEjE,YAAA,EAAE,QAAQ,KAAK,IAAI,KAAK,aAAa,OAAO,WAAW,OAAO,IAAI;AACpE,UAAA,SAAS,OAAO,MAAM;AACnB,cAAA,IAAI,MAAM,mDAAmD;AAAA,MAAA;AAE7D,aAAA;AAAA,IAAA;AAED,WAAA,KAAK,YAAY,MAAM;AAAA,EAAA;AAAA,EAGvB,YAAY,QAA8D;AACjF,YAAQ,OAAO,MAAM;AAAA,MACpB,KAAKA,OAAAA,MAAM,WAAW;AACrB,YAAI,KAAK,cAAc,QAAQ,OAAO,UAAU,GAAG;AAClD,iBAAO,KAAK,cAAc,QAAQ,OAAO,UAAU;AAAA,QAAA;AAEpD,cAAM,IAAI,MAAM,kBAAkB,OAAO,UAAU,EAAE;AAAA,MACtD;AACQ,eAAA,KAAK,cAAc,OAAO,IAAI;AAAA,IAAA;AAAA,EACvC;AAAA,EAGM,cAAc,MAAqC;AACzD,YAAQ,MAAM;AAAA,MACb,KAAKA,OAAAA,MAAM,WAAW;AACd,eAAAC,QAAA;AAAA,MACR,KAAKD,OAAAA,MAAM,WAAW;AACd,eAAAE,QAAA;AAAA,MACR,KAAKF,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACd,eAAAG,QAAA;AAAA,MACR,KAAKH,OAAAA,MAAM,WAAW;AACd,eAAAI,QAAA;AAAA,MACR,KAAKJ,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC;AACE,SAAA,CAAC,CAAA,MAAqB;AAChB,gBAAA,IAAIK,kCAAwB,qBAAqB;AAAA,WACrD,IAAI;AAAA,IAAA;AAAA,EACT;AAEF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnTypeResolver.js","sources":["../../../../../packages/engine-content-api/src/schema/ColumnTypeResolver.ts"],"sourcesContent":["import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLScalarType, GraphQLString } from 'graphql'\nimport { Model } from '@contember/schema'\nimport { EnumsProvider } from './EnumsProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ImplementationException } from '../exception'\nimport { singletonFactory } from '../utils'\n\ntype ScalarType = Exclude<Model.ColumnType, Model.ColumnType.Enum>\n\nexport class ColumnTypeResolver {\n\tprivate schema: Model.Schema\n\tprivate enumsProvider: EnumsProvider\n\n\tprivate readonly aliasedTypes = singletonFactory<{ scalar: GraphQLScalarType; base: ScalarType }, string, ScalarType>(\n\t\tthis.createAliasedType.bind(this),\n\t)\n\n\tconstructor(\n\t\tschema: Model.Schema,\n\t\tenumsProvider: EnumsProvider,\n\t\tprivate readonly customTypeProvider: CustomTypesProvider,\n\t) {\n\t\tthis.schema = schema\n\t\tthis.enumsProvider = enumsProvider\n\t}\n\n\tprivate createAliasedType(name: string, baseType: ScalarType): { scalar: GraphQLScalarType; base: ScalarType } {\n\t\tconst baseGraphqlType = this.getScalarType(baseType)\n\t\treturn {\n\t\t\tscalar: new GraphQLScalarType({\n\t\t\t\t...baseGraphqlType.toConfig(),\n\t\t\t\tname,\n\t\t\t\tdescription: null,\n\t\t\t}),\n\t\t\tbase: baseType,\n\t\t}\n\t}\n\n\tpublic getType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tif (column.typeAlias) {\n\t\t\tif (column.type === Model.ColumnType.Enum) {\n\t\t\t\tthrow new Error('GraphQL type alias cannot be specified for enum type')\n\t\t\t}\n\t\t\tconst { scalar, base } = this.aliasedTypes(column.typeAlias, column.type)\n\t\t\tif (base !== column.type) {\n\t\t\t\tthrow new Error('GraphQL type alias with different base type found')\n\t\t\t}\n\t\t\treturn scalar\n\t\t}\n\t\treturn this.resolveType(column)\n\t}\n\n\tprivate resolveType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tswitch (column.type) {\n\t\t\tcase Model.ColumnType.Enum:\n\t\t\t\tif (this.enumsProvider.hasEnum(column.columnType)) {\n\t\t\t\t\treturn this.enumsProvider.getEnum(column.columnType)\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Undefined enum ${column.columnType}`)\n\t\t\tdefault:\n\t\t\t\treturn this.getScalarType(column.type)\n\t\t}\n\t}\n\n\tpublic getScalarType(type: ScalarType): GraphQLScalarType {\n\t\tswitch (type) {\n\t\t\tcase Model.ColumnType.Int:\n\t\t\t\treturn GraphQLInt\n\t\t\tcase Model.ColumnType.String:\n\t\t\t\treturn GraphQLString\n\t\t\tcase Model.ColumnType.Uuid:\n\t\t\t\treturn this.customTypeProvider.uuidType\n\t\t\tcase Model.ColumnType.Double:\n\t\t\t\treturn GraphQLFloat\n\t\t\tcase Model.ColumnType.Bool:\n\t\t\t\treturn GraphQLBoolean\n\t\t\tcase Model.ColumnType.DateTime:\n\t\t\t\treturn this.customTypeProvider.dateTimeType\n\t\t\tcase Model.ColumnType.Date:\n\t\t\t\treturn this.customTypeProvider.dateType\n\t\t\tcase Model.ColumnType.Json:\n\t\t\t\treturn this.customTypeProvider.jsonType\n\t\t\tdefault:\n\t\t\t\t(({}: never): never => {\n\t\t\t\t\tthrow new ImplementationException('Invalid column type')\n\t\t\t\t})(type)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AASO,MAAM,mBAAmB;AAAA,EAQ/B,YACC,QACA,eACiB,oBAChB;AADgB,SAAA,qBAAA;AAVV,kBAAA,MAAA,QAAA;AACA,kBAAA,MAAA,eAAA;AAER,kBAAA,MAAiB,gBAAe;AAAA,MAC/B,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACjC;AAOC,SAAK,SAAS;AACd,SAAK,gBAAgB;AAAA,
|
|
1
|
+
{"version":3,"file":"ColumnTypeResolver.js","sources":["../../../../../packages/engine-content-api/src/schema/ColumnTypeResolver.ts"],"sourcesContent":["import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLScalarType, GraphQLString } from 'graphql'\nimport { Model } from '@contember/schema'\nimport { EnumsProvider } from './EnumsProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ImplementationException } from '../exception'\nimport { singletonFactory } from '../utils'\n\ntype ScalarType = Exclude<Model.ColumnType, Model.ColumnType.Enum>\n\nexport class ColumnTypeResolver {\n\tprivate schema: Model.Schema\n\tprivate enumsProvider: EnumsProvider\n\n\tprivate readonly aliasedTypes = singletonFactory<{ scalar: GraphQLScalarType; base: ScalarType }, string, ScalarType>(\n\t\tthis.createAliasedType.bind(this),\n\t)\n\n\tconstructor(\n\t\tschema: Model.Schema,\n\t\tenumsProvider: EnumsProvider,\n\t\tprivate readonly customTypeProvider: CustomTypesProvider,\n\t) {\n\t\tthis.schema = schema\n\t\tthis.enumsProvider = enumsProvider\n\t}\n\n\tprivate createAliasedType(name: string, baseType: ScalarType): { scalar: GraphQLScalarType; base: ScalarType } {\n\t\tconst baseGraphqlType = this.getScalarType(baseType)\n\t\treturn {\n\t\t\tscalar: new GraphQLScalarType({\n\t\t\t\t...baseGraphqlType.toConfig(),\n\t\t\t\tname,\n\t\t\t\tdescription: null,\n\t\t\t}),\n\t\t\tbase: baseType,\n\t\t}\n\t}\n\n\tpublic getType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tif (column.typeAlias) {\n\t\t\tif (column.type === Model.ColumnType.Enum) {\n\t\t\t\tthrow new Error('GraphQL type alias cannot be specified for enum type')\n\t\t\t}\n\t\t\tconst { scalar, base } = this.aliasedTypes(column.typeAlias, column.type)\n\t\t\tif (base !== column.type) {\n\t\t\t\tthrow new Error('GraphQL type alias with different base type found')\n\t\t\t}\n\t\t\treturn scalar\n\t\t}\n\t\treturn this.resolveType(column)\n\t}\n\n\tprivate resolveType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tswitch (column.type) {\n\t\t\tcase Model.ColumnType.Enum:\n\t\t\t\tif (this.enumsProvider.hasEnum(column.columnType)) {\n\t\t\t\t\treturn this.enumsProvider.getEnum(column.columnType)\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Undefined enum ${column.columnType}`)\n\t\t\tdefault:\n\t\t\t\treturn this.getScalarType(column.type)\n\t\t}\n\t}\n\n\tpublic getScalarType(type: ScalarType): GraphQLScalarType {\n\t\tswitch (type) {\n\t\t\tcase Model.ColumnType.Int:\n\t\t\t\treturn GraphQLInt\n\t\t\tcase Model.ColumnType.String:\n\t\t\t\treturn GraphQLString\n\t\t\tcase Model.ColumnType.Uuid:\n\t\t\t\treturn this.customTypeProvider.uuidType\n\t\t\tcase Model.ColumnType.Double:\n\t\t\t\treturn GraphQLFloat\n\t\t\tcase Model.ColumnType.Bool:\n\t\t\t\treturn GraphQLBoolean\n\t\t\tcase Model.ColumnType.DateTime:\n\t\t\t\treturn this.customTypeProvider.dateTimeType\n\t\t\tcase Model.ColumnType.Date:\n\t\t\t\treturn this.customTypeProvider.dateType\n\t\t\tcase Model.ColumnType.Json:\n\t\t\t\treturn this.customTypeProvider.jsonType\n\t\t\tdefault:\n\t\t\t\t(({}: never): never => {\n\t\t\t\t\tthrow new ImplementationException('Invalid column type')\n\t\t\t\t})(type)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AASO,MAAM,mBAAmB;AAAA,EAQ/B,YACC,QACA,eACiB,oBAChB;AADgB,SAAA,qBAAA;AAVV,kBAAA,MAAA,QAAA;AACA,kBAAA,MAAA,eAAA;AAER,kBAAA,MAAiB,gBAAe;AAAA,MAC/B,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACjC;AAOC,SAAK,SAAS;AACd,SAAK,gBAAgB;AAAA,EAAA;AAAA,EAGd,kBAAkB,MAAc,UAAuE;AACxG,UAAA,kBAAkB,KAAK,cAAc,QAAQ;AAC5C,WAAA;AAAA,MACN,QAAQ,IAAI,kBAAkB;AAAA,QAC7B,GAAG,gBAAgB,SAAS;AAAA,QAC5B;AAAA,QACA,aAAa;AAAA,MAAA,CACb;AAAA,MACD,MAAM;AAAA,IACP;AAAA,EAAA;AAAA,EAGM,QAAQ,QAA8D;AAC5E,QAAI,OAAO,WAAW;AACrB,UAAI,OAAO,SAAS,MAAM,WAAW,MAAM;AACpC,cAAA,IAAI,MAAM,sDAAsD;AAAA,MAAA;AAEjE,YAAA,EAAE,QAAQ,KAAK,IAAI,KAAK,aAAa,OAAO,WAAW,OAAO,IAAI;AACpE,UAAA,SAAS,OAAO,MAAM;AACnB,cAAA,IAAI,MAAM,mDAAmD;AAAA,MAAA;AAE7D,aAAA;AAAA,IAAA;AAED,WAAA,KAAK,YAAY,MAAM;AAAA,EAAA;AAAA,EAGvB,YAAY,QAA8D;AACjF,YAAQ,OAAO,MAAM;AAAA,MACpB,KAAK,MAAM,WAAW;AACrB,YAAI,KAAK,cAAc,QAAQ,OAAO,UAAU,GAAG;AAClD,iBAAO,KAAK,cAAc,QAAQ,OAAO,UAAU;AAAA,QAAA;AAEpD,cAAM,IAAI,MAAM,kBAAkB,OAAO,UAAU,EAAE;AAAA,MACtD;AACQ,eAAA,KAAK,cAAc,OAAO,IAAI;AAAA,IAAA;AAAA,EACvC;AAAA,EAGM,cAAc,MAAqC;AACzD,YAAQ,MAAM;AAAA,MACb,KAAK,MAAM,WAAW;AACd,eAAA;AAAA,MACR,KAAK,MAAM,WAAW;AACd,eAAA;AAAA,MACR,KAAK,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAK,MAAM,WAAW;AACd,eAAA;AAAA,MACR,KAAK,MAAM,WAAW;AACd,eAAA;AAAA,MACR,KAAK,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAK,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAK,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC;AACE,SAAA,CAAC,CAAA,MAAqB;AAChB,gBAAA,IAAI,wBAAwB,qBAAqB;AAAA,WACrD,IAAI;AAAA,IAAA;AAAA,EACT;AAEF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionTypeProvider.cjs","sources":["../../../../../packages/engine-content-api/src/schema/ConditionTypeProvider.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport {\n\tGraphQLBoolean,\n\tGraphQLEnumType,\n\tGraphQLInputFieldConfigMap,\n\tGraphQLInputObjectType,\n\tGraphQLList,\n\tGraphQLNonNull,\n\tGraphQLScalarType,\n\tGraphQLString,\n} from 'graphql'\nimport { singletonFactory } from '../utils'\nimport { ColumnTypeResolver } from './ColumnTypeResolver'\nimport { GqlTypeName } from './utils'\n\nexport class ConditionTypeProvider {\n\tprivate conditions = singletonFactory<GraphQLInputObjectType, string, GraphQLScalarType | GraphQLEnumType>(\n\t\t(name, type) => this.createCondition(type),\n\t)\n\n\tconstructor(private readonly columnTypeResolver: ColumnTypeResolver) {}\n\n\tpublic getCondition(column: Model.AnyColumn): GraphQLInputObjectType {\n\t\tconst basicType = this.columnTypeResolver.getType(column)\n\t\treturn this.conditions(basicType.name, basicType)\n\t}\n\n\tprivate createCondition(type: GraphQLScalarType | GraphQLEnumType): GraphQLInputObjectType {\n\t\tconst suffix =\n\t\t\ttypeof type === 'object' && type.constructor && type.constructor.name === 'GraphQLEnumType' ? 'Enum' : ''\n\t\tconst condition: GraphQLInputObjectType = new GraphQLInputObjectType({\n\t\t\tname: GqlTypeName`${type.name}${suffix}Condition`,\n\t\t\tfields: (): GraphQLInputFieldConfigMap => {\n\t\t\t\tconst conditions: GraphQLInputFieldConfigMap = {\n\t\t\t\t\tand: { type: new GraphQLList(new GraphQLNonNull(condition)) },\n\t\t\t\t\tor: { type: new GraphQLList(new GraphQLNonNull(condition)) },\n\t\t\t\t\tnot: { type: condition },\n\n\t\t\t\t\tnull: { type: GraphQLBoolean },\n\t\t\t\t\tisNull: { type: GraphQLBoolean },\n\t\t\t\t}\n\t\t\t\tif (type.name !== 'Json') {\n\t\t\t\t\tconditions.eq = { type }\n\t\t\t\t\tconditions.notEq = { type }\n\t\t\t\t\tconditions.in = { type: new GraphQLList(new GraphQLNonNull(type)) }\n\t\t\t\t\tconditions.notIn = { type: new GraphQLList(new GraphQLNonNull(type)) }\n\t\t\t\t\tconditions.lt = { type: type }\n\t\t\t\t\tconditions.lte = { type: type }\n\t\t\t\t\tconditions.gt = { type: type }\n\t\t\t\t\tconditions.gte = { type: type }\n\t\t\t\t}\n\t\t\t\tif (type.name === 'String') {\n\t\t\t\t\tconditions.contains = { type: GraphQLString }\n\t\t\t\t\tconditions.startsWith = { type: GraphQLString }\n\t\t\t\t\tconditions.endsWith = { type: GraphQLString }\n\n\t\t\t\t\tconditions.containsCI = { type: GraphQLString }\n\t\t\t\t\tconditions.startsWithCI = { type: GraphQLString }\n\t\t\t\t\tconditions.endsWithCI = { type: GraphQLString }\n\t\t\t\t}\n\t\t\t\treturn conditions\n\t\t\t},\n\t\t})\n\t\treturn condition\n\t}\n}\n"],"names":["singletonFactory","GraphQLInputObjectType","GqlTypeName","GraphQLList","GraphQLNonNull","GraphQLBoolean","GraphQLString"],"mappings":";;;;;;;;;AAeO,MAAM,sBAAsB;AAAA,EAKlC,YAA6B,oBAAwC;AAAxC,SAAA,qBAAA;AAJ7B,kBAAA,MAAQ,cAAaA,iBAAA;AAAA,MACpB,CAAC,MAAM,SAAS,KAAK,gBAAgB,IAAI;AAAA,IAAA,CAC1C;AAAA,
|
|
1
|
+
{"version":3,"file":"ConditionTypeProvider.cjs","sources":["../../../../../packages/engine-content-api/src/schema/ConditionTypeProvider.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport {\n\tGraphQLBoolean,\n\tGraphQLEnumType,\n\tGraphQLInputFieldConfigMap,\n\tGraphQLInputObjectType,\n\tGraphQLList,\n\tGraphQLNonNull,\n\tGraphQLScalarType,\n\tGraphQLString,\n} from 'graphql'\nimport { singletonFactory } from '../utils'\nimport { ColumnTypeResolver } from './ColumnTypeResolver'\nimport { GqlTypeName } from './utils'\n\nexport class ConditionTypeProvider {\n\tprivate conditions = singletonFactory<GraphQLInputObjectType, string, GraphQLScalarType | GraphQLEnumType>(\n\t\t(name, type) => this.createCondition(type),\n\t)\n\n\tconstructor(private readonly columnTypeResolver: ColumnTypeResolver) {}\n\n\tpublic getCondition(column: Model.AnyColumn): GraphQLInputObjectType {\n\t\tconst basicType = this.columnTypeResolver.getType(column)\n\t\treturn this.conditions(basicType.name, basicType)\n\t}\n\n\tprivate createCondition(type: GraphQLScalarType | GraphQLEnumType): GraphQLInputObjectType {\n\t\tconst suffix =\n\t\t\ttypeof type === 'object' && type.constructor && type.constructor.name === 'GraphQLEnumType' ? 'Enum' : ''\n\t\tconst condition: GraphQLInputObjectType = new GraphQLInputObjectType({\n\t\t\tname: GqlTypeName`${type.name}${suffix}Condition`,\n\t\t\tfields: (): GraphQLInputFieldConfigMap => {\n\t\t\t\tconst conditions: GraphQLInputFieldConfigMap = {\n\t\t\t\t\tand: { type: new GraphQLList(new GraphQLNonNull(condition)) },\n\t\t\t\t\tor: { type: new GraphQLList(new GraphQLNonNull(condition)) },\n\t\t\t\t\tnot: { type: condition },\n\n\t\t\t\t\tnull: { type: GraphQLBoolean },\n\t\t\t\t\tisNull: { type: GraphQLBoolean },\n\t\t\t\t}\n\t\t\t\tif (type.name !== 'Json') {\n\t\t\t\t\tconditions.eq = { type }\n\t\t\t\t\tconditions.notEq = { type }\n\t\t\t\t\tconditions.in = { type: new GraphQLList(new GraphQLNonNull(type)) }\n\t\t\t\t\tconditions.notIn = { type: new GraphQLList(new GraphQLNonNull(type)) }\n\t\t\t\t\tconditions.lt = { type: type }\n\t\t\t\t\tconditions.lte = { type: type }\n\t\t\t\t\tconditions.gt = { type: type }\n\t\t\t\t\tconditions.gte = { type: type }\n\t\t\t\t}\n\t\t\t\tif (type.name === 'String') {\n\t\t\t\t\tconditions.contains = { type: GraphQLString }\n\t\t\t\t\tconditions.startsWith = { type: GraphQLString }\n\t\t\t\t\tconditions.endsWith = { type: GraphQLString }\n\n\t\t\t\t\tconditions.containsCI = { type: GraphQLString }\n\t\t\t\t\tconditions.startsWithCI = { type: GraphQLString }\n\t\t\t\t\tconditions.endsWithCI = { type: GraphQLString }\n\t\t\t\t}\n\t\t\t\treturn conditions\n\t\t\t},\n\t\t})\n\t\treturn condition\n\t}\n}\n"],"names":["singletonFactory","GraphQLInputObjectType","GqlTypeName","GraphQLList","GraphQLNonNull","GraphQLBoolean","GraphQLString"],"mappings":";;;;;;;;;AAeO,MAAM,sBAAsB;AAAA,EAKlC,YAA6B,oBAAwC;AAAxC,SAAA,qBAAA;AAJ7B,kBAAA,MAAQ,cAAaA,iBAAA;AAAA,MACpB,CAAC,MAAM,SAAS,KAAK,gBAAgB,IAAI;AAAA,IAAA,CAC1C;AAAA,EAAA;AAAA,EAIO,aAAa,QAAiD;AACpE,UAAM,YAAY,KAAK,mBAAmB,QAAQ,MAAM;AACxD,WAAO,KAAK,WAAW,UAAU,MAAM,SAAS;AAAA,EAAA;AAAA,EAGzC,gBAAgB,MAAmE;AACpF,UAAA,SACL,OAAO,SAAS,YAAY,KAAK,eAAe,KAAK,YAAY,SAAS,oBAAoB,SAAS;AAClG,UAAA,YAAoC,IAAIC,+BAAuB;AAAA,MACpE,MAAMC,MAAA,cAAc,KAAK,IAAI,GAAG,MAAM;AAAA,MACtC,QAAQ,MAAkC;AACzC,cAAM,aAAyC;AAAA,UAC9C,KAAK,EAAE,MAAM,IAAIC,QAAAA,YAAY,IAAIC,QAAA,eAAe,SAAS,CAAC,EAAE;AAAA,UAC5D,IAAI,EAAE,MAAM,IAAID,QAAAA,YAAY,IAAIC,QAAA,eAAe,SAAS,CAAC,EAAE;AAAA,UAC3D,KAAK,EAAE,MAAM,UAAU;AAAA,UAEvB,MAAM,EAAE,MAAMC,uBAAe;AAAA,UAC7B,QAAQ,EAAE,MAAMA,QAAe,eAAA;AAAA,QAChC;AACI,YAAA,KAAK,SAAS,QAAQ;AACd,qBAAA,KAAK,EAAE,KAAK;AACZ,qBAAA,QAAQ,EAAE,KAAK;AACf,qBAAA,KAAK,EAAE,MAAM,IAAIF,oBAAY,IAAIC,QAAA,eAAe,IAAI,CAAC,EAAE;AACvD,qBAAA,QAAQ,EAAE,MAAM,IAAID,oBAAY,IAAIC,QAAA,eAAe,IAAI,CAAC,EAAE;AAC1D,qBAAA,KAAK,EAAE,KAAW;AAClB,qBAAA,MAAM,EAAE,KAAW;AACnB,qBAAA,KAAK,EAAE,KAAW;AAClB,qBAAA,MAAM,EAAE,KAAW;AAAA,QAAA;AAE3B,YAAA,KAAK,SAAS,UAAU;AAChB,qBAAA,WAAW,EAAE,MAAME,sBAAc;AACjC,qBAAA,aAAa,EAAE,MAAMA,sBAAc;AACnC,qBAAA,WAAW,EAAE,MAAMA,sBAAc;AAEjC,qBAAA,aAAa,EAAE,MAAMA,sBAAc;AACnC,qBAAA,eAAe,EAAE,MAAMA,sBAAc;AACrC,qBAAA,aAAa,EAAE,MAAMA,sBAAc;AAAA,QAAA;AAExC,eAAA;AAAA,MAAA;AAAA,IACR,CACA;AACM,WAAA;AAAA,EAAA;AAET;;"}
|