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

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 (361) hide show
  1. package/dist/src/acl/EvaluatedPredicateReplacer.d.ts +9 -0
  2. package/dist/src/acl/EvaluatedPredicateReplacer.d.ts.map +1 -0
  3. package/dist/src/acl/EvaluatedPredicateReplacer.js +31 -0
  4. package/dist/src/acl/EvaluatedPredicateReplacer.js.map +1 -0
  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 +4 -2
  9. package/dist/src/acl/PredicateFactory.d.ts.map +1 -1
  10. package/dist/src/acl/PredicateFactory.js +17 -6
  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 +16 -19
  15. package/dist/src/acl/PredicatesInjector.js.map +1 -1
  16. package/dist/src/acl/VariableInjector.d.ts +0 -1
  17. package/dist/src/acl/VariableInjector.d.ts.map +1 -1
  18. package/dist/src/acl/VariableInjector.js +4 -14
  19. package/dist/src/acl/VariableInjector.js.map +1 -1
  20. package/dist/src/acl/VariableUtils.d.ts +2 -13
  21. package/dist/src/acl/VariableUtils.d.ts.map +1 -1
  22. package/dist/src/acl/VariableUtils.js +5 -16
  23. package/dist/src/acl/VariableUtils.js.map +1 -1
  24. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts +0 -1
  25. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts.map +1 -1
  26. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +14 -15
  27. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
  28. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts +1 -1
  29. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
  30. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +1 -1
  31. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  32. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts +5 -4
  33. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
  34. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js +29 -20
  35. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
  36. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.d.ts.map +1 -1
  37. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js +2 -2
  38. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
  39. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts +3 -3
  40. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
  41. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +3 -3
  42. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
  43. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts +5 -4
  44. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
  45. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js +29 -20
  46. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
  47. package/dist/src/input-validation/ColumnValueResolver.d.ts +4 -3
  48. package/dist/src/input-validation/ColumnValueResolver.d.ts.map +1 -1
  49. package/dist/src/input-validation/ColumnValueResolver.js.map +1 -1
  50. package/dist/src/input-validation/EntityRulesResolver.js +7 -7
  51. package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
  52. package/dist/src/input-validation/QueryAstFactory.js +1 -1
  53. package/dist/src/input-validation/QueryAstFactory.js.map +1 -1
  54. package/dist/src/input-validation/ValidationContext.d.ts +2 -2
  55. package/dist/src/input-validation/ValidationContext.d.ts.map +1 -1
  56. package/dist/src/input-validation/ValidationContext.js.map +1 -1
  57. package/dist/src/input-validation/ValidationDataSelector.d.ts.map +1 -1
  58. package/dist/src/input-validation/ValidationDataSelector.js +1 -1
  59. package/dist/src/input-validation/ValidationDataSelector.js.map +1 -1
  60. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +7 -8
  61. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  62. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  63. package/dist/src/input-validation/preValidation/InputPreValidator.js +4 -4
  64. package/dist/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  65. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +7 -8
  66. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  67. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  68. package/dist/src/inputProcessing/CreateInputProcessor.d.ts +8 -9
  69. package/dist/src/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  70. package/dist/src/inputProcessing/CreateInputVisitor.d.ts +7 -7
  71. package/dist/src/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  72. package/dist/src/inputProcessing/CreateInputVisitor.js +15 -46
  73. package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  74. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts +8 -9
  75. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  76. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts +7 -7
  77. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  78. package/dist/src/inputProcessing/UpdateInputVisitor.js +13 -28
  79. package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  80. package/dist/src/inputProcessing/index.d.ts +0 -1
  81. package/dist/src/inputProcessing/index.d.ts.map +1 -1
  82. package/dist/src/inputProcessing/index.js +0 -1
  83. package/dist/src/inputProcessing/index.js.map +1 -1
  84. package/dist/src/introspection/IntrospectionSchemaFactory.js +7 -7
  85. package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  86. package/dist/src/introspection/content-schema.types.d.ts +19 -223
  87. package/dist/src/introspection/content-schema.types.d.ts.map +1 -1
  88. package/dist/src/introspection/content-schema.types.js +2 -2
  89. package/dist/src/introspection/content-schema.types.js.map +1 -1
  90. package/dist/src/mapper/Mapper.d.ts +6 -6
  91. package/dist/src/mapper/Mapper.d.ts.map +1 -1
  92. package/dist/src/mapper/Mapper.js +28 -23
  93. package/dist/src/mapper/Mapper.js.map +1 -1
  94. package/dist/src/mapper/MapperContainer.d.ts.map +1 -1
  95. package/dist/src/mapper/MapperContainer.js +7 -4
  96. package/dist/src/mapper/MapperContainer.js.map +1 -1
  97. package/dist/src/mapper/delete/DeleteExecutor.js +3 -3
  98. package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
  99. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts +4 -2
  100. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  101. package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  102. package/dist/src/mapper/select/JoinVisitor.d.ts +6 -6
  103. package/dist/src/mapper/select/JoinVisitor.d.ts.map +1 -1
  104. package/dist/src/mapper/select/JoinVisitor.js +6 -6
  105. package/dist/src/mapper/select/JoinVisitor.js.map +1 -1
  106. package/dist/src/mapper/select/RelationFetcher.d.ts +32 -5
  107. package/dist/src/mapper/select/RelationFetcher.d.ts.map +1 -1
  108. package/dist/src/mapper/select/RelationFetcher.js +37 -15
  109. package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
  110. package/dist/src/mapper/select/SelectBuilder.d.ts +2 -1
  111. package/dist/src/mapper/select/SelectBuilder.d.ts.map +1 -1
  112. package/dist/src/mapper/select/SelectBuilder.js +4 -2
  113. package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
  114. package/dist/src/mapper/select/SelectBuilderFactory.d.ts +2 -1
  115. package/dist/src/mapper/select/SelectBuilderFactory.d.ts.map +1 -1
  116. package/dist/src/mapper/select/SelectExecutionHandler.d.ts +1 -0
  117. package/dist/src/mapper/select/SelectExecutionHandler.d.ts.map +1 -1
  118. package/dist/src/mapper/select/WhereBuilder.d.ts +8 -3
  119. package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
  120. package/dist/src/mapper/select/WhereBuilder.js +71 -25
  121. package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
  122. package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts +9 -8
  123. package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  124. package/dist/src/mapper/select/handlers/FieldsVisitor.js +45 -24
  125. package/dist/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  126. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
  127. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js +1 -1
  128. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  129. package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts +5 -0
  130. package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts.map +1 -0
  131. package/dist/src/mapper/select/optimizer/ConditionOptimizer.js +39 -0
  132. package/dist/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -0
  133. package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts +15 -0
  134. package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -0
  135. package/dist/src/mapper/select/optimizer/WhereOptimizer.js +118 -0
  136. package/dist/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -0
  137. package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts +6 -0
  138. package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -0
  139. package/dist/src/mapper/select/optimizer/WhereReplacer.js +28 -0
  140. package/dist/src/mapper/select/optimizer/WhereReplacer.js.map +1 -0
  141. package/dist/src/mapper/select/optimizer/helpers.d.ts +10 -0
  142. package/dist/src/mapper/select/optimizer/helpers.d.ts.map +1 -0
  143. package/dist/src/mapper/select/optimizer/helpers.js +72 -0
  144. package/dist/src/mapper/select/optimizer/helpers.js.map +1 -0
  145. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts +2 -3
  146. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  147. package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  148. package/dist/src/mapper/update/UpdateBuilder.js +3 -3
  149. package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
  150. package/dist/src/resolvers/GraphQlQueryAstFactory.js +2 -2
  151. package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  152. package/dist/src/resolvers/MutationResolver.js +15 -15
  153. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  154. package/dist/src/resolvers/ReadHelpers.js +10 -10
  155. package/dist/src/resolvers/ReadHelpers.js.map +1 -1
  156. package/dist/src/resolvers/ReadResolver.js +2 -2
  157. package/dist/src/resolvers/ReadResolver.js.map +1 -1
  158. package/dist/src/schema/FieldAccessVisitor.d.ts +2 -2
  159. package/dist/src/schema/FieldAccessVisitor.d.ts.map +1 -1
  160. package/dist/src/schema/FieldAccessVisitor.js +2 -2
  161. package/dist/src/schema/FieldAccessVisitor.js.map +1 -1
  162. package/dist/src/schema/MutationProvider.js +4 -4
  163. package/dist/src/schema/MutationProvider.js.map +1 -1
  164. package/dist/src/schema/OrderByTypeProvider.js +1 -1
  165. package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
  166. package/dist/src/schema/QueryProvider.js +3 -3
  167. package/dist/src/schema/QueryProvider.js.map +1 -1
  168. package/dist/src/schema/ResultSchemaTypeProvider.d.ts +2 -2
  169. package/dist/src/schema/ResultSchemaTypeProvider.d.ts.map +1 -1
  170. package/dist/src/schema/WhereTypeProvider.js +4 -4
  171. package/dist/src/schema/WhereTypeProvider.js.map +1 -1
  172. package/dist/src/schema/entities/FieldArgsVisitor.d.ts +7 -7
  173. package/dist/src/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
  174. package/dist/src/schema/entities/FieldArgsVisitor.js +3 -3
  175. package/dist/src/schema/entities/FieldArgsVisitor.js.map +1 -1
  176. package/dist/src/schema/entities/FieldTypeVisitor.d.ts +3 -3
  177. package/dist/src/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
  178. package/dist/src/schema/entities/FieldTypeVisitor.js +3 -3
  179. package/dist/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  180. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts +3 -3
  181. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
  182. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +3 -3
  183. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  184. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
  185. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  186. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +6 -6
  187. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  188. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +3 -3
  189. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  190. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +5 -5
  191. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  192. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +10 -4
  193. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
  194. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +3 -3
  195. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  196. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
  197. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  198. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +6 -6
  199. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  200. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +2 -2
  201. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  202. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +2 -2
  203. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  204. package/dist/src/tsconfig.tsbuildinfo +1 -1
  205. package/dist/src/utils/object.d.ts.map +1 -1
  206. package/dist/src/utils/object.js +3 -4
  207. package/dist/src/utils/object.js.map +1 -1
  208. package/dist/src/utils/uniqueWhereFields.js +3 -3
  209. package/dist/src/utils/uniqueWhereFields.js.map +1 -1
  210. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.d.ts +2 -0
  211. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.d.ts.map +1 -0
  212. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js +38 -0
  213. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js.map +1 -0
  214. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +1 -1
  215. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
  216. package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js +2 -2
  217. package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js.map +1 -1
  218. package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js +1 -1
  219. package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js.map +1 -1
  220. package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +7 -6
  221. package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
  222. package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js +1 -1
  223. package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js.map +1 -1
  224. package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.d.ts +2 -0
  225. package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.d.ts.map +1 -0
  226. package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.js +137 -0
  227. package/dist/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.js.map +1 -0
  228. package/dist/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.js +1 -1
  229. package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js +1 -1
  230. package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js.map +1 -1
  231. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js +73 -0
  232. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js.map +1 -1
  233. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js +73 -0
  234. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js.map +1 -1
  235. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +6 -6
  236. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
  237. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +6 -3
  238. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
  239. package/dist/tests/cases/integration/graphQlSchema/model.js.map +1 -1
  240. package/dist/tests/cases/unit/aclVariablesFactory.test.js +7 -33
  241. package/dist/tests/cases/unit/aclVariablesFactory.test.js.map +1 -1
  242. package/dist/tests/cases/unit/conditionOptimizer.test.d.ts +2 -0
  243. package/dist/tests/cases/unit/conditionOptimizer.test.d.ts.map +1 -0
  244. package/dist/tests/cases/unit/conditionOptimizer.test.js +118 -0
  245. package/dist/tests/cases/unit/conditionOptimizer.test.js.map +1 -0
  246. package/dist/tests/cases/unit/orderbyHelper.test.js +1 -0
  247. package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
  248. package/dist/tests/cases/unit/permissionMerger.test.js +2 -0
  249. package/dist/tests/cases/unit/permissionMerger.test.js.map +1 -1
  250. package/dist/tests/cases/unit/predicatesFactory.test.d.ts +2 -0
  251. package/dist/tests/cases/unit/predicatesFactory.test.d.ts.map +1 -0
  252. package/dist/tests/cases/unit/predicatesFactory.test.js +109 -0
  253. package/dist/tests/cases/unit/predicatesFactory.test.js.map +1 -0
  254. package/dist/tests/cases/unit/predicatesInjector.test.js +88 -14
  255. package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
  256. package/dist/tests/cases/unit/variableInjector.test.js +4 -3
  257. package/dist/tests/cases/unit/variableInjector.test.js.map +1 -1
  258. package/dist/tests/cases/unit/whereBuilder.test.d.ts +2 -0
  259. package/dist/tests/cases/unit/whereBuilder.test.d.ts.map +1 -0
  260. package/dist/tests/cases/unit/whereBuilder.test.js +75 -0
  261. package/dist/tests/cases/unit/whereBuilder.test.js.map +1 -0
  262. package/dist/tests/cases/unit/whereOptimizer.test.d.ts +2 -0
  263. package/dist/tests/cases/unit/whereOptimizer.test.d.ts.map +1 -0
  264. package/dist/tests/cases/unit/whereOptimizer.test.js +265 -0
  265. package/dist/tests/cases/unit/whereOptimizer.test.js.map +1 -0
  266. package/dist/tests/src/testGraphql.d.ts.map +1 -1
  267. package/dist/tests/src/testGraphql.js +10 -2
  268. package/dist/tests/src/testGraphql.js.map +1 -1
  269. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  270. package/graphql.codegen.yml +0 -3
  271. package/package.json +16 -16
  272. package/src/acl/EvaluatedPredicateReplacer.ts +32 -0
  273. package/src/acl/PermissionFactory.ts +18 -13
  274. package/src/acl/PredicateFactory.ts +32 -8
  275. package/src/acl/PredicatesInjector.ts +25 -17
  276. package/src/acl/VariableInjector.ts +2 -15
  277. package/src/acl/VariableUtils.ts +7 -23
  278. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +17 -24
  279. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +1 -6
  280. package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +26 -46
  281. package/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.ts +6 -3
  282. package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +4 -22
  283. package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +26 -49
  284. package/src/input-validation/ColumnValueResolver.ts +2 -3
  285. package/src/input-validation/EntityRulesResolver.ts +7 -7
  286. package/src/input-validation/QueryAstFactory.ts +1 -1
  287. package/src/input-validation/ValidationContext.ts +2 -2
  288. package/src/input-validation/ValidationDataSelector.ts +2 -2
  289. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +7 -8
  290. package/src/input-validation/preValidation/InputPreValidator.ts +4 -4
  291. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +7 -8
  292. package/src/inputProcessing/CreateInputProcessor.ts +8 -9
  293. package/src/inputProcessing/CreateInputVisitor.ts +27 -89
  294. package/src/inputProcessing/UpdateInputProcessor.ts +8 -9
  295. package/src/inputProcessing/UpdateInputVisitor.ts +25 -71
  296. package/src/inputProcessing/index.ts +0 -1
  297. package/src/introspection/IntrospectionSchemaFactory.ts +7 -7
  298. package/src/introspection/content-schema.types.ts +19 -286
  299. package/src/mapper/Mapper.ts +37 -30
  300. package/src/mapper/MapperContainer.ts +10 -5
  301. package/src/mapper/delete/DeleteExecutor.ts +3 -3
  302. package/src/mapper/insert/SqlCreateInputProcessor.ts +3 -3
  303. package/src/mapper/select/JoinVisitor.ts +6 -33
  304. package/src/mapper/select/RelationFetcher.ts +101 -41
  305. package/src/mapper/select/SelectBuilder.ts +3 -1
  306. package/src/mapper/select/SelectBuilderFactory.ts +2 -1
  307. package/src/mapper/select/SelectExecutionHandler.ts +1 -0
  308. package/src/mapper/select/WhereBuilder.ts +95 -34
  309. package/src/mapper/select/handlers/FieldsVisitor.ts +47 -57
  310. package/src/mapper/select/handlers/FieldsVisitorFactory.ts +1 -0
  311. package/src/mapper/select/optimizer/ConditionOptimizer.ts +41 -0
  312. package/src/mapper/select/optimizer/WhereOptimizer.ts +138 -0
  313. package/src/mapper/select/optimizer/WhereReplacer.ts +27 -0
  314. package/src/mapper/select/optimizer/helpers.ts +58 -0
  315. package/src/mapper/update/SqlUpdateInputProcessor.ts +1 -1
  316. package/src/mapper/update/UpdateBuilder.ts +3 -3
  317. package/src/resolvers/GraphQlQueryAstFactory.ts +3 -3
  318. package/src/resolvers/MutationResolver.ts +1 -1
  319. package/src/resolvers/ReadHelpers.ts +3 -3
  320. package/src/resolvers/ReadResolver.ts +2 -2
  321. package/src/schema/FieldAccessVisitor.ts +2 -2
  322. package/src/schema/OrderByTypeProvider.ts +1 -1
  323. package/src/schema/WhereTypeProvider.ts +4 -4
  324. package/src/schema/entities/FieldArgsVisitor.ts +3 -3
  325. package/src/schema/entities/FieldTypeVisitor.ts +3 -3
  326. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +3 -6
  327. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +6 -20
  328. package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +5 -18
  329. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +3 -6
  330. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +6 -20
  331. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +2 -12
  332. package/src/utils/object.ts +6 -6
  333. package/src/utils/uniqueWhereFields.ts +3 -3
  334. package/tests/cases/integration/graphQlDb/insert/insertSequence.test.ts +34 -0
  335. package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +2 -2
  336. package/tests/cases/integration/graphQlRequests/insert/acl/setField.test.ts +3 -3
  337. package/tests/cases/integration/graphQlRequests/insert/aclInsert.test.ts +2 -2
  338. package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +7 -6
  339. package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +1 -1
  340. package/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.ts +130 -0
  341. package/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.ts +1 -1
  342. package/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.ts +1 -1
  343. package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.ts +74 -0
  344. package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.ts +77 -0
  345. package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +7 -7
  346. package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +5 -5
  347. package/tests/cases/unit/aclVariablesFactory.test.ts +8 -35
  348. package/tests/cases/unit/conditionOptimizer.test.ts +135 -0
  349. package/tests/cases/unit/orderbyHelper.test.ts +1 -0
  350. package/tests/cases/unit/permissionMerger.test.ts +2 -0
  351. package/tests/cases/unit/predicatesFactory.test.ts +103 -0
  352. package/tests/cases/unit/predicatesInjector.test.ts +78 -16
  353. package/tests/cases/unit/variableInjector.test.ts +6 -5
  354. package/tests/cases/unit/whereBuilder.test.ts +84 -0
  355. package/tests/cases/unit/whereOptimizer.test.ts +289 -0
  356. package/tests/src/testGraphql.ts +9 -2
  357. package/dist/src/inputProcessing/InputContext.d.ts +0 -43
  358. package/dist/src/inputProcessing/InputContext.d.ts.map +0 -1
  359. package/dist/src/inputProcessing/InputContext.js +0 -3
  360. package/dist/src/inputProcessing/InputContext.js.map +0 -1
  361. package/src/inputProcessing/InputContext.ts +0 -49
