@contember/engine-content-api 0.12.0-beta.2 → 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/acl/PermissionFactory.js +6 -6
- package/dist/src/acl/PermissionFactory.js.map +1 -1
- package/dist/src/acl/PermissionsByIdentityFactory.js +1 -1
- package/dist/src/acl/PermissionsByIdentityFactory.js.map +1 -1
- package/dist/src/acl/PredicatesInjector.js +1 -1
- package/dist/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/src/acl/VariableUtils.js +1 -1
- package/dist/src/acl/VariableUtils.js.map +1 -1
- package/dist/src/bridges/system/EntitiesSelector.js +2 -2
- package/dist/src/bridges/system/EntitiesSelector.js.map +1 -1
- package/dist/src/bridges/system/index.d.ts +0 -1
- package/dist/src/bridges/system/index.d.ts.map +1 -1
- package/dist/src/bridges/system/index.js +0 -1
- package/dist/src/bridges/system/index.js.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +2 -2
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +4 -4
- package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js +3 -3
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +1 -1
- package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/src/input-validation/ColumnValueResolver.js +1 -1
- package/dist/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/src/input-validation/EntityRulesResolver.js +5 -5
- package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/src/input-validation/QueryAstFactory.js +2 -2
- package/dist/src/input-validation/QueryAstFactory.js.map +1 -1
- package/dist/src/input-validation/ValidationContext.js +1 -1
- package/dist/src/input-validation/ValidationContext.js.map +1 -1
- package/dist/src/input-validation/ValidationEvaluation.js +8 -8
- package/dist/src/input-validation/ValidationEvaluation.js.map +1 -1
- package/dist/src/input-validation/dependencies/DependencyCollector.js +1 -1
- package/dist/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/src/input-validation/dependencies/DependencyMerger.js +1 -1
- package/dist/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
- package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js +1 -1
- package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/src/input-validation/preValidation/InputPreValidator.js +6 -6
- package/dist/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js +3 -3
- package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/src/inputProcessing/CreateInputVisitor.js +6 -6
- package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/src/inputProcessing/UniqueWhereExpander.js +3 -3
- package/dist/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
- package/dist/src/inputProcessing/UpdateInputVisitor.js +14 -14
- package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/src/introspection/IntrospectionSchemaFactory.js +4 -4
- package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
- package/dist/src/introspection/content-schema.graphql.js +1 -1
- package/dist/src/introspection/content-schema.graphql.js.map +1 -1
- package/dist/src/introspection/content-schema.types.d.ts +4 -1
- package/dist/src/introspection/content-schema.types.d.ts.map +1 -1
- package/dist/src/mapper/ColumnValue.js +2 -2
- package/dist/src/mapper/ColumnValue.js.map +1 -1
- package/dist/src/mapper/ErrorUtils.d.ts +2 -9
- package/dist/src/mapper/ErrorUtils.d.ts.map +1 -1
- package/dist/src/mapper/ErrorUtils.js +48 -37
- package/dist/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/src/mapper/JunctionTableManager.js +1 -1
- package/dist/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/src/mapper/Mapper.js +7 -7
- package/dist/src/mapper/Mapper.js.map +1 -1
- package/dist/src/mapper/MutationProcessorHelper.js +2 -2
- package/dist/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/src/mapper/Result.d.ts +4 -4
- package/dist/src/mapper/Result.d.ts.map +1 -1
- package/dist/src/mapper/Result.js +8 -8
- package/dist/src/mapper/Result.js.map +1 -1
- package/dist/src/mapper/delete/DeleteExecutor.d.ts.map +1 -1
- package/dist/src/mapper/delete/DeleteExecutor.js +5 -14
- package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/src/mapper/insert/InsertBuilder.js +5 -6
- package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/src/mapper/insert/Inserter.js +4 -4
- package/dist/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/src/mapper/insert/SqlCreateInputProcessor.js +17 -17
- package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/src/mapper/select/JoinBuilder.js +2 -2
- package/dist/src/mapper/select/JoinBuilder.js.map +1 -1
- package/dist/src/mapper/select/OrderByBuilder.js +2 -2
- package/dist/src/mapper/select/OrderByBuilder.js.map +1 -1
- package/dist/src/mapper/select/SelectBuilder.js +4 -4
- package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/src/mapper/select/WhereBuilder.js +2 -2
- package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/src/mapper/update/SqlUpdateInputProcessor.js +44 -44
- package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/src/mapper/update/UpdateBuilder.d.ts.map +1 -1
- package/dist/src/mapper/update/UpdateBuilder.js +8 -9
- package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/src/mapper/update/Updater.js +3 -3
- package/dist/src/mapper/update/Updater.js.map +1 -1
- package/dist/src/resolvers/ExecutionContainerFactory.js +2 -2
- package/dist/src/resolvers/ExecutionContainerFactory.js.map +1 -1
- package/dist/src/resolvers/GraphQlQueryAstFactory.js +7 -7
- package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/src/resolvers/MutationResolver.d.ts +6 -2
- package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
- package/dist/src/resolvers/MutationResolver.js +27 -13
- package/dist/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/src/resolvers/ReadHelpers.js +4 -4
- package/dist/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/src/resolvers/ReadResolver.js +3 -3
- package/dist/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/src/resolvers/ValidationResolver.js +1 -1
- package/dist/src/resolvers/ValidationResolver.js.map +1 -1
- package/dist/src/schema/ColumnTypeResolver.js +1 -1
- package/dist/src/schema/ColumnTypeResolver.js.map +1 -1
- package/dist/src/schema/ConditionTypeProvider.js +2 -2
- package/dist/src/schema/ConditionTypeProvider.js.map +1 -1
- package/dist/src/schema/EntityTypeProvider.js +10 -10
- package/dist/src/schema/EntityTypeProvider.js.map +1 -1
- package/dist/src/schema/EnumsProvider.js +2 -2
- package/dist/src/schema/EnumsProvider.js.map +1 -1
- package/dist/src/schema/GraphQlSchemaBuilder.d.ts.map +1 -1
- package/dist/src/schema/GraphQlSchemaBuilder.js +16 -1
- package/dist/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/src/schema/MutationProvider.js +2 -2
- package/dist/src/schema/MutationProvider.js.map +1 -1
- package/dist/src/schema/OrderByTypeProvider.js +4 -4
- package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/src/schema/ValidationQueriesProvider.js +1 -1
- package/dist/src/schema/ValidationQueriesProvider.js.map +1 -1
- package/dist/src/schema/WhereTypeProvider.js +10 -10
- package/dist/src/schema/WhereTypeProvider.js.map +1 -1
- package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +2 -2
- package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/src/schema/mutations/CreateEntityRelationInputProvider.js +2 -2
- package/dist/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
- package/dist/src/schema/mutations/EntityInputProvider.js +4 -4
- package/dist/src/schema/mutations/EntityInputProvider.js.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +7 -7
- package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/src/schema/mutations/UpdateEntityRelationInputProvider.js +2 -2
- package/dist/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
- package/dist/src/schema/utils.js +1 -1
- package/dist/src/schema/utils.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/uniqueWhereFields.js +1 -1
- package/dist/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/tests/cases/bugs/bug-filter-or.test.js +13 -13
- package/dist/tests/cases/bugs/bug-filter-or.test.js.map +1 -1
- package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js +8 -8
- package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js.map +1 -1
- package/dist/tests/cases/bugs/bug102.test.js +9 -9
- package/dist/tests/cases/bugs/bug102.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js +3 -3
- package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js +185 -0
- package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js +43 -0
- package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js +7 -7
- package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js +12 -12
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js +12 -12
- package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js +38 -0
- package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js +22 -22
- package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js +20 -20
- package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js +19 -19
- package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js +18 -18
- package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js +11 -11
- package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/basicInsert.test.js +11 -11
- package/dist/tests/cases/integration/graphQlRequests/insert/basicInsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.js +12 -12
- package/dist/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.js +21 -21
- package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.js +21 -21
- package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.js +17 -17
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.js +17 -17
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.js +11 -11
- package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.js +15 -15
- package/dist/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +38 -38
- package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.js +15 -15
- package/dist/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/containsQuery.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/filter/containsQuery.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js +18 -18
- package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.js +7 -7
- package/dist/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.js +18 -18
- package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/misc/transaction.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/query/misc/transaction.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.js +39 -39
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/advanced.test.js +73 -73
- package/dist/tests/cases/integration/graphQlRequests/query/relations/advanced.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js +29 -29
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js +20 -20
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.js +34 -34
- package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.js +65 -65
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.js +28 -28
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.js +39 -39
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.js +17 -17
- package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.js +8 -8
- package/dist/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/query/view/view.test.js +10 -10
- package/dist/tests/cases/integration/graphQlRequests/query/view/view.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +40 -40
- package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js +32 -32
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js +32 -32
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js +41 -41
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js +10 -10
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js +31 -31
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js +18 -18
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.js +11 -11
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js +15 -15
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js +14 -14
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js +21 -21
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js +26 -26
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js +50 -50
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js +29 -29
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js +15 -15
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js +26 -26
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js +50 -50
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js +13 -13
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js +17 -17
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js +16 -16
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js +31 -31
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js +26 -26
- package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js +40 -40
- package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.js +10 -10
- package/dist/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js +24 -24
- package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.js +9 -9
- package/dist/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.js +11 -11
- package/dist/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/required.test.js +26 -26
- package/dist/tests/cases/integration/graphQlRequests/validation/required.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.js +18 -18
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.js +4 -4
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.js +4 -4
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.js +4 -4
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.js +6 -6
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.js +4 -4
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.js +4 -4
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.js +5 -5
- package/dist/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/utils.js +4 -4
- package/dist/tests/cases/integration/graphQlRequests/validation/utils.js.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +3 -3
- package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-acl.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-basic.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-bug-66.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +5 -1
- package/dist/tests/cases/integration/graphQlSchema/schema-new-builder.gql +5 -1
- package/dist/tests/cases/unit/inputPreValidator.test.js +20 -20
- package/dist/tests/cases/unit/inputPreValidator.test.js.map +1 -1
- package/dist/tests/cases/unit/inputValidation.test.js +7 -7
- package/dist/tests/cases/unit/inputValidation.test.js.map +1 -1
- package/dist/tests/cases/unit/orderbyHelper.test.js +1 -1
- package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
- package/dist/tests/cases/unit/permissionMerger.test.js +1 -1
- package/dist/tests/cases/unit/permissionMerger.test.js.map +1 -1
- package/dist/tests/cases/unit/predicatesInjector.test.js +1 -1
- package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
- package/dist/tests/cases/unit/variableInjector.test.js +1 -1
- package/dist/tests/cases/unit/variableInjector.test.js.map +1 -1
- package/dist/tests/src/test.js +6 -6
- package/dist/tests/src/test.js.map +1 -1
- package/dist/tests/src/testGraphql.js +1 -1
- package/dist/tests/src/testGraphql.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/src/bridges/system/index.ts +0 -1
- package/src/introspection/content-schema.types.ts +5 -0
- package/src/mapper/ColumnValue.ts +1 -1
- package/src/mapper/ErrorUtils.ts +64 -41
- package/src/mapper/Mapper.ts +5 -5
- package/src/mapper/Result.ts +7 -4
- package/src/mapper/delete/DeleteExecutor.ts +3 -10
- package/src/mapper/insert/InsertBuilder.ts +1 -2
- package/src/mapper/insert/Inserter.ts +2 -2
- package/src/mapper/update/UpdateBuilder.ts +1 -2
- package/src/mapper/update/Updater.ts +1 -1
- package/src/resolvers/ExecutionContainerFactory.ts +1 -1
- package/src/resolvers/MutationResolver.ts +18 -2
- package/src/schema/GraphQlSchemaBuilder.ts +15 -3
- package/tests/cases/integration/graphQlDb/update/deferedConstraints.test.ts +208 -0
- package/tests/cases/integration/graphQlDb/update/failedDelete.test.ts +47 -0
- package/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.ts +40 -0
- package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-acl.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-basic.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +5 -1
- package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +5 -1
- package/dist/src/bridges/system/ContentEventApplier.d.ts +0 -50
- package/dist/src/bridges/system/ContentEventApplier.d.ts.map +0 -1
- package/dist/src/bridges/system/ContentEventApplier.js +0 -249
- package/dist/src/bridges/system/ContentEventApplier.js.map +0 -1
- package/src/bridges/system/ContentEventApplier.ts +0 -399
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-content-api",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-alpha.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -9,24 +9,24 @@
|
|
|
9
9
|
"test": "uvu dist/tests/cases/ \\.js$"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@contember/database": "^0.
|
|
13
|
-
"@contember/dic": "^0.
|
|
14
|
-
"@contember/engine-common": "^0.
|
|
15
|
-
"@contember/graphql-utils": "^0.
|
|
16
|
-
"@contember/schema": "^0.
|
|
17
|
-
"@contember/schema-utils": "^0.
|
|
12
|
+
"@contember/database": "^1.0.0-alpha.0",
|
|
13
|
+
"@contember/dic": "^1.0.0-alpha.0",
|
|
14
|
+
"@contember/engine-common": "^1.0.0-alpha.0",
|
|
15
|
+
"@contember/graphql-utils": "^1.0.0-alpha.0",
|
|
16
|
+
"@contember/schema": "^1.0.0-alpha.0",
|
|
17
|
+
"@contember/schema-utils": "^1.0.0-alpha.0",
|
|
18
18
|
"@graphql-tools/schema": "^7.1.5",
|
|
19
19
|
"graphql-tag": "^2.12.5"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@contember/database-tester": "^0.
|
|
23
|
-
"@contember/engine-api-tester": "^0.
|
|
24
|
-
"@contember/schema-definition": "^0.
|
|
22
|
+
"@contember/database-tester": "^1.0.0-alpha.0",
|
|
23
|
+
"@contember/engine-api-tester": "^1.0.0-alpha.0",
|
|
24
|
+
"@contember/schema-definition": "^1.0.0-alpha.0",
|
|
25
25
|
"@graphql-codegen/cli": "^1.15.2",
|
|
26
26
|
"@graphql-codegen/typescript": "^1.15.2",
|
|
27
27
|
"@graphql-codegen/typescript-operations": "^1.15.2",
|
|
28
28
|
"@graphql-codegen/typescript-resolvers": "^1.15.2",
|
|
29
|
-
"@types/node": "^
|
|
29
|
+
"@types/node": "^17.0.5",
|
|
30
30
|
"graphql": "^15.4.0",
|
|
31
31
|
"pg": "^8.5.0",
|
|
32
32
|
"uvu": "^0.5.1"
|
|
@@ -141,6 +141,10 @@ export type _ValidatorArgument = {
|
|
|
141
141
|
export type ResolverTypeWrapper<T> = Promise<T> | T
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
export type ResolverWithResolve<TResult, TParent, TContext, TArgs> = {
|
|
145
|
+
resolve: ResolverFn<TResult, TParent, TContext, TArgs>
|
|
146
|
+
}
|
|
147
|
+
|
|
144
148
|
export type LegacyStitchingResolver<TResult, TParent, TContext, TArgs> = {
|
|
145
149
|
fragment: string
|
|
146
150
|
resolve: ResolverFn<TResult, TParent, TContext, TArgs>
|
|
@@ -153,6 +157,7 @@ export type NewStitchingResolver<TResult, TParent, TContext, TArgs> = {
|
|
|
153
157
|
export type StitchingResolver<TResult, TParent, TContext, TArgs> = LegacyStitchingResolver<TResult, TParent, TContext, TArgs> | NewStitchingResolver<TResult, TParent, TContext, TArgs>
|
|
154
158
|
export type Resolver<TResult, TParent = {}, TContext = {}, TArgs = {}> =
|
|
155
159
|
| ResolverFn<TResult, TParent, TContext, TArgs>
|
|
160
|
+
| ResolverWithResolve<TResult, TParent, TContext, TArgs>
|
|
156
161
|
| StitchingResolver<TResult, TParent, TContext, TArgs>
|
|
157
162
|
|
|
158
163
|
export type ResolverFn<TResult, TParent, TContext, TArgs> = (
|
|
@@ -22,7 +22,7 @@ export const resolveGenericValue = <T>(value: Value.GenericValueLike<T>): Promis
|
|
|
22
22
|
export const resolveRowData = async <E>(
|
|
23
23
|
values: ColumnValue<E>[],
|
|
24
24
|
): Promise<ResolvedColumnValue<Exclude<E, undefined>>[]> => {
|
|
25
|
-
const valuePromises = values.map(async it => ({ ...it, resolvedValue: await it.value }))
|
|
25
|
+
const valuePromises = values.map(async (it): Promise<ResolvedColumnValue<E | undefined>> => ({ ...it, resolvedValue: await it.value }))
|
|
26
26
|
const settledValues = await Promise.allSettled(valuePromises)
|
|
27
27
|
const failed = getRejections(settledValues)
|
|
28
28
|
if (failed.length > 0) {
|
package/src/mapper/ErrorUtils.ts
CHANGED
|
@@ -11,64 +11,87 @@ import {
|
|
|
11
11
|
import * as Database from '@contember/database'
|
|
12
12
|
import { UniqueWhereError } from '../inputProcessing'
|
|
13
13
|
import { Model } from '@contember/schema'
|
|
14
|
-
import {
|
|
15
|
-
import { isOwningRelation, NamingHelper } from '@contember/schema-utils'
|
|
14
|
+
import { isOwningRelation, isRelation, NamingHelper } from '@contember/schema-utils'
|
|
16
15
|
import RelationType = Model.RelationType
|
|
17
16
|
|
|
18
|
-
export class EnrichedError {
|
|
19
|
-
constructor(
|
|
20
|
-
public readonly entity: Model.Entity,
|
|
21
|
-
public readonly values: ResolvedColumnValue[] | null,
|
|
22
|
-
public readonly originalError: any,
|
|
23
|
-
) {}
|
|
24
|
-
}
|
|
25
17
|
|
|
26
|
-
const
|
|
27
|
-
for (const
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
const findUniqueConstraint = (schema: Model.Schema, constraintName: string): [Model.Entity, Model.UniqueConstraint] | [null, null] => {
|
|
19
|
+
for (const entity of Object.values(schema.entities)) {
|
|
20
|
+
for (const constraint of Object.values(entity.unique)) {
|
|
21
|
+
if (constraint.name === constraintName) {
|
|
22
|
+
return [entity, constraint]
|
|
23
|
+
}
|
|
30
24
|
}
|
|
31
25
|
}
|
|
32
|
-
for (const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
for (const entity of Object.values(schema.entities)) {
|
|
27
|
+
for (const field of Object.values(entity.fields)) {
|
|
28
|
+
if (
|
|
29
|
+
field.type === RelationType.OneHasOne &&
|
|
30
|
+
isOwningRelation(field) &&
|
|
31
|
+
NamingHelper.createUniqueConstraintName(entity.name, [field.name]) === constraintName
|
|
32
|
+
) {
|
|
33
|
+
return [entity, { name: constraintName, fields: [field.name] }]
|
|
34
|
+
}
|
|
39
35
|
}
|
|
40
36
|
}
|
|
41
|
-
return null
|
|
37
|
+
return [null, null]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type RelationInfo = {
|
|
41
|
+
owningEntity: Model.Entity
|
|
42
|
+
owningRelation: Model.Relation
|
|
43
|
+
targetEntity: Model.Entity
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
const findForeignConstraint = (schema: Model.Schema, constraintName: string): RelationInfo | null => {
|
|
47
|
+
for (const owningEntity of Object.values(schema.entities)) {
|
|
48
|
+
for (const field of Object.values(owningEntity.fields)) {
|
|
49
|
+
if (!isRelation(field) || !isOwningRelation(field) || !('joiningColumn' in field)) {
|
|
50
|
+
continue
|
|
51
|
+
}
|
|
52
|
+
const targetEntity = schema.entities[field.target]
|
|
53
|
+
const fkName = NamingHelper.createForeignKeyName(
|
|
54
|
+
owningEntity.tableName,
|
|
55
|
+
field.joiningColumn.columnName,
|
|
56
|
+
targetEntity.tableName,
|
|
57
|
+
targetEntity.primaryColumn,
|
|
58
|
+
)
|
|
59
|
+
if (fkName === constraintName) {
|
|
60
|
+
return { owningEntity, targetEntity, owningRelation: field }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
51
63
|
}
|
|
64
|
+
return null
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const convertError = (schema: Model.Schema, e: any): MutationResult => {
|
|
68
|
+
|
|
52
69
|
if (e instanceof Database.NotNullViolationError) {
|
|
53
70
|
return new MutationConstraintViolationError([], ConstraintType.notNull, e.originalMessage, [
|
|
54
71
|
MutationResultHint.sqlError,
|
|
55
72
|
])
|
|
56
73
|
}
|
|
57
74
|
if (e instanceof Database.ForeignKeyViolationError) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
const relationInfo = e.constraint ? findForeignConstraint(schema, e.constraint) : null
|
|
76
|
+
const violationDetail: string = 'detail' in e.previous ? e.previous.detail : ''
|
|
77
|
+
const matchResult = violationDetail.match(/^Key \(.+\)=\((.+)\) is still referenced from table/)
|
|
78
|
+
const message = relationInfo
|
|
79
|
+
? `Cannot delete ${matchResult ? `row ${matchResult[1]}` : 'unknown row'}`
|
|
80
|
+
+ ` of entity ${relationInfo.targetEntity.name},`
|
|
81
|
+
+ ` because it is still referenced from ${relationInfo.owningEntity.name}::${relationInfo.owningRelation.name}.`
|
|
82
|
+
+ ' This is possibly caused by ACL denial or by missing "on delete cascade"'
|
|
83
|
+
: e.originalMessage
|
|
84
|
+
return new MutationConstraintViolationError([], ConstraintType.foreignKey, message, [MutationResultHint.sqlError])
|
|
61
85
|
}
|
|
62
86
|
if (e instanceof Database.UniqueViolationError) {
|
|
63
|
-
const constraint =
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const message = constraint
|
|
68
|
-
? `Value (${
|
|
69
|
-
`
|
|
87
|
+
const [entity, constraint] = e.constraint ? findUniqueConstraint(schema, e.constraint) : [null, null]
|
|
88
|
+
const violationDetail: string = 'detail' in e.previous ? e.previous.detail : ''
|
|
89
|
+
const matchResult = violationDetail.match(/^Key \(.+\)=\((.+)\) already exists\.$/)
|
|
90
|
+
const values = matchResult?.[1]
|
|
91
|
+
const message = constraint && entity
|
|
92
|
+
? `${values ? `Value (${values})` : 'Unknown value'}` +
|
|
93
|
+
` already exists in unique columns (${constraint.fields.join(', ')}) on entity ${entity.name}`
|
|
70
94
|
: e.originalMessage
|
|
71
|
-
|
|
72
95
|
const paths = constraint ? constraint.fields.map(it => [{ field: it }]) : []
|
|
73
96
|
return new MutationConstraintViolationError(paths, ConstraintType.uniqueKey, message, [MutationResultHint.sqlError])
|
|
74
97
|
}
|
|
@@ -92,10 +115,10 @@ export const convertError = (e: any): MutationResult => {
|
|
|
92
115
|
throw e
|
|
93
116
|
}
|
|
94
117
|
|
|
95
|
-
export const tryMutation = async (cb: () => Promise<MutationResultList>): Promise<MutationResultList> => {
|
|
118
|
+
export const tryMutation = async (schema: Model.Schema, cb: () => Promise<MutationResultList>): Promise<MutationResultList> => {
|
|
96
119
|
try {
|
|
97
120
|
return await cb()
|
|
98
121
|
} catch (e) {
|
|
99
|
-
return [convertError(e)]
|
|
122
|
+
return [convertError(schema, e)]
|
|
100
123
|
}
|
|
101
124
|
}
|
package/src/mapper/Mapper.ts
CHANGED
|
@@ -163,7 +163,7 @@ export class Mapper {
|
|
|
163
163
|
if (entity.view) {
|
|
164
164
|
throw new ImplementationException()
|
|
165
165
|
}
|
|
166
|
-
return tryMutation(() =>
|
|
166
|
+
return tryMutation(this.schema, () =>
|
|
167
167
|
this.inserter.insert(this, entity, data, id => {
|
|
168
168
|
const where = { [entity.primary]: id }
|
|
169
169
|
this.primaryKeyCache[this.hashWhere(entity.name, where)] = id
|
|
@@ -180,7 +180,7 @@ export class Mapper {
|
|
|
180
180
|
if (entity.view) {
|
|
181
181
|
throw new ImplementationException()
|
|
182
182
|
}
|
|
183
|
-
return tryMutation(async () => {
|
|
183
|
+
return tryMutation(this.schema, async () => {
|
|
184
184
|
const primaryValue = await this.getPrimaryValue(entity, by)
|
|
185
185
|
if (primaryValue === undefined) {
|
|
186
186
|
return [new MutationEntryNotFoundError([], by)]
|
|
@@ -195,7 +195,7 @@ export class Mapper {
|
|
|
195
195
|
predicateFields: string[],
|
|
196
196
|
builderCb: (builder: UpdateBuilder) => void,
|
|
197
197
|
): Promise<MutationResultList> {
|
|
198
|
-
return tryMutation(async () => {
|
|
198
|
+
return tryMutation(this.schema, async () => {
|
|
199
199
|
const primaryValue = await this.getPrimaryValue(entity, by)
|
|
200
200
|
if (primaryValue === undefined) {
|
|
201
201
|
return [new MutationEntryNotFoundError([], by)]
|
|
@@ -214,7 +214,7 @@ export class Mapper {
|
|
|
214
214
|
if (entity.view) {
|
|
215
215
|
throw new ImplementationException()
|
|
216
216
|
}
|
|
217
|
-
return tryMutation(async () => {
|
|
217
|
+
return tryMutation(this.schema, async () => {
|
|
218
218
|
const primaryValue = await this.getPrimaryValue(entity, by)
|
|
219
219
|
if (primaryValue === undefined) {
|
|
220
220
|
return await this.inserter.insert(this, entity, create, id => {
|
|
@@ -234,7 +234,7 @@ export class Mapper {
|
|
|
234
234
|
if (entity.view) {
|
|
235
235
|
throw new ImplementationException()
|
|
236
236
|
}
|
|
237
|
-
return tryMutation(() => this.deleteExecutor.execute(this, entity, by, filter))
|
|
237
|
+
return tryMutation(this.schema, () => this.deleteExecutor.execute(this, entity, by, filter))
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
public async connectJunction(
|
package/src/mapper/Result.ts
CHANGED
|
@@ -177,10 +177,12 @@ export class MutationEntryNotFoundError implements MutationResultInterface {
|
|
|
177
177
|
// possibly denied by acl
|
|
178
178
|
export class MutationNoResultError implements MutationResultInterface {
|
|
179
179
|
result = MutationResultType.noResultError as const
|
|
180
|
-
hints: MutationResultHint[] = []
|
|
181
|
-
message = undefined
|
|
182
180
|
|
|
183
|
-
constructor(
|
|
181
|
+
constructor(
|
|
182
|
+
public readonly paths: Path[],
|
|
183
|
+
public readonly message?: string,
|
|
184
|
+
public readonly hints: MutationResultHint[] = [],
|
|
185
|
+
) {}
|
|
184
186
|
}
|
|
185
187
|
|
|
186
188
|
export const prependPath = (path: Path, results: MutationResultList): MutationResultList =>
|
|
@@ -207,6 +209,7 @@ export const flattenResult = (result: (MutationResultList | MutationResultList[]
|
|
|
207
209
|
export type ResultListNotFlatten = MutationResultList | MutationResultList[]
|
|
208
210
|
|
|
209
211
|
export const collectResults = async (
|
|
212
|
+
schema: Model.Schema,
|
|
210
213
|
mainPromise: Promise<ResultListNotFlatten | undefined> | undefined,
|
|
211
214
|
otherPromises: (Promise<ResultListNotFlatten | undefined> | undefined)[],
|
|
212
215
|
): Promise<MutationResultList> => {
|
|
@@ -215,7 +218,7 @@ export const collectResults = async (
|
|
|
215
218
|
.filter((it): it is Promise<ResultListNotFlatten> => !!it)
|
|
216
219
|
.map(it =>
|
|
217
220
|
it //
|
|
218
|
-
.catch(e => [convertError(e)])
|
|
221
|
+
.catch(e => [convertError(schema, e)])
|
|
219
222
|
.then(value => ({ value, index: index++ })),
|
|
220
223
|
)
|
|
221
224
|
const results = await Promise.allSettled(allPromises)
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
MutationEntryNotFoundError,
|
|
11
11
|
MutationNoResultError,
|
|
12
12
|
MutationNothingToDo,
|
|
13
|
+
MutationResultHint,
|
|
13
14
|
MutationResultList,
|
|
14
15
|
NothingToDoReason,
|
|
15
16
|
} from '../Result'
|
|
@@ -35,7 +36,6 @@ export class DeleteExecutor {
|
|
|
35
36
|
filter?: Input.OptionalWhere,
|
|
36
37
|
): Promise<MutationResultList> {
|
|
37
38
|
return mapper.mutex.execute(async () => {
|
|
38
|
-
const db = mapper.db
|
|
39
39
|
await mapper.constraintHelper.setFkConstraintsDeferred()
|
|
40
40
|
const primaryValue = await mapper.getPrimaryValue(entity, by)
|
|
41
41
|
if (!primaryValue) {
|
|
@@ -50,15 +50,8 @@ export class DeleteExecutor {
|
|
|
50
50
|
return [new MutationNoResultError([])]
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return [new MutationDeleteOk([], entity, primaryValue)]
|
|
56
|
-
} catch (e) {
|
|
57
|
-
if (e instanceof ForeignKeyViolationError) {
|
|
58
|
-
return [new MutationNoResultError([])]
|
|
59
|
-
}
|
|
60
|
-
throw e
|
|
61
|
-
}
|
|
53
|
+
await mapper.constraintHelper.setFkConstraintsImmediate()
|
|
54
|
+
return [new MutationDeleteOk([], entity, primaryValue)]
|
|
62
55
|
})
|
|
63
56
|
}
|
|
64
57
|
|
|
@@ -5,7 +5,6 @@ import { getColumnName, getColumnType } from '@contember/schema-utils'
|
|
|
5
5
|
import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
|
|
6
6
|
import { ImplementationException } from '../../exception'
|
|
7
7
|
import { AbortInsert } from './Inserter'
|
|
8
|
-
import { EnrichedError } from '../ErrorUtils'
|
|
9
8
|
|
|
10
9
|
export interface InsertResult {
|
|
11
10
|
values: ResolvedColumnValue[]
|
|
@@ -79,7 +78,7 @@ export class InsertBuilder {
|
|
|
79
78
|
return { values: resolvedData as ResolvedColumnValue[], executed: true, primaryValue: result, aborted: false }
|
|
80
79
|
} catch (e) {
|
|
81
80
|
this.resolver(null)
|
|
82
|
-
throw
|
|
81
|
+
throw e
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
}
|
|
@@ -55,7 +55,7 @@ export class Inserter {
|
|
|
55
55
|
new MutationCreateOk([], entity, primary, data, values)
|
|
56
56
|
const insertPromise = this.executeInsert(insertBuilder, mapper.db, okResultFactory)
|
|
57
57
|
|
|
58
|
-
return await collectResults(insertPromise, Object.values(promises))
|
|
58
|
+
return await collectResults(this.schema, insertPromise, Object.values(promises))
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
private async executeInsert(
|
|
@@ -63,7 +63,7 @@ export class Inserter {
|
|
|
63
63
|
db: Client,
|
|
64
64
|
okResultFactory: (primary: Value.PrimaryValue, values: RowValues) => MutationCreateOk,
|
|
65
65
|
): Promise<MutationResultList> {
|
|
66
|
-
return tryMutation(async () => {
|
|
66
|
+
return tryMutation(this.schema, async () => {
|
|
67
67
|
const result = await insertBuilder.execute(db)
|
|
68
68
|
if (result.aborted) {
|
|
69
69
|
return [new MutationNothingToDo([], NothingToDoReason.aborted)]
|
|
@@ -5,7 +5,6 @@ import { Client, Operator, QueryBuilder, UpdateBuilder as DbUpdateBuilder, Value
|
|
|
5
5
|
import { PathFactory, WhereBuilder } from '../select'
|
|
6
6
|
import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
|
|
7
7
|
import { AbortUpdate } from './Updater'
|
|
8
|
-
import { EnrichedError } from '../ErrorUtils'
|
|
9
8
|
|
|
10
9
|
export interface UpdateResult {
|
|
11
10
|
values: ResolvedColumnValue[]
|
|
@@ -120,7 +119,7 @@ export class UpdateBuilder {
|
|
|
120
119
|
return { values: resolvedData as ResolvedColumnValue[], affectedRows: result, executed: true, aborted: false }
|
|
121
120
|
} catch (e) {
|
|
122
121
|
this.resolver(null)
|
|
123
|
-
throw
|
|
122
|
+
throw e
|
|
124
123
|
}
|
|
125
124
|
}
|
|
126
125
|
}
|
|
@@ -52,7 +52,7 @@ export class Updater {
|
|
|
52
52
|
const okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, data, values)
|
|
53
53
|
const mutationResultPromise = Updater.executeUpdate(updateBuilder, mapper.db, okResultFactory)
|
|
54
54
|
|
|
55
|
-
return await collectResults(mutationResultPromise, Object.values(promises))
|
|
55
|
+
return await collectResults(this.schema, mutationResultPromise, Object.values(promises))
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
public async updateCb(
|
|
@@ -64,7 +64,7 @@ export class ExecutionContainerFactory {
|
|
|
64
64
|
.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector }) =>
|
|
65
65
|
new InputPreValidator(this.schema.model, entityRulesResolver, columnValueResolver, dataSelector))
|
|
66
66
|
.addService('mutationResolver', ({ db, mapperFactory, inputPreValidator, queryAstFactory }) =>
|
|
67
|
-
new MutationResolver(db, mapperFactory, this.setupSystemVariables, inputPreValidator, queryAstFactory))
|
|
67
|
+
new MutationResolver(this.schema.model, db, mapperFactory, this.setupSystemVariables, inputPreValidator, queryAstFactory))
|
|
68
68
|
.addService('validationResolver', ({ inputPreValidator, db, mapperFactory }) =>
|
|
69
69
|
new ValidationResolver(db, mapperFactory, inputPreValidator))
|
|
70
70
|
.build()
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
MapperFactory,
|
|
9
9
|
MutationResultHint,
|
|
10
10
|
MutationResultList,
|
|
11
|
-
MutationResultType,
|
|
11
|
+
MutationResultType, tryMutation,
|
|
12
12
|
} from '../mapper'
|
|
13
13
|
import { ValidationResolver } from './ValidationResolver'
|
|
14
14
|
import { GraphQLResolveInfo } from 'graphql'
|
|
@@ -23,8 +23,11 @@ import { executeReadOperations } from './ReadHelpers'
|
|
|
23
23
|
|
|
24
24
|
type WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>
|
|
25
25
|
|
|
26
|
+
type TransactionOptions = { deferForeignKeyConstraints?: boolean }
|
|
27
|
+
|
|
26
28
|
export class MutationResolver {
|
|
27
29
|
constructor(
|
|
30
|
+
private readonly schema: Model.Schema,
|
|
28
31
|
private readonly db: Client,
|
|
29
32
|
private readonly mapperFactory: MapperFactory,
|
|
30
33
|
private readonly systemVariablesSetup: (db: Client) => Promise<void>,
|
|
@@ -32,7 +35,7 @@ export class MutationResolver {
|
|
|
32
35
|
private readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,
|
|
33
36
|
) {}
|
|
34
37
|
|
|
35
|
-
public async resolveTransaction(info: GraphQLResolveInfo): Promise<Result.TransactionResult> {
|
|
38
|
+
public async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {
|
|
36
39
|
const queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {
|
|
37
40
|
return (
|
|
38
41
|
(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value)) ||
|
|
@@ -57,6 +60,9 @@ export class MutationResolver {
|
|
|
57
60
|
}))
|
|
58
61
|
|
|
59
62
|
return this.transaction(async (mapper, trx) => {
|
|
63
|
+
if (options?.deferForeignKeyConstraints) {
|
|
64
|
+
await mapper.constraintHelper.setFkConstraintsDeferred()
|
|
65
|
+
}
|
|
60
66
|
const validationResult: Record<string, Result.MutationFieldResult> = {}
|
|
61
67
|
const validationErrors: Result.ValidationError[] = []
|
|
62
68
|
for (const field of queryAst.fields) {
|
|
@@ -181,6 +187,16 @@ export class MutationResolver {
|
|
|
181
187
|
}
|
|
182
188
|
trxResult[field.alias] = result
|
|
183
189
|
}
|
|
190
|
+
if (options?.deferForeignKeyConstraints) {
|
|
191
|
+
const constraintsResult = await tryMutation(this.schema, async () => {
|
|
192
|
+
await mapper.constraintHelper.setFkConstraintsImmediate()
|
|
193
|
+
return []
|
|
194
|
+
})
|
|
195
|
+
const errorResponse = this.createErrorResponse(constraintsResult)
|
|
196
|
+
if (errorResponse) {
|
|
197
|
+
return { ...errorResponse, ...validationResult }
|
|
198
|
+
}
|
|
199
|
+
}
|
|
184
200
|
|
|
185
201
|
return { ok: true, errors: [], validation: { valid: true, errors: [] }, ...trxResult }
|
|
186
202
|
})
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
GraphQLNonNull,
|
|
5
5
|
GraphQLObjectType,
|
|
6
6
|
GraphQLSchema,
|
|
7
|
-
GraphQLString,
|
|
7
|
+
GraphQLString, GraphQLInputObjectType,
|
|
8
8
|
} from 'graphql'
|
|
9
9
|
import { Model } from '@contember/schema'
|
|
10
10
|
import { MutationProvider } from './MutationProvider'
|
|
@@ -59,6 +59,16 @@ export class GraphQlSchemaBuilder {
|
|
|
59
59
|
})
|
|
60
60
|
if (mutations.size > 0) {
|
|
61
61
|
mutations.set('transaction', {
|
|
62
|
+
args: {
|
|
63
|
+
options: {
|
|
64
|
+
type: new GraphQLInputObjectType({
|
|
65
|
+
name: 'MutationTransactionOptions',
|
|
66
|
+
fields: {
|
|
67
|
+
deferForeignKeyConstraints: { type: GraphQLBoolean },
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
},
|
|
71
|
+
},
|
|
62
72
|
type: new GraphQLNonNull(
|
|
63
73
|
new GraphQLObjectType({
|
|
64
74
|
name: 'MutationTransaction',
|
|
@@ -76,9 +86,11 @@ export class GraphQlSchemaBuilder {
|
|
|
76
86
|
},
|
|
77
87
|
}),
|
|
78
88
|
),
|
|
79
|
-
resolve: async (parent, args, context: Context, info) => {
|
|
89
|
+
resolve: async (parent, args: { options?: { deferForeignKeyConstraints?: boolean } }, context: Context, info) => {
|
|
80
90
|
return context.timer(`GraphQL.mutation.${info.fieldName}`, () =>
|
|
81
|
-
context.executionContainer.mutationResolver.resolveTransaction(info
|
|
91
|
+
context.executionContainer.mutationResolver.resolveTransaction(info, {
|
|
92
|
+
deferForeignKeyConstraints: args.options?.deferForeignKeyConstraints ?? false,
|
|
93
|
+
}),
|
|
82
94
|
)
|
|
83
95
|
},
|
|
84
96
|
})
|