@contember/engine-content-api 1.2.0-alpha.8 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/dist/src/acl/EvaluatedPredicateReplacer.d.ts +2 -3
  2. package/dist/src/acl/EvaluatedPredicateReplacer.d.ts.map +1 -1
  3. package/dist/src/acl/EvaluatedPredicateReplacer.js +5 -14
  4. package/dist/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
  5. package/dist/src/acl/PermissionFactory.d.ts.map +1 -1
  6. package/dist/src/acl/PermissionFactory.js +15 -11
  7. package/dist/src/acl/PermissionFactory.js.map +1 -1
  8. package/dist/src/acl/PredicateFactory.d.ts +9 -3
  9. package/dist/src/acl/PredicateFactory.d.ts.map +1 -1
  10. package/dist/src/acl/PredicateFactory.js +47 -36
  11. package/dist/src/acl/PredicateFactory.js.map +1 -1
  12. package/dist/src/acl/PredicatesInjector.d.ts +1 -1
  13. package/dist/src/acl/PredicatesInjector.d.ts.map +1 -1
  14. package/dist/src/acl/PredicatesInjector.js +13 -18
  15. package/dist/src/acl/PredicatesInjector.js.map +1 -1
  16. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts +0 -1
  17. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts.map +1 -1
  18. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +26 -23
  19. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
  20. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts +1 -1
  21. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
  22. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +1 -1
  23. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  24. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts +5 -4
  25. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
  26. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js +11 -14
  27. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
  28. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.d.ts.map +1 -1
  29. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js +18 -14
  30. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
  31. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts +3 -3
  32. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
  33. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +3 -3
  34. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
  35. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts +5 -4
  36. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
  37. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js +11 -15
  38. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
  39. package/dist/src/input-validation/ColumnValueResolver.d.ts +4 -3
  40. package/dist/src/input-validation/ColumnValueResolver.d.ts.map +1 -1
  41. package/dist/src/input-validation/ColumnValueResolver.js.map +1 -1
  42. package/dist/src/input-validation/EntityRulesResolver.js +4 -4
  43. package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
  44. package/dist/src/input-validation/QueryAstFactory.js +1 -1
  45. package/dist/src/input-validation/QueryAstFactory.js.map +1 -1
  46. package/dist/src/input-validation/ValidationDataSelector.js +1 -1
  47. package/dist/src/input-validation/ValidationDataSelector.js.map +1 -1
  48. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +7 -8
  49. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  50. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  51. package/dist/src/input-validation/preValidation/InputPreValidator.js +4 -4
  52. package/dist/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  53. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +7 -8
  54. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  55. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  56. package/dist/src/inputProcessing/CreateInputProcessor.d.ts +8 -9
  57. package/dist/src/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  58. package/dist/src/inputProcessing/CreateInputVisitor.d.ts +7 -7
  59. package/dist/src/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  60. package/dist/src/inputProcessing/CreateInputVisitor.js +15 -46
  61. package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  62. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts +8 -9
  63. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  64. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts +7 -7
  65. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  66. package/dist/src/inputProcessing/UpdateInputVisitor.js +13 -28
  67. package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  68. package/dist/src/inputProcessing/index.d.ts +0 -1
  69. package/dist/src/inputProcessing/index.d.ts.map +1 -1
  70. package/dist/src/inputProcessing/index.js +0 -1
  71. package/dist/src/inputProcessing/index.js.map +1 -1
  72. package/dist/src/introspection/IntrospectionSchemaFactory.js +7 -7
  73. package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  74. package/dist/src/mapper/ErrorUtils.d.ts.map +1 -1
  75. package/dist/src/mapper/ErrorUtils.js +2 -2
  76. package/dist/src/mapper/ErrorUtils.js.map +1 -1
  77. package/dist/src/mapper/JunctionTableManager.js.map +1 -1
  78. package/dist/src/mapper/Mapper.d.ts +6 -6
  79. package/dist/src/mapper/Mapper.d.ts.map +1 -1
  80. package/dist/src/mapper/Mapper.js +26 -21
  81. package/dist/src/mapper/Mapper.js.map +1 -1
  82. package/dist/src/mapper/MapperContainer.d.ts.map +1 -1
  83. package/dist/src/mapper/MapperContainer.js +4 -4
  84. package/dist/src/mapper/MapperContainer.js.map +1 -1
  85. package/dist/src/mapper/Result.d.ts.map +1 -1
  86. package/dist/src/mapper/Result.js +2 -4
  87. package/dist/src/mapper/Result.js.map +1 -1
  88. package/dist/src/mapper/delete/DeleteExecutor.js +6 -6
  89. package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
  90. package/dist/src/mapper/insert/InsertBuilder.d.ts +1 -1
  91. package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
  92. package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
  93. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts +4 -2
  94. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  95. package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  96. package/dist/src/mapper/select/JoinVisitor.d.ts +6 -6
  97. package/dist/src/mapper/select/JoinVisitor.d.ts.map +1 -1
  98. package/dist/src/mapper/select/JoinVisitor.js +6 -6
  99. package/dist/src/mapper/select/JoinVisitor.js.map +1 -1
  100. package/dist/src/mapper/select/Path.d.ts +1 -0
  101. package/dist/src/mapper/select/Path.d.ts.map +1 -1
  102. package/dist/src/mapper/select/Path.js +4 -1
  103. package/dist/src/mapper/select/Path.js.map +1 -1
  104. package/dist/src/mapper/select/RelationFetcher.d.ts +11 -19
  105. package/dist/src/mapper/select/RelationFetcher.d.ts.map +1 -1
  106. package/dist/src/mapper/select/RelationFetcher.js +34 -25
  107. package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
  108. package/dist/src/mapper/select/SelectBuilder.d.ts +4 -1
  109. package/dist/src/mapper/select/SelectBuilder.d.ts.map +1 -1
  110. package/dist/src/mapper/select/SelectBuilder.js +52 -12
  111. package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
  112. package/dist/src/mapper/select/SelectBuilderFactory.d.ts +2 -1
  113. package/dist/src/mapper/select/SelectBuilderFactory.d.ts.map +1 -1
  114. package/dist/src/mapper/select/SelectExecutionHandler.d.ts +16 -4
  115. package/dist/src/mapper/select/SelectExecutionHandler.d.ts.map +1 -1
  116. package/dist/src/mapper/select/SelectHydrator.d.ts +3 -2
  117. package/dist/src/mapper/select/SelectHydrator.d.ts.map +1 -1
  118. package/dist/src/mapper/select/SelectHydrator.js +6 -9
  119. package/dist/src/mapper/select/SelectHydrator.js.map +1 -1
  120. package/dist/src/mapper/select/WhereBuilder.d.ts +8 -4
  121. package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
  122. package/dist/src/mapper/select/WhereBuilder.js +137 -35
  123. package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
  124. package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts +10 -8
  125. package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  126. package/dist/src/mapper/select/handlers/FieldsVisitor.js +129 -94
  127. package/dist/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  128. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
  129. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js +1 -1
  130. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  131. package/dist/src/mapper/select/handlers/MetaHandler.d.ts.map +1 -1
  132. package/dist/src/mapper/select/handlers/MetaHandler.js +6 -11
  133. package/dist/src/mapper/select/handlers/MetaHandler.js.map +1 -1
  134. package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts.map +1 -1
  135. package/dist/src/mapper/select/optimizer/ConditionOptimizer.js +6 -0
  136. package/dist/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
  137. package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts +9 -1
  138. package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -1
  139. package/dist/src/mapper/select/optimizer/WhereOptimizer.js +127 -13
  140. package/dist/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
  141. package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts +3 -0
  142. package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -0
  143. package/dist/src/mapper/select/optimizer/WhereReplacer.js +46 -0
  144. package/dist/src/mapper/select/optimizer/WhereReplacer.js.map +1 -0
  145. package/dist/src/mapper/select/optimizer/helpers.d.ts +1 -1
  146. package/dist/src/mapper/select/optimizer/helpers.d.ts.map +1 -1
  147. package/dist/src/mapper/select/optimizer/helpers.js +8 -1
  148. package/dist/src/mapper/select/optimizer/helpers.js.map +1 -1
  149. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts +2 -3
  150. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  151. package/dist/src/mapper/update/SqlUpdateInputProcessor.js +3 -4
  152. package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  153. package/dist/src/mapper/update/UpdateBuilder.js +3 -3
  154. package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
  155. package/dist/src/resolvers/ExecutionContainerFactory.d.ts +1 -1
  156. package/dist/src/resolvers/ExecutionContainerFactory.d.ts.map +1 -1
  157. package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts +1 -2
  158. package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
  159. package/dist/src/resolvers/GraphQlQueryAstFactory.js +2 -2
  160. package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  161. package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
  162. package/dist/src/resolvers/MutationResolver.js +13 -2
  163. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  164. package/dist/src/resolvers/ReadHelpers.js +3 -3
  165. package/dist/src/resolvers/ReadHelpers.js.map +1 -1
  166. package/dist/src/resolvers/ReadResolver.js +2 -2
  167. package/dist/src/resolvers/ReadResolver.js.map +1 -1
  168. package/dist/src/schema/EnumsProvider.d.ts.map +1 -1
  169. package/dist/src/schema/EnumsProvider.js +1 -2
  170. package/dist/src/schema/EnumsProvider.js.map +1 -1
  171. package/dist/src/schema/FieldAccessVisitor.d.ts +2 -2
  172. package/dist/src/schema/FieldAccessVisitor.d.ts.map +1 -1
  173. package/dist/src/schema/FieldAccessVisitor.js +2 -2
  174. package/dist/src/schema/FieldAccessVisitor.js.map +1 -1
  175. package/dist/src/schema/OrderByTypeProvider.d.ts +1 -1
  176. package/dist/src/schema/OrderByTypeProvider.d.ts.map +1 -1
  177. package/dist/src/schema/OrderByTypeProvider.js +2 -2
  178. package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
  179. package/dist/src/schema/WhereTypeProvider.d.ts +1 -2
  180. package/dist/src/schema/WhereTypeProvider.d.ts.map +1 -1
  181. package/dist/src/schema/WhereTypeProvider.js +4 -4
  182. package/dist/src/schema/WhereTypeProvider.js.map +1 -1
  183. package/dist/src/schema/entities/FieldArgsVisitor.d.ts +4 -5
  184. package/dist/src/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
  185. package/dist/src/schema/entities/FieldArgsVisitor.js +3 -3
  186. package/dist/src/schema/entities/FieldArgsVisitor.js.map +1 -1
  187. package/dist/src/schema/entities/FieldTypeVisitor.d.ts +3 -3
  188. package/dist/src/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
  189. package/dist/src/schema/entities/FieldTypeVisitor.js +3 -3
  190. package/dist/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  191. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts +3 -3
  192. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
  193. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +3 -3
  194. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  195. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
  196. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  197. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +6 -6
  198. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  199. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +3 -3
  200. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  201. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +5 -5
  202. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  203. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +10 -4
  204. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
  205. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +3 -3
  206. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  207. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
  208. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  209. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +6 -6
  210. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  211. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +2 -2
  212. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  213. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +2 -2
  214. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  215. package/dist/src/schema/utils.d.ts +1 -1
  216. package/dist/src/schema/utils.d.ts.map +1 -1
  217. package/dist/src/tsconfig.tsbuildinfo +1 -1
  218. package/dist/src/utils/object.d.ts.map +1 -1
  219. package/dist/src/utils/object.js +3 -4
  220. package/dist/src/utils/object.js.map +1 -1
  221. package/dist/src/utils/uniqueWhereFields.js +3 -3
  222. package/dist/src/utils/uniqueWhereFields.js.map +1 -1
  223. package/dist/tests/cases/bugs/bug102.test.js +6 -6
  224. package/dist/tests/cases/bugs/bug102.test.js.map +1 -1
  225. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +5 -5
  226. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
  227. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js +5 -5
  228. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js.map +1 -1
  229. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js +5 -5
  230. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js.map +1 -1
  231. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js +5 -5
  232. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js.map +1 -1
  233. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js +5 -5
  234. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js.map +1 -1
  235. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js +5 -5
  236. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js.map +1 -1
  237. package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js +51 -4
  238. package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js.map +1 -1
  239. package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +26 -25
  240. package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
  241. package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js +9 -6
  242. package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js.map +1 -1
  243. package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.d.ts +2 -0
  244. package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.d.ts.map +1 -0
  245. package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js +109 -0
  246. package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js.map +1 -0
  247. package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js +17 -15
  248. package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js.map +1 -1
  249. package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js +4 -5
  250. package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js.map +1 -1
  251. package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js +9 -13
  252. package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js.map +1 -1
  253. package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js +5 -3
  254. package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js.map +1 -1
  255. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js +5 -5
  256. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js.map +1 -1
  257. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js +5 -5
  258. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js.map +1 -1
  259. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js +10 -10
  260. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js.map +1 -1
  261. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js +5 -5
  262. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js.map +1 -1
  263. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js +5 -5
  264. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js.map +1 -1
  265. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js +5 -5
  266. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js.map +1 -1
  267. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +4 -4
  268. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
  269. package/dist/tests/cases/integration/graphQlSchema/model.js.map +1 -1
  270. package/dist/tests/cases/unit/conditionOptimizer.test.js +5 -0
  271. package/dist/tests/cases/unit/conditionOptimizer.test.js.map +1 -1
  272. package/dist/tests/cases/unit/permissionMerger.test.js +2 -0
  273. package/dist/tests/cases/unit/permissionMerger.test.js.map +1 -1
  274. package/dist/tests/cases/unit/predicatesFactory.test.js +7 -1
  275. package/dist/tests/cases/unit/predicatesFactory.test.js.map +1 -1
  276. package/dist/tests/cases/unit/predicatesInjector.test.js +105 -0
  277. package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
  278. package/dist/tests/cases/unit/whereBuilder.test.d.ts +2 -0
  279. package/dist/tests/cases/unit/whereBuilder.test.d.ts.map +1 -0
  280. package/dist/tests/cases/unit/whereBuilder.test.js +131 -0
  281. package/dist/tests/cases/unit/whereBuilder.test.js.map +1 -0
  282. package/dist/tests/cases/unit/whereOptimizer.test.js +187 -0
  283. package/dist/tests/cases/unit/whereOptimizer.test.js.map +1 -1
  284. package/dist/tests/src/test.js +2 -2
  285. package/dist/tests/src/test.js.map +1 -1
  286. package/dist/tests/src/testGraphql.d.ts.map +1 -1
  287. package/dist/tests/src/testGraphql.js +9 -5
  288. package/dist/tests/src/testGraphql.js.map +1 -1
  289. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  290. package/package.json +13 -11
  291. package/src/acl/EvaluatedPredicateReplacer.ts +9 -15
  292. package/src/acl/PermissionFactory.ts +18 -13
  293. package/src/acl/PredicateFactory.ts +64 -40
  294. package/src/acl/PredicatesInjector.ts +18 -17
  295. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +21 -28
  296. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +1 -6
  297. package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +10 -28
  298. package/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.ts +11 -8
  299. package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +4 -22
  300. package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +10 -29
  301. package/src/input-validation/ColumnValueResolver.ts +2 -3
  302. package/src/input-validation/EntityRulesResolver.ts +4 -4
  303. package/src/input-validation/QueryAstFactory.ts +1 -1
  304. package/src/input-validation/ValidationDataSelector.ts +1 -1
  305. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +7 -8
  306. package/src/input-validation/preValidation/InputPreValidator.ts +4 -4
  307. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +7 -8
  308. package/src/inputProcessing/CreateInputProcessor.ts +8 -9
  309. package/src/inputProcessing/CreateInputVisitor.ts +27 -89
  310. package/src/inputProcessing/UpdateInputProcessor.ts +8 -9
  311. package/src/inputProcessing/UpdateInputVisitor.ts +25 -71
  312. package/src/inputProcessing/index.ts +0 -1
  313. package/src/introspection/IntrospectionSchemaFactory.ts +7 -7
  314. package/src/mapper/ErrorUtils.ts +2 -2
  315. package/src/mapper/JunctionTableManager.ts +3 -3
  316. package/src/mapper/Mapper.ts +34 -31
  317. package/src/mapper/MapperContainer.ts +7 -5
  318. package/src/mapper/Result.ts +2 -4
  319. package/src/mapper/delete/DeleteExecutor.ts +6 -6
  320. package/src/mapper/insert/InsertBuilder.ts +2 -2
  321. package/src/mapper/insert/SqlCreateInputProcessor.ts +3 -3
  322. package/src/mapper/select/JoinVisitor.ts +6 -33
  323. package/src/mapper/select/Path.ts +4 -1
  324. package/src/mapper/select/RelationFetcher.ts +49 -50
  325. package/src/mapper/select/SelectBuilder.ts +71 -13
  326. package/src/mapper/select/SelectBuilderFactory.ts +2 -1
  327. package/src/mapper/select/SelectExecutionHandler.ts +16 -8
  328. package/src/mapper/select/SelectHydrator.ts +15 -11
  329. package/src/mapper/select/WhereBuilder.ts +168 -61
  330. package/src/mapper/select/handlers/FieldsVisitor.ts +80 -111
  331. package/src/mapper/select/handlers/FieldsVisitorFactory.ts +1 -0
  332. package/src/mapper/select/handlers/MetaHandler.ts +6 -17
  333. package/src/mapper/select/optimizer/ConditionOptimizer.ts +6 -0
  334. package/src/mapper/select/optimizer/WhereOptimizer.ts +148 -21
  335. package/src/mapper/select/optimizer/WhereReplacer.ts +39 -0
  336. package/src/mapper/select/optimizer/helpers.ts +7 -3
  337. package/src/mapper/update/SqlUpdateInputProcessor.ts +4 -10
  338. package/src/mapper/update/UpdateBuilder.ts +3 -3
  339. package/src/resolvers/ExecutionContainerFactory.ts +1 -1
  340. package/src/resolvers/GraphQlQueryAstFactory.ts +5 -4
  341. package/src/resolvers/MutationResolver.ts +14 -4
  342. package/src/resolvers/ReadHelpers.ts +3 -3
  343. package/src/resolvers/ReadResolver.ts +2 -2
  344. package/src/schema/EnumsProvider.ts +2 -4
  345. package/src/schema/FieldAccessVisitor.ts +2 -2
  346. package/src/schema/OrderByTypeProvider.ts +10 -3
  347. package/src/schema/WhereTypeProvider.ts +5 -6
  348. package/src/schema/entities/FieldArgsVisitor.ts +4 -5
  349. package/src/schema/entities/FieldTypeVisitor.ts +3 -3
  350. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +3 -6
  351. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +6 -20
  352. package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +6 -20
  353. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +3 -6
  354. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +6 -20
  355. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +9 -14
  356. package/src/schema/utils.ts +1 -1
  357. package/src/tsconfig.json +6 -6
  358. package/src/utils/object.ts +6 -6
  359. package/src/utils/uniqueWhereFields.ts +3 -3
  360. package/tests/cases/bugs/bug102.test.ts +6 -6
  361. package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +5 -5
  362. package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +5 -5
  363. package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +5 -5
  364. package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +5 -5
  365. package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +5 -5
  366. package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +5 -5
  367. package/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.ts +54 -4
  368. package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +26 -25
  369. package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +9 -6
  370. package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +104 -0
  371. package/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.ts +17 -15
  372. package/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.ts +4 -5
  373. package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.ts +9 -13
  374. package/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.ts +5 -3
  375. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +5 -5
  376. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +5 -5
  377. package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +10 -10
  378. package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +5 -5
  379. package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +5 -5
  380. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +5 -5
  381. package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +2 -3
  382. package/tests/cases/unit/conditionOptimizer.test.ts +6 -0
  383. package/tests/cases/unit/permissionMerger.test.ts +2 -0
  384. package/tests/cases/unit/predicatesFactory.test.ts +8 -2
  385. package/tests/cases/unit/predicatesInjector.test.ts +97 -2
  386. package/tests/cases/unit/whereBuilder.test.ts +148 -0
  387. package/tests/cases/unit/whereOptimizer.test.ts +215 -0
  388. package/tests/src/test.ts +2 -2
  389. package/tests/src/testGraphql.ts +9 -5
  390. package/dist/src/inputProcessing/InputContext.d.ts +0 -43
  391. package/dist/src/inputProcessing/InputContext.d.ts.map +0 -1
  392. package/dist/src/inputProcessing/InputContext.js +0 -3
  393. package/dist/src/inputProcessing/InputContext.js.map +0 -1
  394. package/src/inputProcessing/InputContext.ts +0 -49
