@contember/engine-content-api 1.2.0-alpha.10 → 1.2.0-alpha.11

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 (236) hide show
  1. package/dist/src/acl/PredicateFactory.d.ts +1 -1
  2. package/dist/src/acl/PredicateFactory.d.ts.map +1 -1
  3. package/dist/src/acl/PredicateFactory.js +6 -13
  4. package/dist/src/acl/PredicateFactory.js.map +1 -1
  5. package/dist/src/acl/PredicatesInjector.d.ts +1 -1
  6. package/dist/src/acl/PredicatesInjector.d.ts.map +1 -1
  7. package/dist/src/acl/PredicatesInjector.js +13 -20
  8. package/dist/src/acl/PredicatesInjector.js.map +1 -1
  9. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts +0 -1
  10. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts.map +1 -1
  11. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +14 -15
  12. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
  13. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts +1 -1
  14. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
  15. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +1 -1
  16. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  17. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts +5 -4
  18. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
  19. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js +11 -14
  20. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
  21. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.d.ts.map +1 -1
  22. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js +2 -2
  23. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
  24. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts +3 -3
  25. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
  26. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +3 -3
  27. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
  28. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts +5 -4
  29. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
  30. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js +11 -15
  31. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
  32. package/dist/src/input-validation/ColumnValueResolver.d.ts +4 -3
  33. package/dist/src/input-validation/ColumnValueResolver.d.ts.map +1 -1
  34. package/dist/src/input-validation/ColumnValueResolver.js.map +1 -1
  35. package/dist/src/input-validation/EntityRulesResolver.js +4 -4
  36. package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
  37. package/dist/src/input-validation/QueryAstFactory.js +1 -1
  38. package/dist/src/input-validation/QueryAstFactory.js.map +1 -1
  39. package/dist/src/input-validation/ValidationDataSelector.js +1 -1
  40. package/dist/src/input-validation/ValidationDataSelector.js.map +1 -1
  41. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +7 -8
  42. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  43. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  44. package/dist/src/input-validation/preValidation/InputPreValidator.js +4 -4
  45. package/dist/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  46. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +7 -8
  47. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  48. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  49. package/dist/src/inputProcessing/CreateInputProcessor.d.ts +8 -9
  50. package/dist/src/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  51. package/dist/src/inputProcessing/CreateInputVisitor.d.ts +7 -7
  52. package/dist/src/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  53. package/dist/src/inputProcessing/CreateInputVisitor.js +15 -46
  54. package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  55. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts +8 -9
  56. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  57. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts +7 -7
  58. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  59. package/dist/src/inputProcessing/UpdateInputVisitor.js +13 -28
  60. package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  61. package/dist/src/inputProcessing/index.d.ts +0 -1
  62. package/dist/src/inputProcessing/index.d.ts.map +1 -1
  63. package/dist/src/inputProcessing/index.js +0 -1
  64. package/dist/src/inputProcessing/index.js.map +1 -1
  65. package/dist/src/introspection/IntrospectionSchemaFactory.js +7 -7
  66. package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  67. package/dist/src/mapper/Mapper.d.ts +6 -6
  68. package/dist/src/mapper/Mapper.d.ts.map +1 -1
  69. package/dist/src/mapper/Mapper.js +28 -23
  70. package/dist/src/mapper/Mapper.js.map +1 -1
  71. package/dist/src/mapper/MapperContainer.d.ts.map +1 -1
  72. package/dist/src/mapper/MapperContainer.js +2 -2
  73. package/dist/src/mapper/MapperContainer.js.map +1 -1
  74. package/dist/src/mapper/delete/DeleteExecutor.js +3 -3
  75. package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
  76. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts +4 -2
  77. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  78. package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  79. package/dist/src/mapper/select/JoinVisitor.d.ts +6 -6
  80. package/dist/src/mapper/select/JoinVisitor.d.ts.map +1 -1
  81. package/dist/src/mapper/select/JoinVisitor.js +6 -6
  82. package/dist/src/mapper/select/JoinVisitor.js.map +1 -1
  83. package/dist/src/mapper/select/RelationFetcher.d.ts +11 -19
  84. package/dist/src/mapper/select/RelationFetcher.d.ts.map +1 -1
  85. package/dist/src/mapper/select/RelationFetcher.js +34 -25
  86. package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
  87. package/dist/src/mapper/select/SelectBuilder.d.ts +2 -1
  88. package/dist/src/mapper/select/SelectBuilder.d.ts.map +1 -1
  89. package/dist/src/mapper/select/SelectBuilder.js +4 -2
  90. package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
  91. package/dist/src/mapper/select/SelectBuilderFactory.d.ts +2 -1
  92. package/dist/src/mapper/select/SelectBuilderFactory.d.ts.map +1 -1
  93. package/dist/src/mapper/select/SelectExecutionHandler.d.ts +1 -0
  94. package/dist/src/mapper/select/SelectExecutionHandler.d.ts.map +1 -1
  95. package/dist/src/mapper/select/WhereBuilder.d.ts +3 -2
  96. package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
  97. package/dist/src/mapper/select/WhereBuilder.js +29 -24
  98. package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
  99. package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts +9 -8
  100. package/dist/src/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  101. package/dist/src/mapper/select/handlers/FieldsVisitor.js +33 -25
  102. package/dist/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  103. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
  104. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js +1 -1
  105. package/dist/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  106. package/dist/src/mapper/select/optimizer/ConditionOptimizer.d.ts.map +1 -1
  107. package/dist/src/mapper/select/optimizer/ConditionOptimizer.js +6 -0
  108. package/dist/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
  109. package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts +2 -1
  110. package/dist/src/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -1
  111. package/dist/src/mapper/select/optimizer/WhereOptimizer.js +52 -20
  112. package/dist/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
  113. package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts +4 -1
  114. package/dist/src/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -1
  115. package/dist/src/mapper/select/optimizer/WhereReplacer.js +4 -3
  116. package/dist/src/mapper/select/optimizer/WhereReplacer.js.map +1 -1
  117. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts +2 -3
  118. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  119. package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  120. package/dist/src/mapper/update/UpdateBuilder.js +3 -3
  121. package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
  122. package/dist/src/resolvers/MutationResolver.js +1 -1
  123. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  124. package/dist/src/resolvers/ReadHelpers.js +3 -3
  125. package/dist/src/resolvers/ReadHelpers.js.map +1 -1
  126. package/dist/src/resolvers/ReadResolver.js +2 -2
  127. package/dist/src/resolvers/ReadResolver.js.map +1 -1
  128. package/dist/src/schema/FieldAccessVisitor.d.ts +2 -2
  129. package/dist/src/schema/FieldAccessVisitor.d.ts.map +1 -1
  130. package/dist/src/schema/FieldAccessVisitor.js +2 -2
  131. package/dist/src/schema/FieldAccessVisitor.js.map +1 -1
  132. package/dist/src/schema/OrderByTypeProvider.js +1 -1
  133. package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
  134. package/dist/src/schema/WhereTypeProvider.js +4 -4
  135. package/dist/src/schema/WhereTypeProvider.js.map +1 -1
  136. package/dist/src/schema/entities/FieldArgsVisitor.d.ts +3 -3
  137. package/dist/src/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
  138. package/dist/src/schema/entities/FieldArgsVisitor.js +3 -3
  139. package/dist/src/schema/entities/FieldArgsVisitor.js.map +1 -1
  140. package/dist/src/schema/entities/FieldTypeVisitor.d.ts +3 -3
  141. package/dist/src/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
  142. package/dist/src/schema/entities/FieldTypeVisitor.js +3 -3
  143. package/dist/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  144. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts +3 -3
  145. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
  146. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +3 -3
  147. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  148. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
  149. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  150. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +6 -6
  151. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  152. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +3 -3
  153. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  154. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +5 -5
  155. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  156. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +10 -4
  157. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
  158. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +3 -3
  159. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  160. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts +6 -6
  161. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  162. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +6 -6
  163. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  164. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +2 -2
  165. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  166. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +2 -2
  167. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  168. package/dist/src/tsconfig.tsbuildinfo +1 -1
  169. package/dist/src/utils/uniqueWhereFields.js +3 -3
  170. package/dist/src/utils/uniqueWhereFields.js.map +1 -1
  171. package/dist/tests/cases/unit/predicatesFactory.test.js +7 -1
  172. package/dist/tests/cases/unit/predicatesFactory.test.js.map +1 -1
  173. package/dist/tests/cases/unit/whereOptimizer.test.js +82 -0
  174. package/dist/tests/cases/unit/whereOptimizer.test.js.map +1 -1
  175. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  176. package/package.json +10 -10
  177. package/src/acl/PredicateFactory.ts +7 -14
  178. package/src/acl/PredicatesInjector.ts +13 -18
  179. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +17 -24
  180. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +1 -6
  181. package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +10 -28
  182. package/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.ts +6 -3
  183. package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +4 -22
  184. package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +10 -29
  185. package/src/input-validation/ColumnValueResolver.ts +2 -3
  186. package/src/input-validation/EntityRulesResolver.ts +4 -4
  187. package/src/input-validation/QueryAstFactory.ts +1 -1
  188. package/src/input-validation/ValidationDataSelector.ts +1 -1
  189. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +7 -8
  190. package/src/input-validation/preValidation/InputPreValidator.ts +4 -4
  191. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +7 -8
  192. package/src/inputProcessing/CreateInputProcessor.ts +8 -9
  193. package/src/inputProcessing/CreateInputVisitor.ts +27 -89
  194. package/src/inputProcessing/UpdateInputProcessor.ts +8 -9
  195. package/src/inputProcessing/UpdateInputVisitor.ts +25 -71
  196. package/src/inputProcessing/index.ts +0 -1
  197. package/src/introspection/IntrospectionSchemaFactory.ts +7 -7
  198. package/src/mapper/Mapper.ts +36 -33
  199. package/src/mapper/MapperContainer.ts +3 -2
  200. package/src/mapper/delete/DeleteExecutor.ts +3 -3
  201. package/src/mapper/insert/SqlCreateInputProcessor.ts +3 -3
  202. package/src/mapper/select/JoinVisitor.ts +6 -33
  203. package/src/mapper/select/RelationFetcher.ts +49 -50
  204. package/src/mapper/select/SelectBuilder.ts +3 -1
  205. package/src/mapper/select/SelectBuilderFactory.ts +2 -1
  206. package/src/mapper/select/SelectExecutionHandler.ts +1 -0
  207. package/src/mapper/select/WhereBuilder.ts +45 -34
  208. package/src/mapper/select/handlers/FieldsVisitor.ts +32 -49
  209. package/src/mapper/select/handlers/FieldsVisitorFactory.ts +1 -0
  210. package/src/mapper/select/optimizer/ConditionOptimizer.ts +6 -0
  211. package/src/mapper/select/optimizer/WhereOptimizer.ts +58 -20
  212. package/src/mapper/select/optimizer/WhereReplacer.ts +8 -3
  213. package/src/mapper/update/SqlUpdateInputProcessor.ts +1 -1
  214. package/src/mapper/update/UpdateBuilder.ts +3 -3
  215. package/src/resolvers/MutationResolver.ts +1 -1
  216. package/src/resolvers/ReadHelpers.ts +3 -3
  217. package/src/resolvers/ReadResolver.ts +2 -2
  218. package/src/schema/FieldAccessVisitor.ts +2 -2
  219. package/src/schema/OrderByTypeProvider.ts +1 -1
  220. package/src/schema/WhereTypeProvider.ts +4 -4
  221. package/src/schema/entities/FieldArgsVisitor.ts +3 -3
  222. package/src/schema/entities/FieldTypeVisitor.ts +3 -3
  223. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +3 -6
  224. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +6 -20
  225. package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +5 -18
  226. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +3 -6
  227. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +6 -20
  228. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +2 -12
  229. package/src/utils/uniqueWhereFields.ts +3 -3
  230. package/tests/cases/unit/predicatesFactory.test.ts +8 -2
  231. package/tests/cases/unit/whereOptimizer.test.ts +94 -0
  232. package/dist/src/inputProcessing/InputContext.d.ts +0 -43
  233. package/dist/src/inputProcessing/InputContext.d.ts.map +0 -1
  234. package/dist/src/inputProcessing/InputContext.js +0 -3
  235. package/dist/src/inputProcessing/InputContext.js.map +0 -1
  236. package/src/inputProcessing/InputContext.ts +0 -49
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-content-api",
3
- "version": "1.2.0-alpha.10",
3
+ "version": "1.2.0-alpha.11",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -10,19 +10,19 @@
10
10
  "test": "vitest --no-threads"