@@ -1,5 +1,5 @@
1
1
  import { Input, Model } from '@contember/schema'
2
- import { GroupedCounts, JoiningColumns, Mapper, RelationFetcher, SelectGroupedObjects } from '../../mapper'
2
+ import { Mapper, RelationFetcher, SelectGroupedObjects } from '../../mapper'
3
3
  import { ObjectNode } from '../../inputProcessing'
4
4
 
5
5
  export class PaginatedHasManyNodesVisitor implements
@@ -11,65 +11,42 @@ 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
- this.mapper,
24
- this.objectNode,
25
- targetEntity,
26
- relation,
27
- targetRelation,
28
- this.ids,
19
+ {
20
+ mapper: this.mapper,
21
+ objectNode: this.objectNode,
22
+ relationContext,
23
+ relationPath: this.relationPath,
24
+ ids: this.ids,
25
+ },
29
26
  )
30
27
  }
31
28
 
32
- async visitManyHasManyOwning(
33
- entity: Model.Entity,
34
- relation: Model.ManyHasManyOwningRelation,
35
- targetEntity: Model.Entity,
36
- targetRelation: Model.ManyHasManyInverseRelation | null,
37
- ): Promise<SelectGroupedObjects> {
38
- const joiningTable = relation.joiningTable
39
- const columns: JoiningColumns = {
40
- sourceColumn: joiningTable.joiningColumn,
41
- targetColumn: joiningTable.inverseJoiningColumn,
42
- }
29
+ async visitManyHasManyOwning(relationContext: Model.ManyHasManyOwningContext) {
43
30
  return await this.relationFetcher.fetchManyHasManyGroups(
44
- this.mapper,
45
- this.objectNode,
46
- targetEntity,
47
- relation,
48
- relation,
49
- columns,
50
- this.ids,
31
+ {
32
+ mapper: this.mapper,
33
+ field: this.objectNode,
34
+ relationContext,
35
+ relationPath: this.relationPath,
36
+ ids: this.ids,
37
+ },
51
38
  )
52
39
  }
53
40
 
54
- async visitManyHasManyInverse(
55
- entity: Model.Entity,
56
- relation: Model.ManyHasManyInverseRelation,
57
- targetEntity: Model.Entity,
58
- targetRelation: Model.ManyHasManyOwningRelation,
59
- ): Promise<SelectGroupedObjects> {
60
- const joiningTable = targetRelation.joiningTable
61
- const columns: JoiningColumns = {
62
- targetColumn: joiningTable.joiningColumn,
63
- sourceColumn: joiningTable.inverseJoiningColumn,
64
- }
41
+ async visitManyHasManyInverse(relationContext: Model.ManyHasManyInverseContext) {
65
42
  return await this.relationFetcher.fetchManyHasManyGroups(
66
- this.mapper,
67
- this.objectNode,
68
- targetEntity,
69
- relation,
70
- targetRelation,
71
- columns,
72
- this.ids,
43
+ {
44
+ mapper: this.mapper,
45
+ field: this.objectNode,
46
+ relationContext,
47
+ relationPath: this.relationPath,
48
+ ids: this.ids,
49
+ },
73
50
  )
74
51
  }
75
52
 
@@ -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
  }
@@ -35,7 +35,7 @@ export class EntityRulesResolver {
35
35
 
36
36
  public getEntityRules(entityName: string): Validation.EntityRules {
37
37
  const definedRules = this.validationSchema[entityName] || {}
38
- const fieldsNotNullFlag = acceptEveryFieldVisitor(this.model, entityName, new NotNullFieldsVisitor())
38
+ const fieldsNotNullFlag = acceptEveryFieldVisitor(this.model, entityName, new RequiredFieldsVisitor())
39
39
  const notNullFields = Object.keys(filterObject(fieldsNotNullFlag, (field, val) => val))
40
40
  return notNullFields.reduce(
41
41
  (entityRules, field) => ({
@@ -50,9 +50,9 @@ export class EntityRulesResolver {
50
50
  }
51
51
  }
52
52
 
53
- class NotNullFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Model.ColumnVisitor<boolean> {
54
- visitColumn(entity: Model.Entity, column: Model.AnyColumn): boolean {
55
- return !column.nullable
53
+ class RequiredFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Model.ColumnVisitor<boolean> {
54
+ visitColumn({ column }: Model.ColumnContext): boolean {
55
+ return !column.nullable && typeof column.default === 'undefined' && !column.sequence
56
56
  }
57
57
 
58
58
  visitManyHasManyInverse(): boolean {
@@ -63,7 +63,7 @@ class NotNullFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Mode
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 NotNullFieldsVisitor implements Model.RelationByTypeVisitor<boolean>, Mode
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, {}),
@@ -10,7 +10,7 @@ namespace ValidationContext {
10
10
  }
11
11
 
12
12
  export type NodeType = Value.Object
13
- export type ValueType = Value.FieldValue
13
+ export type ValueType = Value.FieldValue | undefined
14
14
 
15
15
  export enum NodeContextType {
16
16
  value = 'value',
@@ -69,7 +69,7 @@ namespace ValidationContext {
69
69
 
70
70
  export const createSingleNodeContext = (
71
71
  parent: NodeContext | ValueContext,
72
- value: object | null | string | number | boolean,
72
+ value: ValueType,
73
73
  ): NodeContext | ValueContext => {
74
74
  if (Array.isArray(value)) {
75
75
  throw new Error('Nested arrays are not allowed')
@@ -1,6 +1,6 @@
1
1
  import { QueryAstFactory } from './QueryAstFactory'
2
2
  import { Mapper } from '../mapper'
3
- import { Dependencies, DependencyCollector } from './dependencies'
3
+ import { Dependencies } from './dependencies'
4
4
  import { Input, Model, Value } from '@contember/schema'
5
5
 
6
6
  export class ValidationDataSelector {
@@ -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)
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 {