@@ -11,59 +11,40 @@ export class PaginatedHasManyNodesVisitor implements
11
11
  private readonly objectNode: ObjectNode<Input.PaginationQueryInput>,
12
12
  private readonly relationFetcher: RelationFetcher,
13
13
  private readonly mapper: Mapper,
14
+ private readonly relationPath: Model.AnyRelationContext[],
14
15
  ) {}
15
16
 
16
- async visitOneHasMany(
17
- entity: Model.Entity,
18
- relation: Model.OneHasManyRelation,
19
- targetEntity: Model.Entity,
20
- targetRelation: Model.ManyHasOneRelation,
21
- ): Promise<SelectGroupedObjects> {
17
+ async visitOneHasMany(relationContext: Model.OneHasManyContext) {
22
18
  return await this.relationFetcher.fetchOneHasManyGroups(
23
19
  {
24
20
  mapper: this.mapper,
25
21
  objectNode: this.objectNode,
26
- targetEntity: targetEntity,
27
- relation: relation,
28
- targetRelation: targetRelation,
22
+ relationContext,
23
+ relationPath: this.relationPath,
29
24
  ids: this.ids,
30
25
  },
31
26
  )
32
27
  }
33
28
 
34
- async visitManyHasManyOwning(
35
- entity: Model.Entity,
36
- relation: Model.ManyHasManyOwningRelation,
37
- targetEntity: Model.Entity,
38
- targetRelation: Model.ManyHasManyInverseRelation | null,
39
- ): Promise<SelectGroupedObjects> {
29
+ async visitManyHasManyOwning(relationContext: Model.ManyHasManyOwningContext) {
40
30
  return await this.relationFetcher.fetchManyHasManyGroups(
41
31
  {
42
32
  mapper: this.mapper,
43
33
  field: this.objectNode,
44
- targetEntity: targetEntity,
45
- sourceRelation: relation,
46
- targetRelation,
47
- directionFrom: 'owning',
34
+ relationContext,
35
+ relationPath: this.relationPath,
48
36
  ids: this.ids,
49
37
  },
50
38
  )
51
39
  }
52
40
 
53
- async visitManyHasManyInverse(
54
- entity: Model.Entity,
55
- relation: Model.ManyHasManyInverseRelation,
56
- targetEntity: Model.Entity,
57
- targetRelation: Model.ManyHasManyOwningRelation,
58
- ): Promise<SelectGroupedObjects> {
41
+ async visitManyHasManyInverse(relationContext: Model.ManyHasManyInverseContext) {
59
42
  return await this.relationFetcher.fetchManyHasManyGroups(
60
43
  {
61
44
  mapper: this.mapper,
62
45
  field: this.objectNode,
63
- targetEntity: targetEntity,
64
- sourceRelation: relation,
65
- targetRelation,
66
- directionFrom: 'inverse',
46
+ relationContext,
47
+ relationPath: this.relationPath,
67
48
  ids: this.ids,
68
49
  },
69
50
  )
@@ -1,11 +1,10 @@
1
1
  import { NoDataError, Providers, resolveColumnValue } from '@contember/schema-utils'
2
- import * as Context from '../inputProcessing'
3
- import { Value } from '@contember/schema'
2
+ import { Model, Value } from '@contember/schema'
4
3
 
5
4
  export class ColumnValueResolver {
6
5
  constructor(private readonly providers: Providers) {}
7
6
 
8
- getDefaultValidationValue(context: Context.ColumnContext): Value.AtomicValue | undefined {
7
+ getDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.AtomicValue | undefined {
9
8
  if (context.column.name === context.entity.primary) {
10
9
  return '00000000-0000-0000-0000-000000000000'
11
10
  }
@@ -51,7 +51,7 @@ export class EntityRulesResolver {
51
51
  }
52
52
 
53
53
  class RequiredFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Model.ColumnVisitor<boolean> {
54
- visitColumn(entity: Model.Entity, column: Model.AnyColumn): boolean {
54
+ visitColumn({ column }: Model.ColumnContext): boolean {
55
55
  return !column.nullable && typeof column.default === 'undefined' && !column.sequence
56
56
  }
57
57
 
@@ -63,7 +63,7 @@ class RequiredFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Mod
63
63
  return false
64
64
  }
65
65
 
66
- visitManyHasOne(entity: Model.Entity, relation: Model.ManyHasOneRelation): boolean {
66
+ visitManyHasOne({ relation }: Model.ManyHasOneContext): boolean {
67
67
  return !relation.nullable
68
68
  }
69
69
 
@@ -71,11 +71,11 @@ class RequiredFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Mod
71
71
  return false
72
72
  }
73
73
 
74
- visitOneHasOneInverse(entity: Model.Entity, relation: Model.OneHasOneInverseRelation, targetEntity: Model.Entity): boolean {
74
+ visitOneHasOneInverse({ targetEntity, relation }: Model.OneHasOneInverseContext): boolean {
75
75
  return !relation.nullable && !targetEntity.view
76
76
  }
77
77
 
78
- visitOneHasOneOwning(entity: Model.Entity, relation: Model.OneHasOneOwningRelation): boolean {
78
+ visitOneHasOneOwning({ relation }: Model.OneHasOneOwningContext): boolean {
79
79
  return !relation.nullable
80
80
  }
81
81
  }
@@ -22,7 +22,7 @@ export class QueryAstFactory {
22
22
  fieldName,
23
23
  {
24
24
  visitColumn: () => [null, new FieldNode(fieldName, fieldName, {})],
25
- visitRelation: ({}, {}, targetEntity) => [
25
+ visitRelation: ({ targetEntity }) => [
26
26
  targetEntity,
27
27
  new ObjectNode(fieldName, fieldName, [], {}, {}, []).withField(
28
28
  new FieldNode(targetEntity.primary, targetEntity.primary, {}),
@@ -20,7 +20,7 @@ export class ValidationDataSelector {
20
20
  return {}
21
21
  }
22
22
  const queryAst = this.queryAstFactory.create(entity.name, dependencies).withArg('by', where)
23
- const node = await mapper.selectUnique(entity, queryAst, null)
23
+ const node = await mapper.selectUnique(entity, queryAst, [])
24
24
  if (!node) {
25
25
  return null
26
26
  }
@@ -1,5 +1,4 @@
1
1
  import { CreateInputProcessor } from '../../inputProcessing'
2
- import * as Context from '../../inputProcessing'
3
2
  import { Input, Model } from '@contember/schema'
4
3
  import { appendRelationToPath, ValidationPath } from '../ValidationPath'
5
4
  import { Mapper } from '../../mapper'
@@ -15,30 +14,30 @@ export class CreateInputPreValidationProcessor implements CreateInputProcessor<R
15
14
  private readonly mapper: Mapper,
16
15
  ) {}
17
16
 
18
- manyHasManyInverse: CreateInputProcessor.HasManyRelationProcessor<Context.ManyHasManyInverseContext, Result> = {
17
+ manyHasManyInverse: CreateInputProcessor.HasManyRelationProcessor<Model.ManyHasManyInverseContext, Result> = {
19
18
  connect: NoResult,
20
19
  create: context => this.validateCreate(context),
21
20
  }
22
21
 
23
- manyHasManyOwning: CreateInputProcessor.HasManyRelationProcessor<Context.ManyHasManyOwningContext, Result> = {
22
+ manyHasManyOwning: CreateInputProcessor.HasManyRelationProcessor<Model.ManyHasManyOwningContext, Result> = {
24
23
  connect: NoResult,
25
24
  create: context => this.validateCreate(context),
26
25
  }
27
26
 
28
- manyHasOne: CreateInputProcessor.HasOneRelationProcessor<Context.ManyHasOneContext, Result> = {
27
+ manyHasOne: CreateInputProcessor.HasOneRelationProcessor<Model.ManyHasOneContext, Result> = {
29
28
  connect: NoResult,
30
29
  create: context => this.validateCreate(context),
31
30
  }
32
31
 
33
- oneHasMany: CreateInputProcessor.HasManyRelationProcessor<Context.OneHasManyContext, Result> = {
32
+ oneHasMany: CreateInputProcessor.HasManyRelationProcessor<Model.OneHasManyContext, Result> = {
34
33
  connect: NoResult,
35
34
  create: context => this.validateCreate(context),
36
35
  }
37
- oneHasOneInverse: CreateInputProcessor.HasOneRelationProcessor<Context.OneHasOneInverseContext, Result> = {
36
+ oneHasOneInverse: CreateInputProcessor.HasOneRelationProcessor<Model.OneHasOneInverseContext, Result> = {
38
37
  connect: NoResult,
39
38
  create: context => this.validateCreate(context),
40
39
  }
41
- oneHasOneOwning: CreateInputProcessor.HasOneRelationProcessor<Context.OneHasOneOwningContext, Result> = {
40
+ oneHasOneOwning: CreateInputProcessor.HasOneRelationProcessor<Model.OneHasOneOwningContext, Result> = {
42
41
  connect: NoResult,
43
42
  create: context => this.validateCreate(context),
44
43
  }
@@ -61,7 +60,7 @@ export class CreateInputPreValidationProcessor implements CreateInputProcessor<R
61
60
  })
62
61
  }
63
62
 
64
- async column(context: Context.ColumnContext): Promise<Result> {
63
+ async column(context: Model.ColumnContext): Promise<Result> {
65
64
  return []
66
65
  }
67
66
  }
@@ -78,12 +78,12 @@ export class InputPreValidator {
78
78
 
79
79
  private createContextForCreate(entity: Model.Entity, data: Input.CreateDataInput): ValidationContext.NodeContext {
80
80
  const nodeData = acceptEveryFieldVisitor(this.model, entity, {
81
- visitColumn: (entity, column) => {
81
+ visitColumn: ({ entity, column }) => {
82
82
  const value = data[column.name] as Input.ColumnValue | undefined
83
83
  const validationValue = this.columnValueResolver.getDefaultValidationValue({ entity, column, input: value })
84
84
  return validationValue === undefined ? null : validationValue
85
85
  },
86
- visitHasOne: (entity, relation) => {
86
+ visitHasOne: ({ relation }) => {
87
87
  const value = data[relation.name] as Input.CreateOneRelationInput | undefined
88
88
  return value ? true : null
89
89
  },
@@ -101,10 +101,10 @@ export class InputPreValidator {
101
101
  dependencies: Dependencies,
102
102
  ): Promise<ValidationContext.NodeContext> {
103
103
  const inputNodeData = acceptEveryFieldVisitor(this.model, entity, {
104
- visitColumn: (entity, column) => {
104
+ visitColumn: ({ column }) => {
105
105
  return data[column.name] as Input.ColumnValue | undefined
106
106
  },
107
- visitHasOne: (entity, relation) => {
107
+ visitHasOne: ({ relation }) => {
108
108
  const value = data[relation.name] as Input.CreateOneRelationInput | Input.UpdateOneRelationInput | undefined | null
109
109
  if (value === undefined || value === null) {
110
110
  return undefined
@@ -1,5 +1,4 @@
1
1
  import { UpdateInputProcessor } from '../../inputProcessing'
2
- import * as Context from '../../inputProcessing'
3
2
  import { Input, Model } from '@contember/schema'
4
3
  import { appendRelationToPath, ValidationPath } from '../ValidationPath'
5
4
  import { Mapper } from '../../mapper'
@@ -16,11 +15,11 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
16
15
  private readonly mapper: Mapper,
17
16
  ) {}
18
17
 
19
- async column(context: Context.ColumnContext): Promise<Result> {
18
+ async column(context: Model.ColumnContext): Promise<Result> {
20
19
  return []
21
20
  }
22
21
 
23
- manyHasManyInverse: UpdateInputProcessor.HasManyRelationInputProcessor<Context.ManyHasManyInverseContext, Result> = {
22
+ manyHasManyInverse: UpdateInputProcessor.HasManyRelationInputProcessor<Model.ManyHasManyInverseContext, Result> = {
24
23
  create: ctx => this.processCreate(ctx),
25
24
  update: ctx => this.processUpdate({ ...ctx, input: ctx.input.data }),
26
25
  upsert: ctx => this.processUpsert(ctx),
@@ -28,7 +27,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
28
27
  disconnect: NoResult,
29
28
  ['delete']: NoResult,
30
29
  }
31
- manyHasManyOwning: UpdateInputProcessor.HasManyRelationInputProcessor<Context.ManyHasManyOwningContext, Result> = {
30
+ manyHasManyOwning: UpdateInputProcessor.HasManyRelationInputProcessor<Model.ManyHasManyOwningContext, Result> = {
32
31
  create: ctx => this.processCreate(ctx),
33
32
  update: ctx => this.processUpdate({ ...ctx, input: ctx.input.data }),
34
33
  upsert: ctx => this.processUpsert(ctx),
@@ -36,7 +35,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
36
35
  disconnect: NoResult,
37
36
  ['delete']: NoResult,
38
37
  }
39
- manyHasOne: UpdateInputProcessor.HasOneRelationInputProcessor<Context.ManyHasOneContext, Result> = {
38
+ manyHasOne: UpdateInputProcessor.HasOneRelationInputProcessor<Model.ManyHasOneContext, Result> = {
40
39
  create: ctx => this.processCreate(ctx),
41
40
  update: ctx => this.processUpdate(ctx),
42
41
  upsert: ctx => this.processUpsert(ctx),
@@ -44,7 +43,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
44
43
  disconnect: NoResult,
45
44
  ['delete']: NoResult,
46
45
  }
47
- oneHasMany: UpdateInputProcessor.HasManyRelationInputProcessor<Context.OneHasManyContext, Result> = {
46
+ oneHasMany: UpdateInputProcessor.HasManyRelationInputProcessor<Model.OneHasManyContext, Result> = {
48
47
  create: ctx => this.processCreate(ctx),
49
48
  update: ctx => this.processUpdate({ ...ctx, input: ctx.input.data }),
50
49
  upsert: ctx => this.processUpsert(ctx),
@@ -52,7 +51,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
52
51
  disconnect: NoResult,
53
52
  ['delete']: NoResult,
54
53
  }
55
- oneHasOneInverse: UpdateInputProcessor.HasOneRelationInputProcessor<Context.OneHasOneInverseContext, Result> = {
54
+ oneHasOneInverse: UpdateInputProcessor.HasOneRelationInputProcessor<Model.OneHasOneInverseContext, Result> = {
56
55
  create: ctx => this.processCreate(ctx),
57
56
  update: ctx => this.processUpdate(ctx),
58
57
  upsert: ctx => this.processUpsert(ctx),
@@ -61,7 +60,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
61
60
  ['delete']: NoResult,
62
61
  }
63
62
 
64
- oneHasOneOwning: UpdateInputProcessor.HasOneRelationInputProcessor<Context.OneHasOneOwningContext, Result> = {
63
+ oneHasOneOwning: UpdateInputProcessor.HasOneRelationInputProcessor<Model.OneHasOneOwningContext, Result> = {
65
64
  create: ctx => this.processCreate(ctx),
66
65
  update: ctx => this.processUpdate(ctx),
67
66
  upsert: ctx => this.processUpsert(ctx),
@@ -1,17 +1,16 @@
1
- import { Input } from '@contember/schema'
2
- import * as Context from './InputContext'
1
+ import { Input, Model } from '@contember/schema'
3
2
 
4
3
  interface CreateInputProcessor<Result = void> {
5
- column(context: Context.ColumnContext): Promise<Result>
4
+ column(context: CreateInputProcessor.ContextWithInput<Model.ColumnContext, Input.ColumnValue | undefined>): Promise<Result>
6
5
 
7
- manyHasManyInverse: CreateInputProcessor.HasManyRelationProcessor<Context.ManyHasManyInverseContext, Result>
8
- manyHasManyOwning: CreateInputProcessor.HasManyRelationProcessor<Context.ManyHasManyOwningContext, Result>
6
+ manyHasManyInverse: CreateInputProcessor.HasManyRelationProcessor<Model.ManyHasManyInverseContext, Result>
7
+ manyHasManyOwning: CreateInputProcessor.HasManyRelationProcessor<Model.ManyHasManyOwningContext, Result>
9
8
 
10
- oneHasOneInverse: CreateInputProcessor.HasOneRelationProcessor<Context.OneHasOneInverseContext, Result>
11
- oneHasOneOwning: CreateInputProcessor.HasOneRelationProcessor<Context.OneHasOneOwningContext, Result>
9
+ oneHasOneInverse: CreateInputProcessor.HasOneRelationProcessor<Model.OneHasOneInverseContext, Result>
10
+ oneHasOneOwning: CreateInputProcessor.HasOneRelationProcessor<Model.OneHasOneOwningContext, Result>
12
11
 
13
- oneHasMany: CreateInputProcessor.HasManyRelationProcessor<Context.OneHasManyContext, Result>
14
- manyHasOne: CreateInputProcessor.HasOneRelationProcessor<Context.ManyHasOneContext, Result>
12
+ oneHasMany: CreateInputProcessor.HasManyRelationProcessor<Model.OneHasManyContext, Result>
13
+ manyHasOne: CreateInputProcessor.HasOneRelationProcessor<Model.ManyHasOneContext, Result>
15
14
  }
16
15
 
17
16
  namespace CreateInputProcessor {
@@ -1,7 +1,6 @@
1
1
  import { isIt } from '../utils'
2
2
  import { Input, Model } from '@contember/schema'
3
3
  import { CreateInputProcessor } from './CreateInputProcessor'
4
- import * as Context from './InputContext'
5
4
  import { filterObject } from '../utils'
6
5
  import { UserError } from '../exception'
7
6
  import { ImplementationException } from '../exception'
@@ -16,119 +15,58 @@ export class CreateInputVisitor<Result> implements
16
15
  private readonly data: Input.CreateDataInput,
17
16
  ) {}
18
17
 
19
- public visitColumn(entity: Model.Entity, column: Model.AnyColumn): Promise<Result> {
18
+ public visitColumn(context: Model.ColumnContext): Promise<Result> {
20
19
  return this.createInputProcessor.column({
21
- entity,
22
- column,
23
- input: this.data[column.name] as Input.ColumnValue,
20
+ ...context,
21
+ input: this.data[context.column.name] as Input.ColumnValue,
24
22
  })
25
23
  }
26
24
 
27
- public visitManyHasManyInverse(
28
- entity: Model.Entity,
29
- relation: Model.ManyHasManyInverseRelation,
30
- targetEntity: Model.Entity,
31
- targetRelation: Model.ManyHasManyOwningRelation,
32
- ) {
33
- return this.processManyRelationInput<Context.ManyHasManyInverseContext>(
25
+ public visitManyHasManyInverse(context: Model.ManyHasManyInverseContext) {
26
+ return this.processManyRelationInput(
34
27
  this.createInputProcessor.manyHasManyInverse,
35
- {
36
- entity,
37
- relation,
38
- targetEntity,
39
- targetRelation,
40
- },
41
- this.data[relation.name] as Input.CreateManyRelationInput,
28
+ context,
29
+ this.data[context.relation.name] as Input.CreateManyRelationInput,
42
30
  )
43
31
  }
44
32
 
45
- public visitManyHasManyOwning(
46
- entity: Model.Entity,
47
- relation: Model.ManyHasManyOwningRelation,
48
- targetEntity: Model.Entity,
49
- targetRelation: Model.ManyHasManyInverseRelation | null,
50
- ) {
51
- return this.processManyRelationInput<Context.ManyHasManyOwningContext>(
33
+ public visitManyHasManyOwning(context: Model.ManyHasManyOwningContext) {
34
+ return this.processManyRelationInput(
52
35
  this.createInputProcessor.manyHasManyOwning,
53
- {
54
- entity,
55
- relation,
56
- targetEntity,
57
- targetRelation,
58
- },
59
- this.data[relation.name] as Input.CreateManyRelationInput,
36
+ context,
37
+ this.data[context.relation.name] as Input.CreateManyRelationInput,
60
38
  )
61
39
  }
62
40
 
63
- public visitManyHasOne(
64
- entity: Model.Entity,
65
- relation: Model.ManyHasOneRelation,
66
- targetEntity: Model.Entity,
67
- targetRelation: Model.OneHasManyRelation | null,
68
- ) {
69
- return this.processRelationInput<Context.ManyHasOneContext>(
41
+ public visitManyHasOne(context: Model.ManyHasOneContext) {
42
+ return this.processRelationInput(
70
43
  this.createInputProcessor.manyHasOne,
71
- {
72
- entity,
73
- relation,
74
- targetEntity,
75
- targetRelation,
76
- },
77
- this.data[relation.name] as Input.CreateOneRelationInput,
44
+ context,
45
+ this.data[context.relation.name] as Input.CreateOneRelationInput,
78
46
  )
79
47
  }
80
48
 
81
- public visitOneHasMany(
82
- entity: Model.Entity,
83
- relation: Model.OneHasManyRelation,
84
- targetEntity: Model.Entity,
85
- targetRelation: Model.ManyHasOneRelation,
86
- ) {
87
- return this.processManyRelationInput<Context.OneHasManyContext>(
49
+ public visitOneHasMany(context: Model.OneHasManyContext) {
50
+ return this.processManyRelationInput(
88
51
  this.createInputProcessor.oneHasMany,
89
- {
90
- entity,
91
- relation,
92
- targetEntity,
93
- targetRelation,
94
- },
95
- this.data[relation.name] as Input.CreateManyRelationInput,
52
+ context,
53
+ this.data[context.relation.name] as Input.CreateManyRelationInput,
96
54
  )
97
55
  }
98
56
 
99
- public visitOneHasOneInverse(
100
- entity: Model.Entity,
101
- relation: Model.OneHasOneInverseRelation,
102
- targetEntity: Model.Entity,
103
- targetRelation: Model.OneHasOneOwningRelation,
104
- ) {
105
- return this.processRelationInput<Context.OneHasOneInverseContext>(
57
+ public visitOneHasOneInverse(context: Model.OneHasOneInverseContext) {
58
+ return this.processRelationInput(
106
59
  this.createInputProcessor.oneHasOneInverse,
107
- {
108
- entity,
109
- relation,
110
- targetEntity,
111
- targetRelation,
112
- },
113
- this.data[relation.name] as Input.CreateOneRelationInput,
60
+ context,
61
+ this.data[context.relation.name] as Input.CreateOneRelationInput,
114
62
  )
115
63
  }
116
64
 
117
- public visitOneHasOneOwning(
118
- entity: Model.Entity,
119
- relation: Model.OneHasOneOwningRelation,
120
- targetEntity: Model.Entity,
121
- targetRelation: Model.OneHasOneInverseRelation | null,
122
- ) {
123
- return this.processRelationInput<Context.OneHasOneOwningContext>(
65
+ public visitOneHasOneOwning(context: Model.OneHasOneOwningContext) {
66
+ return this.processRelationInput(
124
67
  this.createInputProcessor.oneHasOneOwning,
125
- {
126
- entity,
127
- relation,
128
- targetEntity,
129
- targetRelation,
130
- },
131
- this.data[relation.name] as Input.CreateOneRelationInput,
68
+ context,
69
+ this.data[context.relation.name] as Input.CreateOneRelationInput,
132
70
  )
133
71
  }
134
72
 
@@ -1,20 +1,19 @@
1
- import { Input } from '@contember/schema'
2
- import * as Context from './InputContext'
1
+ import { Input, Model } from '@contember/schema'
3
2
 
4
3
  interface UpdateInputProcessor<Result = void> {
5
- column(context: Context.ColumnContext): Promise<Result>
4
+ column(context: UpdateInputProcessor.ContextWithInput<Model.ColumnContext, Input.ColumnValue | undefined>): Promise<Result>
6
5
 
7
- manyHasManyInverse: UpdateInputProcessor.HasManyRelationInputProcessor<Context.ManyHasManyInverseContext, Result>
6
+ manyHasManyInverse: UpdateInputProcessor.HasManyRelationInputProcessor<Model.ManyHasManyInverseContext, Result>
8
7
 
9
- manyHasManyOwning: UpdateInputProcessor.HasManyRelationInputProcessor<Context.ManyHasManyOwningContext, Result>
8
+ manyHasManyOwning: UpdateInputProcessor.HasManyRelationInputProcessor<Model.ManyHasManyOwningContext, Result>
10
9
 
11
- manyHasOne: UpdateInputProcessor.HasOneRelationInputProcessor<Context.ManyHasOneContext, Result>
10
+ manyHasOne: UpdateInputProcessor.HasOneRelationInputProcessor<Model.ManyHasOneContext, Result>
12
11
 
13
- oneHasMany: UpdateInputProcessor.HasManyRelationInputProcessor<Context.OneHasManyContext, Result>
12
+ oneHasMany: UpdateInputProcessor.HasManyRelationInputProcessor<Model.OneHasManyContext, Result>
14
13
 
15
- oneHasOneInverse: UpdateInputProcessor.HasOneRelationInputProcessor<Context.OneHasOneInverseContext, Result>
14
+ oneHasOneInverse: UpdateInputProcessor.HasOneRelationInputProcessor<Model.OneHasOneInverseContext, Result>
16
15
 
17
- oneHasOneOwning: UpdateInputProcessor.HasOneRelationInputProcessor<Context.OneHasOneOwningContext, Result>
16
+ oneHasOneOwning: UpdateInputProcessor.HasOneRelationInputProcessor<Model.OneHasOneOwningContext, Result>
18
17
  }
19
18
 
20
19
  namespace UpdateInputProcessor {
@@ -1,7 +1,6 @@
1
1
  import { Input, Model } from '@contember/schema'
2
2
  import { filterObject, isIt } from '../utils'
3
3
  import { UpdateInputProcessor } from './UpdateInputProcessor'
4
- import * as Context from './InputContext'
5
4
  import { ImplementationException, UserError } from '../exception'
6
5
 
7
6
  export class UpdateInputVisitor<Result> implements
@@ -14,7 +13,7 @@ export class UpdateInputVisitor<Result> implements
14
13
  private readonly data: Input.UpdateDataInput,
15
14
  ) {}
16
15
 
17
- public visitColumn(entity: Model.Entity, column: Model.AnyColumn): Promise<Result> {
16
+ public visitColumn({ entity, column }: Model.ColumnContext): Promise<Result> {
18
17
  return this.updateInputProcessor.column({
19
18
  entity,
20
19
  column,
@@ -22,96 +21,51 @@ export class UpdateInputVisitor<Result> implements
22
21
  })
23
22
  }
24
23
 
25
- public visitManyHasManyInverse(
26
- entity: Model.Entity,
27
- relation: Model.ManyHasManyInverseRelation,
28
- targetEntity: Model.Entity,
29
- targetRelation: Model.ManyHasManyOwningRelation,
30
- ) {
31
- return this.processManyRelationInput<Context.ManyHasManyInverseContext>(
24
+ public visitManyHasManyInverse(context: Model.ManyHasManyInverseContext) {
25
+ return this.processManyRelationInput(
32
26
  this.updateInputProcessor.manyHasManyInverse,
33
- { entity, relation, targetEntity, targetRelation },
34
- this.data[relation.name] as Input.CreateManyRelationInput,
27
+ context,
28
+ this.data[context.relation.name] as Input.CreateManyRelationInput,
35
29
  )
36
30
  }
37
31
 
38
- public visitManyHasManyOwning(
39
- entity: Model.Entity,
40
- relation: Model.ManyHasManyOwningRelation,
41
- targetEntity: Model.Entity,
42
- targetRelation: Model.ManyHasManyInverseRelation | null,
43
- ) {
44
- return this.processManyRelationInput<Context.ManyHasManyOwningContext>(
32
+ public visitManyHasManyOwning(context: Model.ManyHasManyOwningContext) {
33
+ return this.processManyRelationInput(
45
34
  this.updateInputProcessor.manyHasManyOwning,
46
- { entity, relation, targetEntity, targetRelation },
47
- this.data[relation.name] as Input.CreateManyRelationInput,
35
+ context,
36
+ this.data[context.relation.name] as Input.CreateManyRelationInput,
48
37
  )
49
38
  }
50
39
 
51
- public visitManyHasOne(
52
- entity: Model.Entity,
53
- relation: Model.ManyHasOneRelation,
54
- targetEntity: Model.Entity,
55
- targetRelation: Model.OneHasManyRelation | null,
56
- ) {
57
- return this.processRelationInput<Context.ManyHasOneContext>(
40
+ public visitManyHasOne(context: Model.ManyHasOneContext) {
41
+ return this.processRelationInput(
58
42
  this.updateInputProcessor.manyHasOne,
59
- {
60
- entity,
61
- relation,
62
- targetEntity,
63
- targetRelation,
64
- },
65
- this.data[relation.name] as Input.CreateOneRelationInput,
43
+ context,
44
+ this.data[context.relation.name] as Input.CreateOneRelationInput,
66
45
  )
67
46
  }
68
47
 
69
- public visitOneHasMany(
70
- entity: Model.Entity,
71
- relation: Model.OneHasManyRelation,
72
- targetEntity: Model.Entity,
73
- targetRelation: Model.ManyHasOneRelation,
74
- ) {
75
- return this.processManyRelationInput<Context.OneHasManyContext>(
48
+ public visitOneHasMany(context: Model.OneHasManyContext) {
49
+ return this.processManyRelationInput(
76
50
  this.updateInputProcessor.oneHasMany,
77
- { entity, relation, targetEntity, targetRelation },
78
- this.data[relation.name] as Input.CreateManyRelationInput,
51
+ context,
52
+ this.data[context.relation.name] as Input.CreateManyRelationInput,
79
53
  )
80
54
  }
81
55
 
82
- public visitOneHasOneInverse(
83
- entity: Model.Entity,
84
- relation: Model.OneHasOneInverseRelation,
85
- targetEntity: Model.Entity,
86
- targetRelation: Model.OneHasOneOwningRelation,
87
- ) {
88
- return this.processRelationInput<Context.OneHasOneInverseContext>(
56
+ public visitOneHasOneInverse(context: Model.OneHasOneInverseContext) {
57
+ return this.processRelationInput(
89
58
  this.updateInputProcessor.oneHasOneInverse,
90
- {
91
- entity,
92
- relation,
93
- targetEntity,
94
- targetRelation,
95
- },
96
- this.data[relation.name] as Input.CreateOneRelationInput,
59
+ context,
60
+ this.data[context.relation.name] as Input.CreateOneRelationInput,
97
61
  )
98
62
  }
99
63
 
100
- public visitOneHasOneOwning(
101
- entity: Model.Entity,
102
- relation: Model.OneHasOneOwningRelation,
103
- targetEntity: Model.Entity,
104
- targetRelation: Model.OneHasOneInverseRelation | null,
105
- ) {
106
- return this.processRelationInput<Context.OneHasOneOwningContext>(
64
+ public visitOneHasOneOwning(context: Model.OneHasOneOwningContext) {
65
+ return this.processRelationInput(
107
66
  this.updateInputProcessor.oneHasOneOwning,
108
- {
109
- entity,
110
- relation,
111
- targetEntity,
112
- targetRelation,
113
- },
114
- this.data[relation.name] as Input.CreateOneRelationInput,
67
+ context,
68
+ this.data[context.relation.name] as Input.CreateOneRelationInput,
115
69
  )
116
70
  }
117
71
 
@@ -1,7 +1,6 @@
1
1
  export * from './CreateInputProcessor'
2
2
  export * from './CreateInputVisitor'
3
3
  export * from './FieldNode'
4
- export * from './InputContext'
5
4
  export * from './ObjectNode'
6
5
  export * from './UniqueWhereExpander'
7
6
  export * from './UpdateInputProcessor'