11
11
  },
12
12
  "dependencies": {
13
- "@contember/database": "^1.2.0-alpha.10",
14
- "@contember/dic": "^1.2.0-alpha.10",
15
- "@contember/engine-common": "^1.2.0-alpha.10",
16
- "@contember/graphql-utils": "^1.2.0-alpha.10",
17
- "@contember/schema": "^1.2.0-alpha.10",
18
- "@contember/schema-utils": "^1.2.0-alpha.10",
13
+ "@contember/database": "^1.2.0-alpha.11",
14
+ "@contember/dic": "^1.2.0-alpha.11",
15
+ "@contember/engine-common": "^1.2.0-alpha.11",
16
+ "@contember/graphql-utils": "^1.2.0-alpha.11",
17
+ "@contember/schema": "^1.2.0-alpha.11",
18
+ "@contember/schema-utils": "^1.2.0-alpha.11",
19
19
  "@graphql-tools/schema": "^8.3.5",
20
20
  "graphql-tag": "^2.12.5"
21
21
  },
22
22
  "devDependencies": {
23
- "@contember/database-tester": "^1.2.0-alpha.10",
24
- "@contember/engine-api-tester": "^1.2.0-alpha.10",
25
- "@contember/schema-definition": "^1.2.0-alpha.10",
23
+ "@contember/database-tester": "^1.2.0-alpha.11",
24
+ "@contember/engine-api-tester": "^1.2.0-alpha.11",
25
+ "@contember/schema-definition": "^1.2.0-alpha.11",
26
26
  "@graphql-codegen/cli": "^2.6.2",
27
27
  "@graphql-codegen/typescript": "^2.5.1",
28
28
  "@graphql-codegen/typescript-operations": "^2.4.2",
@@ -1,7 +1,5 @@
1
1
  import { Acl, Input, Model } from '@contember/schema'
2
2
  import { VariableInjector } from './VariableInjector'
3
- import { isOwningRelation } from '@contember/schema-utils'
4
- import { ImplementationException } from '../exception'
5
3
  import { EvaluatedPredicateReplacer } from './EvaluatedPredicateReplacer'
6
4
 
7
5
  const getRowLevelPredicatePseudoField = (entity: Model.Entity) => entity.primary
@@ -31,13 +29,13 @@ export class PredicateFactory {
31
29
  entity: Model.Entity,
32
30
  operation: Acl.Operation.update | Acl.Operation.read | Acl.Operation.create,
33
31
  fieldNames?: string[],
34
- overRelation?: Model.AnyRelation,
32
+ relationContext?: Model.AnyRelationContext,
35
33
  ): Input.Where
36
34
  public create(
37
35
  entity: Model.Entity,
38
36
  operation: Acl.Operation,
39
37
  fieldNames?: string[],
40
- overRelation?: Model.AnyRelation,
38
+ relationContext?: Model.AnyRelationContext,
41
39
  ): Input.Where {
42
40
  const entityPermissions: Acl.EntityPermissions = this.permissions[entity.name]
43
41
  const neverCondition: Input.Where = { [entity.primary]: { never: true } }
@@ -85,7 +83,7 @@ export class PredicateFactory {
85
83
  return {}
86
84
  }
87
85
  const where: Input.Where = predicatesWhere.length === 1 ? predicatesWhere[0] : { and: predicatesWhere }
88
- return this.optimizePredicates(where, overRelation)
86
+ return this.optimizePredicates(where, relationContext)
89
87
  }
90
88
 
91
89
  private getRequiredPredicates(
@@ -108,21 +106,16 @@ export class PredicateFactory {
108
106
  return predicates
109
107
  }
110
108
 
111
- private optimizePredicates(where: Input.Where, overRelation?: Model.AnyRelation) {
112
- if (!overRelation) {
109
+ private optimizePredicates(where: Input.Where, relationContext?: Model.AnyRelationContext) {
110
+ if (!relationContext || !relationContext.targetRelation) {
113
111
  return where
114
112
  }
115
- const otherSide = isOwningRelation(overRelation) ? overRelation.inversedBy : overRelation.ownedBy
116
- if (!otherSide) {
117
- throw new ImplementationException()
118
- }
119
- const sourceEntity = this.model.entities[overRelation.target]
120
- const sourcePredicate = this.create(sourceEntity, Acl.Operation.read, [otherSide])
113
+ const sourcePredicate = this.create(relationContext.entity, Acl.Operation.read, [relationContext.relation.name])
121
114
  if (Object.keys(sourcePredicate).length === 0) {
122
115
  return where
123
116
  }
124
117
 
125
- const replacer = new EvaluatedPredicateReplacer(sourcePredicate, sourceEntity, overRelation)
118
+ const replacer = new EvaluatedPredicateReplacer(sourcePredicate, relationContext.entity, relationContext.targetRelation)
126
119
  return replacer.replace(where)
127
120
  }
128
121
  }
@@ -5,18 +5,18 @@ import { PredicateFactory } from './PredicateFactory'
5
5
  export class PredicatesInjector {
6
6
  constructor(private readonly schema: Model.Schema, private readonly predicateFactory: PredicateFactory) {}
7
7
 
8
- public inject(entity: Model.Entity, where: Input.OptionalWhere, overRelation?: Model.AnyRelation): Input.OptionalWhere {
8
+ public inject(entity: Model.Entity, where: Input.OptionalWhere, relationContext?: Model.AnyRelationContext): Input.OptionalWhere {
9
9
  const restrictedWhere = this.injectToWhere(where, entity, true)
10
- return this.createWhere(entity, undefined, restrictedWhere, overRelation)
10
+ return this.createWhere(entity, undefined, restrictedWhere, relationContext)
11
11
  }
12
12
 
13
13
  private createWhere(
14
14
  entity: Model.Entity,
15
15
  fieldNames: string[] | undefined,
16
16
  where: Input.OptionalWhere,
17
- overRelation?: Model.AnyRelation,
17
+ relationContext?: Model.AnyRelationContext,
18
18
  ): Input.OptionalWhere {
19
- const predicatesWhere: Input.Where = this.predicateFactory.create(entity, Acl.Operation.read, fieldNames, overRelation)
19
+ const predicatesWhere: Input.Where = this.predicateFactory.create(entity, Acl.Operation.read, fieldNames, relationContext)
20
20
 
21
21
  const and = [where, predicatesWhere].filter(it => Object.keys(it).length > 0)
22
22
  if (and.length === 0) {
@@ -32,17 +32,17 @@ export class PredicatesInjector {
32
32
  where: Input.OptionalWhere,
33
33
  entity: Model.Entity,
34
34
  isRoot: boolean,
35
- overRelation?: Model.AnyRelation,
35
+ relationContext?: Model.AnyRelationContext,
36
36
  ): Input.OptionalWhere {
37
37
  const resultWhere: Writable<Input.OptionalWhere> = {}
38
38
  if (where.and) {
39
- resultWhere.and = where.and.filter((it): it is Input.Where => !!it).map(it => this.injectToWhere(it, entity, isRoot, overRelation))
39
+ resultWhere.and = where.and.filter((it): it is Input.Where => !!it).map(it => this.injectToWhere(it, entity, isRoot, relationContext))
40
40
  }
41
41
  if (where.or) {
42
- resultWhere.or = where.or.filter((it): it is Input.Where => !!it).map(it => this.injectToWhere(it, entity, isRoot, overRelation))
42
+ resultWhere.or = where.or.filter((it): it is Input.Where => !!it).map(it => this.injectToWhere(it, entity, isRoot, relationContext))
43
43
  }
44
44
  if (where.not) {
45
- resultWhere.not = this.injectToWhere(where.not, entity, isRoot, overRelation)
45
+ resultWhere.not = this.injectToWhere(where.not, entity, isRoot, relationContext)
46
46
  }
47
47
 
48
48
  const fields = Object.keys(where).filter(it => !['and', 'or', 'not'].includes(it))
@@ -51,21 +51,16 @@ export class PredicatesInjector {
51
51
  return resultWhere
52
52
  }
53
53
  for (let field of fields) {
54
- const [targetEntity, targetRelation] = acceptFieldVisitor(this.schema, entity, field, {
55
- visitColumn: () => null,
56
- visitRelation: (_a, _b, targetEntity, targetRelation) => [targetEntity, targetRelation ?? undefined],
57
- }) ?? []
58
- if (targetEntity) {
59
- resultWhere[field] = this.injectToWhere(where[field] as Input.Where, targetEntity, false, targetRelation)
60
- } else {
61
- resultWhere[field] = where[field]
62
- }
54
+ resultWhere[field] = acceptFieldVisitor(this.schema, entity, field, {
55
+ visitColumn: () => where[field],
56
+ visitRelation: context => this.injectToWhere(where[field] as Input.Where, context.targetEntity, false, context),
57
+ })
63
58
  }
64
59
  const fieldsForPredicate = !isRoot
65
60
  ? fields
66
61
  : fields.filter(it => this.predicateFactory.shouldApplyCellLevelPredicate(entity, Acl.Operation.read, it))
67
62
 
68
- return this.createWhere(entity, fieldsForPredicate, resultWhere, overRelation)
63
+ return this.createWhere(entity, fieldsForPredicate, resultWhere, relationContext)
69
64
  }
70
65
 
71
66
  }
@@ -18,7 +18,19 @@ export class HasManyToHasOneReducerExecutionHandler implements SelectExecutionHa
18
18
  addData(
19
19
  entity.primary,
20
20
  async (ids: Input.PrimaryValue[]) => {
21
- const [targetEntity, targetRelation] = this.getRelationTarget(entity, objectNode.extensions.relationName)
21
+
22
+ const relationContext = acceptFieldVisitor(this.schema, entity, objectNode.extensions.relationName, {
23
+ visitRelation: context => context,
24
+ visitColumn: (): never => {
25
+ throw new ImplementationException('HasManyToHasOneReducerExecutionHandler: Not applicable for a column')
26
+ },
27
+ })
28
+
29
+ const { targetEntity, targetRelation } = relationContext
30
+ if (!targetRelation || !isIt<Model.JoiningColumnRelation>(targetRelation, 'joiningColumn')) {
31
+ throw new Error('HasManyToHasOneReducerExecutionHandler: only applicable for relations with joiningColumn')
32
+ }
33
+
22
34
  const uniqueWhere = this.uniqueWhereExpander.expand(targetEntity, {
23
35
  ...objectNode.args.by,
24
36
  [targetRelation.name]: { [entity.primary]: ids },
@@ -31,31 +43,12 @@ export class HasManyToHasOneReducerExecutionHandler implements SelectExecutionHa
31
43
  }
32
44
  const newObjectNode = objectNode.withArgs<Input.ListQueryInput>({ filter: whereWithParentId })
33
45
 
34
- return context.mapper.select(targetEntity, newObjectNode, targetRelation, targetRelation.name)
46
+ return context.mapper.selectAssoc(targetEntity, newObjectNode, [
47
+ ...context.relationPath,
48
+ relationContext,
49
+ ], targetRelation.name)
35
50
  },
36
51
  null,
37
52
  )
38
53
  }
39
-
40
- private getRelationTarget(
41
- entity: Model.Entity,
42
- relationName: string,
43
- ): [Model.Entity, Model.AnyRelation & Model.JoiningColumnRelation] {
44
- return acceptFieldVisitor(this.schema, entity, relationName, {
45
- visitColumn: (): never => {
46
- throw new ImplementationException('HasManyToHasOneReducerExecutionHandler: Not applicable for a column')
47
- },
48
- visitRelation: (
49
- entity,
50
- relation,
51
- targetEntity,
52
- targetRelation,
53
- ): [Model.Entity, Model.AnyRelation & Model.JoiningColumnRelation] => {
54
- if (!targetRelation || !isIt<Model.JoiningColumnRelation>(targetRelation, 'joiningColumn')) {
55
- throw new Error('HasManyToHasOneReducerExecutionHandler: only applicable for relations with joiningColumn')
56
- }
57
- return [targetEntity, targetRelation]
58
- },
59
- })
60
- }
61
54
  }
@@ -48,12 +48,7 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
48
48
  return {}
49
49
  }
50
50
 
51
- public visitOneHasMany(
52
- entity: Model.Entity,
53
- relation: Model.AnyRelation,
54
- targetEntity: Model.Entity,
55
- targetRelation: Model.AnyRelation | null,
56
- ) {
51
+ public visitOneHasMany({ entity, targetEntity, targetRelation, relation }: Model.OneHasManyContext) {
57
52
  if (!targetRelation) {
58
53
  return {}
59
54
  }
@@ -11,58 +11,40 @@ export class PaginatedHasManyCountVisitor 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<GroupedCounts> {
17
+ async visitOneHasMany(relationContext: Model.OneHasManyContext): Promise<GroupedCounts> {
22
18
  return await this.relationFetcher.countOneHasManyGroups(
23
19
  {
24
20
  mapper: this.mapper,
25
21
  filter: this.objectNode.args.filter,
26
- targetEntity: targetEntity,
27
- targetRelation: targetRelation,
22
+ relationContext,
23
+ relationPath: this.relationPath,
28
24
  ids: this.ids,
29
25
  },
30
26
  )
31
27
  }
32
28
 
33
- async visitManyHasManyOwning(
34
- entity: Model.Entity,
35
- relation: Model.ManyHasManyOwningRelation,
36
- targetEntity: Model.Entity,
37
- targetRelation: Model.ManyHasManyInverseRelation | null,
38
- ): Promise<GroupedCounts> {
29
+ async visitManyHasManyOwning(relationContext: Model.ManyHasManyOwningContext): Promise<GroupedCounts> {
39
30
  return await this.relationFetcher.countManyHasManyGroups(
40
31
  {
41
32
  mapper: this.mapper,
42
33
  filter: this.objectNode.args.filter,
43
- targetEntity: targetEntity,
44
- sourceRelation: relation,
45
- targetRelation,
46
- directionFrom: 'owning',
34
+ relationContext,
35
+ relationPath: this.relationPath,
47
36
  ids: this.ids,
48
37
  },
49
38
  )
50
39
  }
51
40
 
52
- async visitManyHasManyInverse(
53
- entity: Model.Entity,
54
- relation: Model.ManyHasManyInverseRelation,
55
- targetEntity: Model.Entity,
56
- targetRelation: Model.ManyHasManyOwningRelation,
57
- ): Promise<GroupedCounts> {
41
+ async visitManyHasManyInverse(relationContext: Model.ManyHasManyInverseContext): Promise<GroupedCounts> {
58
42
  return await this.relationFetcher.countManyHasManyGroups(
59
43
  {
60
44
  mapper: this.mapper,
61
45
  filter: this.objectNode.args.filter,
62
- targetEntity: targetEntity,
63
- sourceRelation: relation,
64
- targetRelation,
65
- directionFrom: 'inverse',
46
+ relationContext,
47
+ relationPath: this.relationPath,
66
48
  ids: this.ids,
67
49
  },
68
50
  )
@@ -7,7 +7,10 @@ import { PaginatedHasManyCountVisitor } from './PaginatedHasManyCountVisitor'
7
7
  import { PaginatedHasManyNodesVisitor } from './PaginatedHasManyNodesVisitor'
8
8
 
9
9
  export class PaginatedHasManyExecutionHandler implements SelectExecutionHandler<Input.PaginationQueryInput, PaginatedHasManyFieldProviderExtension> {
10
- constructor(private readonly schema: Model.Schema, private readonly relationFetcher: RelationFetcher) {}
10
+ constructor(
11
+ private readonly schema: Model.Schema,
12
+ private readonly relationFetcher: RelationFetcher,
13
+ ) {}
11
14
 
12
15
  process(
13
16
  context: SelectExecutionHandlerContext<Input.PaginationQueryInput, PaginatedHasManyFieldProviderExtension>,
@@ -25,7 +28,7 @@ export class PaginatedHasManyExecutionHandler implements SelectExecutionHandler<
25
28
  this.schema,
26
29
  entity,
27
30
  objectNode.extensions.relationName,
28
- new PaginatedHasManyCountVisitor(ids, objectNode, this.relationFetcher, mapper),
31
+ new PaginatedHasManyCountVisitor(ids, objectNode, this.relationFetcher, mapper, context.relationPath),
29
32
  )
30
33
  : {}
31
34
 
@@ -34,7 +37,7 @@ export class PaginatedHasManyExecutionHandler implements SelectExecutionHandler<
34
37
  this.schema,
35
38
  entity,
36
39
  objectNode.extensions.relationName,
37
- new PaginatedHasManyNodesVisitor(ids, pagination.nodeField, this.relationFetcher, mapper),
40
+ new PaginatedHasManyNodesVisitor(ids, pagination.nodeField, this.relationFetcher, mapper, context.relationPath),
38
41
  )
39
42
  : undefined
40
43
  const result = new Map<Input.PrimaryValue, any>()
@@ -11,37 +11,19 @@ export class PaginatedHasManyFieldProviderVisitor implements
11
11
 
12
12
  constructor(private readonly paginatedFieldFactory: PaginatedFieldConfigFactory) {}
13
13
 
14
- visitOneHasMany(
15
- entity: Model.Entity,
16
- relation: Model.OneHasManyRelation,
17
- targetEntity: Model.Entity,
18
- targetRelation: Model.ManyHasOneRelation,
19
- ): FieldMap<PaginatedHasManyFieldProviderExtension> {
14
+ visitOneHasMany({ targetEntity, relation }: Model.OneHasManyContext) {
20
15
  return this.createField(targetEntity, relation)
21
16
  }
22
17
 
23
- visitManyHasManyOwning(
24
- entity: Model.Entity,
25
- relation: Model.ManyHasManyOwningRelation,
26
- targetEntity: Model.Entity,
27
- targetRelation: Model.ManyHasManyInverseRelation | null,
28
- ): FieldMap<PaginatedHasManyFieldProviderExtension> {
18
+ visitManyHasManyOwning({ targetEntity, relation }: Model.ManyHasManyOwningContext) {
29
19
  return this.createField(targetEntity, relation)
30
20
  }
31
21
 
32
- visitManyHasManyInverse(
33
- entity: Model.Entity,
34
- relation: Model.ManyHasManyInverseRelation,
35
- targetEntity: Model.Entity,
36
- targetRelation: Model.ManyHasManyOwningRelation,
37
- ): FieldMap<PaginatedHasManyFieldProviderExtension> {
22
+ visitManyHasManyInverse({ targetEntity, relation }: Model.ManyHasManyInverseContext) {
38
23
  return this.createField(targetEntity, relation)
39
24
  }
40
25
 
41
- private createField(
42
- entity: Model.Entity,
43
- relation: Model.Relation,
44
- ): FieldMap<PaginatedHasManyFieldProviderExtension> {
26
+ private createField(entity: Model.Entity, relation: Model.Relation): FieldMap<PaginatedHasManyFieldProviderExtension> {
45
27
  return {
46
28
  [`paginate${capitalizeFirstLetter(relation.name)}`]: {
47
29
  ...this.paginatedFieldFactory.createFieldConfig(entity),
@@ -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