@contember/engine-content-api 1.2.1 → 1.3.0-alpha.13

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 (608) hide show
  1. package/dist/src/ExecutionContainer.d.ts +144 -0
  2. package/dist/src/ExecutionContainer.d.ts.map +1 -0
  3. package/dist/src/ExecutionContainer.js +85 -0
  4. package/dist/src/ExecutionContainer.js.map +1 -0
  5. package/dist/src/acl/PermissionFactory.d.ts +5 -4
  6. package/dist/src/acl/PermissionFactory.d.ts.map +1 -1
  7. package/dist/src/acl/PermissionFactory.js +10 -13
  8. package/dist/src/acl/PermissionFactory.js.map +1 -1
  9. package/dist/src/acl/index.d.ts +0 -1
  10. package/dist/src/acl/index.d.ts.map +1 -1
  11. package/dist/src/acl/index.js +0 -1
  12. package/dist/src/acl/index.js.map +1 -1
  13. package/dist/src/index.d.ts +2 -1
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +18 -2
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  18. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js +6 -0
  19. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  20. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  21. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js +6 -0
  22. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  23. package/dist/src/inputProcessing/CreateInputProcessor.d.ts +27 -9
  24. package/dist/src/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  25. package/dist/src/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  26. package/dist/src/inputProcessing/CreateInputVisitor.js +10 -2
  27. package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  28. package/dist/src/inputProcessing/UniqueWhereExpander.d.ts +2 -1
  29. package/dist/src/inputProcessing/UniqueWhereExpander.d.ts.map +1 -1
  30. package/dist/src/inputProcessing/UniqueWhereExpander.js +4 -0
  31. package/dist/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
  32. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts +41 -16
  33. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  34. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  35. package/dist/src/inputProcessing/UpdateInputVisitor.js +7 -2
  36. package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  37. package/dist/src/mapper/ColumnValue.d.ts +2 -2
  38. package/dist/src/mapper/ColumnValue.d.ts.map +1 -1
  39. package/dist/src/mapper/DataManipulationBuilder.d.ts +7 -0
  40. package/dist/src/mapper/DataManipulationBuilder.d.ts.map +1 -0
  41. package/dist/src/mapper/DataManipulationBuilder.js +5 -0
  42. package/dist/src/mapper/DataManipulationBuilder.js.map +1 -0
  43. package/dist/src/mapper/ErrorUtils.d.ts +3 -2
  44. package/dist/src/mapper/ErrorUtils.d.ts.map +1 -1
  45. package/dist/src/mapper/ErrorUtils.js +55 -35
  46. package/dist/src/mapper/ErrorUtils.js.map +1 -1
  47. package/dist/src/mapper/EventManager.d.ts +86 -0
  48. package/dist/src/mapper/EventManager.d.ts.map +1 -0
  49. package/dist/src/mapper/EventManager.js +118 -0
  50. package/dist/src/mapper/EventManager.js.map +1 -0
  51. package/dist/src/mapper/JunctionTableManager.d.ts +12 -11
  52. package/dist/src/mapper/JunctionTableManager.d.ts.map +1 -1
  53. package/dist/src/mapper/JunctionTableManager.js +20 -8
  54. package/dist/src/mapper/JunctionTableManager.js.map +1 -1
  55. package/dist/src/mapper/Mapper.d.ts +21 -19
  56. package/dist/src/mapper/Mapper.d.ts.map +1 -1
  57. package/dist/src/mapper/Mapper.js +78 -25
  58. package/dist/src/mapper/Mapper.js.map +1 -1
  59. package/dist/src/mapper/MapperFactory.d.ts +34 -0
  60. package/dist/src/mapper/MapperFactory.d.ts.map +1 -0
  61. package/dist/src/mapper/MapperFactory.js +41 -0
  62. package/dist/src/mapper/MapperFactory.js.map +1 -0
  63. package/dist/src/mapper/Result.d.ts +7 -5
  64. package/dist/src/mapper/Result.d.ts.map +1 -1
  65. package/dist/src/mapper/Result.js +4 -3
  66. package/dist/src/mapper/Result.js.map +1 -1
  67. package/dist/src/mapper/delete/DeleteExecutor.d.ts +12 -5
  68. package/dist/src/mapper/delete/DeleteExecutor.d.ts.map +1 -1
  69. package/dist/src/mapper/delete/DeleteExecutor.js +183 -77
  70. package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
  71. package/dist/src/mapper/delete/DeleteState.d.ts +22 -0
  72. package/dist/src/mapper/delete/DeleteState.d.ts.map +1 -0
  73. package/dist/src/mapper/delete/DeleteState.js +68 -0
  74. package/dist/src/mapper/delete/DeleteState.js.map +1 -0
  75. package/dist/src/mapper/delete/DeletedEntitiesStorage.d.ts +1 -0
  76. package/dist/src/mapper/delete/DeletedEntitiesStorage.d.ts.map +1 -1
  77. package/dist/src/mapper/delete/DeletedEntitiesStorage.js +5 -0
  78. package/dist/src/mapper/delete/DeletedEntitiesStorage.js.map +1 -1
  79. package/dist/src/mapper/delete/helpers.d.ts +11 -0
  80. package/dist/src/mapper/delete/helpers.d.ts.map +1 -0
  81. package/dist/src/mapper/delete/helpers.js +49 -0
  82. package/dist/src/mapper/delete/helpers.js.map +1 -0
  83. package/dist/src/mapper/index.d.ts +3 -1
  84. package/dist/src/mapper/index.d.ts.map +1 -1
  85. package/dist/src/mapper/index.js +3 -1
  86. package/dist/src/mapper/index.js.map +1 -1
  87. package/dist/src/mapper/insert/InsertBuilder.d.ts +10 -7
  88. package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
  89. package/dist/src/mapper/insert/InsertBuilder.js +24 -11
  90. package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
  91. package/dist/src/mapper/insert/InsertBuilderFactory.d.ts +3 -1
  92. package/dist/src/mapper/insert/InsertBuilderFactory.d.ts.map +1 -1
  93. package/dist/src/mapper/insert/InsertBuilderFactory.js +3 -2
  94. package/dist/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
  95. package/dist/src/mapper/insert/Inserter.d.ts +5 -7
  96. package/dist/src/mapper/insert/Inserter.d.ts.map +1 -1
  97. package/dist/src/mapper/insert/Inserter.js +12 -14
  98. package/dist/src/mapper/insert/Inserter.js.map +1 -1
  99. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts +5 -0
  100. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  101. package/dist/src/mapper/insert/SqlCreateInputProcessor.js +54 -120
  102. package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  103. package/dist/src/mapper/relations/ManyHasManyInputProcessor.d.ts +32 -0
  104. package/dist/src/mapper/relations/ManyHasManyInputProcessor.d.ts.map +1 -0
  105. package/dist/src/mapper/relations/ManyHasManyInputProcessor.js +77 -0
  106. package/dist/src/mapper/relations/ManyHasManyInputProcessor.js.map +1 -0
  107. package/dist/src/mapper/relations/ManyHasOneInputProcessor.d.ts +32 -0
  108. package/dist/src/mapper/relations/ManyHasOneInputProcessor.d.ts.map +1 -0
  109. package/dist/src/mapper/relations/ManyHasOneInputProcessor.js +108 -0
  110. package/dist/src/mapper/relations/ManyHasOneInputProcessor.js.map +1 -0
  111. package/dist/src/mapper/relations/OneHasManyInputProcessor.d.ts +29 -0
  112. package/dist/src/mapper/relations/OneHasManyInputProcessor.d.ts.map +1 -0
  113. package/dist/src/mapper/relations/OneHasManyInputProcessor.js +61 -0
  114. package/dist/src/mapper/relations/OneHasManyInputProcessor.js.map +1 -0
  115. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts +21 -0
  116. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -0
  117. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js +74 -0
  118. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
  119. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts +32 -0
  120. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -0
  121. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js +125 -0
  122. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
  123. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts +21 -0
  124. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -0
  125. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +72 -0
  126. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
  127. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts +37 -0
  128. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -0
  129. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +193 -0
  130. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
  131. package/dist/src/mapper/select/JoinBuilder.d.ts +1 -1
  132. package/dist/src/mapper/select/JoinBuilder.d.ts.map +1 -1
  133. package/dist/src/mapper/select/JoinBuilder.js.map +1 -1
  134. package/dist/src/mapper/select/OrderByHelper.d.ts +1 -1
  135. package/dist/src/mapper/select/OrderByHelper.d.ts.map +1 -1
  136. package/dist/src/mapper/select/OrderByHelper.js +3 -1
  137. package/dist/src/mapper/select/OrderByHelper.js.map +1 -1
  138. package/dist/src/mapper/select/RelationFetcher.js +2 -2
  139. package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
  140. package/dist/src/mapper/select/WhereBuilder.d.ts +2 -2
  141. package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
  142. package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
  143. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts +5 -0
  144. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  145. package/dist/src/mapper/update/SqlUpdateInputProcessor.js +52 -389
  146. package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  147. package/dist/src/mapper/update/UpdateBuilder.d.ts +10 -7
  148. package/dist/src/mapper/update/UpdateBuilder.d.ts.map +1 -1
  149. package/dist/src/mapper/update/UpdateBuilder.js +43 -19
  150. package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
  151. package/dist/src/mapper/update/UpdateBuilderFactory.d.ts +4 -2
  152. package/dist/src/mapper/update/UpdateBuilderFactory.d.ts.map +1 -1
  153. package/dist/src/mapper/update/UpdateBuilderFactory.js +4 -3
  154. package/dist/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
  155. package/dist/src/mapper/update/Updater.d.ts +4 -5
  156. package/dist/src/mapper/update/Updater.d.ts.map +1 -1
  157. package/dist/src/mapper/update/Updater.js +19 -24
  158. package/dist/src/mapper/update/Updater.js.map +1 -1
  159. package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts +1 -3
  160. package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
  161. package/dist/src/resolvers/GraphQlQueryAstFactory.js +1 -4
  162. package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  163. package/dist/src/resolvers/MutationResolver.d.ts +3 -4
  164. package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
  165. package/dist/src/resolvers/MutationResolver.js +12 -13
  166. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  167. package/dist/src/resolvers/ReadResolver.d.ts +1 -3
  168. package/dist/src/resolvers/ReadResolver.d.ts.map +1 -1
  169. package/dist/src/resolvers/ReadResolver.js +6 -10
  170. package/dist/src/resolvers/ReadResolver.js.map +1 -1
  171. package/dist/src/resolvers/ValidationResolver.d.ts +1 -3
  172. package/dist/src/resolvers/ValidationResolver.d.ts.map +1 -1
  173. package/dist/src/resolvers/ValidationResolver.js +3 -4
  174. package/dist/src/resolvers/ValidationResolver.js.map +1 -1
  175. package/dist/src/resolvers/index.d.ts +0 -1
  176. package/dist/src/resolvers/index.d.ts.map +1 -1
  177. package/dist/src/resolvers/index.js +0 -1
  178. package/dist/src/resolvers/index.js.map +1 -1
  179. package/dist/src/schema/CustomTypesProvider.d.ts.map +1 -1
  180. package/dist/src/schema/CustomTypesProvider.js +1 -23
  181. package/dist/src/schema/CustomTypesProvider.js.map +1 -1
  182. package/dist/src/schema/GraphQlSchemaBuilderFactory.d.ts +3 -0
  183. package/dist/src/schema/GraphQlSchemaBuilderFactory.d.ts.map +1 -1
  184. package/dist/src/schema/GraphQlSchemaBuilderFactory.js +4 -2
  185. package/dist/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
  186. package/dist/src/schema/MutationProvider.js +4 -4
  187. package/dist/src/schema/MutationProvider.js.map +1 -1
  188. package/dist/src/schema/QueryProvider.js +3 -3
  189. package/dist/src/schema/QueryProvider.js.map +1 -1
  190. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts +15 -0
  191. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts.map +1 -0
  192. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.js +43 -0
  193. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -0
  194. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
  195. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +2 -6
  196. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  197. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  198. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +3 -0
  199. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  200. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +3 -1
  201. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  202. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +15 -8
  203. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  204. package/dist/src/schema/mutations/EntityInputProvider.d.ts.map +1 -1
  205. package/dist/src/schema/mutations/EntityInputProvider.js +0 -3
  206. package/dist/src/schema/mutations/EntityInputProvider.js.map +1 -1
  207. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
  208. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +2 -6
  209. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  210. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  211. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +3 -0
  212. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  213. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +3 -1
  214. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  215. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +11 -22
  216. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  217. package/dist/src/tsconfig.tsbuildinfo +1 -1
  218. package/dist/src/types.d.ts +3 -4
  219. package/dist/src/types.d.ts.map +1 -1
  220. package/dist/src/utils/index.d.ts +0 -1
  221. package/dist/src/utils/index.d.ts.map +1 -1
  222. package/dist/src/utils/index.js +0 -1
  223. package/dist/src/utils/index.js.map +1 -1
  224. package/dist/src/utils/uniqueWhereFields.js +1 -1
  225. package/dist/src/utils/uniqueWhereFields.js.map +1 -1
  226. package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js +3 -5
  227. package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js.map +1 -1
  228. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js +2 -2
  229. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js.map +1 -1
  230. package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js +1 -1
  231. package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js.map +1 -1
  232. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js +45 -45
  233. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js.map +1 -1
  234. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js +5 -5
  235. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js.map +1 -1
  236. package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js +2 -2
  237. package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js.map +1 -1
  238. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js +8 -8
  239. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js.map +1 -1
  240. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js +7 -10
  241. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js.map +1 -1
  242. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js +2 -2
  243. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js.map +1 -1
  244. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +13 -32
  245. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
  246. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js +11 -30
  247. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js.map +1 -1
  248. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js +62 -45
  249. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js.map +1 -1
  250. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js +10 -11
  251. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js.map +1 -1
  252. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js +29 -18
  253. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js.map +1 -1
  254. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.d.ts +2 -0
  255. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.d.ts.map +1 -0
  256. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.js +97 -0
  257. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.js.map +1 -0
  258. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js +58 -22
  259. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js.map +1 -1
  260. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.d.ts +2 -0
  261. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.d.ts.map +1 -0
  262. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/{insertRelationCreate.test.js → create.test.js} +1 -1
  263. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.js.map +1 -0
  264. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.d.ts +2 -0
  265. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.d.ts.map +1 -0
  266. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/{insertRelationCreate.test.js → create.test.js} +1 -1
  267. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.js.map +1 -0
  268. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.d.ts +2 -0
  269. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.d.ts.map +1 -0
  270. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.js +99 -0
  271. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.js.map +1 -0
  272. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.d.ts +2 -0
  273. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.d.ts.map +1 -0
  274. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/{insertRelationCreate.test.js → create.test.js} +1 -1
  275. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.js.map +1 -0
  276. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.d.ts +2 -0
  277. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.d.ts.map +1 -0
  278. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationConnect.test.js → connect.test.js} +4 -4
  279. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.js.map +1 -0
  280. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.d.ts +2 -0
  281. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.d.ts.map +1 -0
  282. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationCreate.test.js → create.test.js} +1 -1
  283. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.js.map +1 -0
  284. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.d.ts +2 -0
  285. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.d.ts.map +1 -0
  286. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/{insertRelationCreate.test.js → create.test.js} +1 -1
  287. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.js.map +1 -0
  288. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.d.ts +2 -0
  289. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.d.ts.map +1 -0
  290. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationCreate.test.js → create.test.js} +1 -1
  291. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.js.map +1 -0
  292. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.d.ts +2 -0
  293. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.d.ts.map +1 -0
  294. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationEmpty.test.js → empty.test.js} +1 -1
  295. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.js.map +1 -0
  296. package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.d.ts +2 -0
  297. package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.d.ts.map +1 -0
  298. package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.js +91 -0
  299. package/dist/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.js.map +1 -0
  300. package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js +1 -1
  301. package/dist/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.js.map +1 -1
  302. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.d.ts +2 -0
  303. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.d.ts.map +1 -0
  304. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.js +67 -0
  305. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.js.map +1 -0
  306. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +6 -18
  307. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
  308. package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js +3 -4
  309. package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js.map +1 -1
  310. package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js +3 -8
  311. package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js.map +1 -1
  312. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js +49 -11
  313. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js.map +1 -1
  314. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js +3 -9
  315. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js.map +1 -1
  316. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js +3 -9
  317. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js.map +1 -1
  318. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js +49 -11
  319. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js.map +1 -1
  320. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js +3 -9
  321. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js.map +1 -1
  322. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js +3 -9
  323. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js.map +1 -1
  324. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js +3 -10
  325. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js.map +1 -1
  326. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js +3 -10
  327. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js.map +1 -1
  328. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js +83 -49
  329. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js.map +1 -1
  330. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js +3 -9
  331. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js.map +1 -1
  332. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js +3 -9
  333. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js.map +1 -1
  334. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js +6 -18
  335. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js.map +1 -1
  336. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js +10 -11
  337. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js.map +1 -1
  338. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js +3 -11
  339. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js.map +1 -1
  340. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js +49 -11
  341. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js.map +1 -1
  342. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js +3 -8
  343. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js.map +1 -1
  344. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js +3 -6
  345. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js.map +1 -1
  346. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js +3 -6
  347. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js.map +1 -1
  348. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js +97 -29
  349. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js.map +1 -1
  350. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js +14 -15
  351. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js.map +1 -1
  352. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js +101 -11
  353. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js.map +1 -1
  354. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js +11 -12
  355. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js.map +1 -1
  356. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.d.ts +1 -0
  357. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.d.ts.map +1 -1
  358. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.js +9 -1
  359. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.js.map +1 -1
  360. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js +3 -6
  361. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js.map +1 -1
  362. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js +11 -13
  363. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js.map +1 -1
  364. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js +85 -29
  365. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js.map +1 -1
  366. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.d.ts +2 -0
  367. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.d.ts.map +1 -0
  368. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.js +53 -0
  369. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.js.map +1 -0
  370. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js +75 -9
  371. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js.map +1 -1
  372. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js +66 -25
  373. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js.map +1 -1
  374. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.js +3 -10
  375. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.js.map +1 -1
  376. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.d.ts +1 -0
  377. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.d.ts.map +1 -1
  378. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.js +10 -2
  379. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.js.map +1 -1
  380. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js +3 -9
  381. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js.map +1 -1
  382. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js +6 -19
  383. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js.map +1 -1
  384. package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js +6 -8
  385. package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js.map +1 -1
  386. package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js +9 -24
  387. package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js.map +1 -1
  388. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js +3 -7
  389. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js.map +1 -1
  390. package/dist/tests/cases/unit/orderbyHelper.test.js +13 -2
  391. package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
  392. package/dist/tests/cases/unit/permissionMerger.test.js +8 -3
  393. package/dist/tests/cases/unit/permissionMerger.test.js.map +1 -1
  394. package/dist/tests/cases/unit/predicatesInjector.test.js +1 -1
  395. package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
  396. package/dist/tests/src/test.d.ts +1 -1
  397. package/dist/tests/src/test.d.ts.map +1 -1
  398. package/dist/tests/src/test.js +35 -32
  399. package/dist/tests/src/test.js.map +1 -1
  400. package/dist/tests/src/testGraphql.js +1 -1
  401. package/dist/tests/src/testGraphql.js.map +1 -1
  402. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  403. package/package.json +16 -13
  404. package/src/ExecutionContainer.ts +208 -0
  405. package/src/acl/PermissionFactory.ts +15 -13
  406. package/src/acl/index.ts +0 -1
  407. package/src/index.ts +24 -1
  408. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +6 -0
  409. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +6 -0
  410. package/src/inputProcessing/CreateInputProcessor.ts +8 -11
  411. package/src/inputProcessing/CreateInputVisitor.ts +11 -2
  412. package/src/inputProcessing/UniqueWhereExpander.ts +5 -1
  413. package/src/inputProcessing/UpdateInputProcessor.ts +18 -18
  414. package/src/inputProcessing/UpdateInputVisitor.ts +6 -2
  415. package/src/mapper/ColumnValue.ts +2 -2
  416. package/src/mapper/DataManipulationBuilder.ts +12 -0
  417. package/src/mapper/ErrorUtils.ts +66 -41
  418. package/src/mapper/EventManager.ts +158 -0
  419. package/src/mapper/JunctionTableManager.ts +50 -32
  420. package/src/mapper/Mapper.ts +109 -60
  421. package/src/mapper/MapperFactory.ts +69 -0
  422. package/src/mapper/Result.ts +6 -3
  423. package/src/mapper/delete/DeleteExecutor.ts +262 -95
  424. package/src/mapper/delete/DeleteState.ts +80 -0
  425. package/src/mapper/delete/DeletedEntitiesStorage.ts +6 -0
  426. package/src/mapper/delete/helpers.ts +68 -0
  427. package/src/mapper/index.ts +3 -1
  428. package/src/mapper/insert/InsertBuilder.ts +35 -14
  429. package/src/mapper/insert/InsertBuilderFactory.ts +3 -1
  430. package/src/mapper/insert/Inserter.ts +13 -17
  431. package/src/mapper/insert/SqlCreateInputProcessor.ts +61 -139
  432. package/src/mapper/relations/ManyHasManyInputProcessor.ts +108 -0
  433. package/src/mapper/relations/ManyHasOneInputProcessor.ts +158 -0
  434. package/src/mapper/relations/OneHasManyInputProcessor.ts +101 -0
  435. package/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts +99 -0
  436. package/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.ts +164 -0
  437. package/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts +92 -0
  438. package/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts +253 -0
  439. package/src/mapper/select/JoinBuilder.ts +4 -4
  440. package/src/mapper/select/OrderByHelper.ts +2 -1
  441. package/src/mapper/select/RelationFetcher.ts +2 -2
  442. package/src/mapper/select/WhereBuilder.ts +11 -11
  443. package/src/mapper/update/SqlUpdateInputProcessor.ts +55 -484
  444. package/src/mapper/update/UpdateBuilder.ts +52 -22
  445. package/src/mapper/update/UpdateBuilderFactory.ts +11 -2
  446. package/src/mapper/update/Updater.ts +18 -31
  447. package/src/resolvers/GraphQlQueryAstFactory.ts +1 -2
  448. package/src/resolvers/MutationResolver.ts +16 -15
  449. package/src/resolvers/ReadResolver.ts +5 -9
  450. package/src/resolvers/ValidationResolver.ts +2 -4
  451. package/src/resolvers/index.ts +0 -1
  452. package/src/schema/CustomTypesProvider.ts +2 -27
  453. package/src/schema/GraphQlSchemaBuilderFactory.ts +7 -4
  454. package/src/schema/MutationProvider.ts +4 -4
  455. package/src/schema/QueryProvider.ts +3 -3
  456. package/src/schema/mutations/ConnectOrCreateRelationInputProvider.ts +54 -0
  457. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +2 -6
  458. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +3 -1
  459. package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +20 -15
  460. package/src/schema/mutations/EntityInputProvider.ts +0 -3
  461. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +2 -6
  462. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +3 -1
  463. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +52 -57
  464. package/src/tsconfig.json +7 -21
  465. package/src/types.ts +3 -4
  466. package/src/utils/index.ts +0 -1
  467. package/src/utils/uniqueWhereFields.ts +1 -1
  468. package/tests/cases/bugs/bug-update-by-nested-unique.test.ts +3 -5
  469. package/tests/cases/integration/graphQlDb/insert/insertSequence.test.ts +2 -2
  470. package/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.ts +1 -1
  471. package/tests/cases/integration/graphQlDb/update/deferedConstraints.test.ts +9 -9
  472. package/tests/cases/integration/graphQlDb/update/failedDelete.test.ts +3 -3
  473. package/tests/cases/integration/graphQlDb/update/invalidInput.test.ts +2 -2
  474. package/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.ts +8 -8
  475. package/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.ts +7 -10
  476. package/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.ts +2 -2
  477. package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +15 -34
  478. package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +12 -31
  479. package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +68 -46
  480. package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +11 -12
  481. package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +30 -19
  482. package/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.ts +102 -0
  483. package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +63 -23
  484. package/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.ts +106 -0
  485. package/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationConnect.test.ts → connect.test.ts} +3 -3
  486. package/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.ts +77 -0
  487. package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +1 -1
  488. package/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.ts +67 -0
  489. package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +6 -18
  490. package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +3 -4
  491. package/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.ts +3 -8
  492. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +51 -12
  493. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.ts +3 -9
  494. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.ts +3 -9
  495. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +51 -12
  496. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.ts +3 -9
  497. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.ts +3 -9
  498. package/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.ts +3 -10
  499. package/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.ts +3 -10
  500. package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +86 -50
  501. package/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.ts +3 -9
  502. package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +3 -9
  503. package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +6 -18
  504. package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +11 -12
  505. package/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.ts +3 -11
  506. package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +51 -12
  507. package/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.ts +3 -8
  508. package/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.ts +3 -6
  509. package/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.ts +3 -6
  510. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.ts +101 -31
  511. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.ts +14 -15
  512. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +106 -12
  513. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.ts +11 -12
  514. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.ts +13 -0
  515. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.ts +3 -6
  516. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +11 -13
  517. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.ts +89 -30
  518. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.ts +51 -0
  519. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.ts +77 -11
  520. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.ts +69 -26
  521. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.ts +3 -10
  522. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.ts +14 -1
  523. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +3 -9
  524. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +6 -19
  525. package/tests/cases/integration/graphQlRequests/update/queryPortal.test.ts +6 -8
  526. package/tests/cases/integration/graphQlRequests/update/transaction.test.ts +9 -24
  527. package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +3 -7
  528. package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +14 -1
  529. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -5
  530. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +14 -1
  531. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +12 -0
  532. package/tests/cases/integration/graphQlSchema/schema-basic.gql +40 -2
  533. package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +30 -3
  534. package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +40 -2
  535. package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +14 -1
  536. package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +40 -2
  537. package/tests/cases/unit/orderbyHelper.test.ts +15 -2
  538. package/tests/cases/unit/permissionMerger.test.ts +9 -4
  539. package/tests/cases/unit/predicatesInjector.test.ts +1 -1
  540. package/tests/src/test.ts +40 -41
  541. package/tests/src/testGraphql.ts +1 -1
  542. package/tests/tsconfig.json +3 -9
  543. package/dist/src/acl/PermissionsByIdentityFactory.d.ts +0 -12
  544. package/dist/src/acl/PermissionsByIdentityFactory.d.ts.map +0 -1
  545. package/dist/src/acl/PermissionsByIdentityFactory.js +0 -15
  546. package/dist/src/acl/PermissionsByIdentityFactory.js.map +0 -1
  547. package/dist/src/mapper/MapperContainer.d.ts +0 -18
  548. package/dist/src/mapper/MapperContainer.d.ts.map +0 -1
  549. package/dist/src/mapper/MapperContainer.js +0 -55
  550. package/dist/src/mapper/MapperContainer.js.map +0 -1
  551. package/dist/src/resolvers/ExecutionContainerFactory.d.ts +0 -24
  552. package/dist/src/resolvers/ExecutionContainerFactory.d.ts.map +0 -1
  553. package/dist/src/resolvers/ExecutionContainerFactory.js +0 -45
  554. package/dist/src/resolvers/ExecutionContainerFactory.js.map +0 -1
  555. package/dist/src/utils/arrays.d.ts +0 -3
  556. package/dist/src/utils/arrays.d.ts.map +0 -1
  557. package/dist/src/utils/arrays.js +0 -22
  558. package/dist/src/utils/arrays.js.map +0 -1
  559. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.d.ts +0 -2
  560. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.d.ts.map +0 -1
  561. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.js.map +0 -1
  562. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.d.ts +0 -2
  563. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.d.ts.map +0 -1
  564. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.js.map +0 -1
  565. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.d.ts +0 -2
  566. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.d.ts.map +0 -1
  567. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.js.map +0 -1
  568. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.d.ts +0 -2
  569. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.d.ts.map +0 -1
  570. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.js.map +0 -1
  571. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.d.ts +0 -2
  572. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.d.ts.map +0 -1
  573. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.js.map +0 -1
  574. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.d.ts +0 -2
  575. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.d.ts.map +0 -1
  576. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.js.map +0 -1
  577. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.d.ts +0 -2
  578. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.d.ts.map +0 -1
  579. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.js.map +0 -1
  580. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.d.ts +0 -2
  581. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.d.ts.map +0 -1
  582. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.js.map +0 -1
  583. package/dist/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +0 -407
  584. package/dist/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +0 -229
  585. package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +0 -112
  586. package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +0 -112
  587. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +0 -309
  588. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +0 -389
  589. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +0 -326
  590. package/dist/tests/cases/integration/graphQlSchema/schema-acl.gql +0 -221
  591. package/dist/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +0 -226
  592. package/dist/tests/cases/integration/graphQlSchema/schema-basic.gql +0 -803
  593. package/dist/tests/cases/integration/graphQlSchema/schema-bug-66.gql +0 -513
  594. package/dist/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +0 -813
  595. package/dist/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +0 -440
  596. package/dist/tests/cases/integration/graphQlSchema/schema-new-builder.gql +0 -874
  597. package/dist/tests/cases/integration/graphQlSchema/schema-view-entity.gql +0 -112
  598. package/src/acl/PermissionsByIdentityFactory.ts +0 -21
  599. package/src/mapper/MapperContainer.ts +0 -138
  600. package/src/resolvers/ExecutionContainerFactory.ts +0 -74
  601. package/src/utils/arrays.ts +0 -19
  602. /package/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  603. /package/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  604. /package/tests/cases/integration/graphQlRequests/insert/manyHasOne/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  605. /package/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  606. /package/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  607. /package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  608. /package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationEmpty.test.ts → empty.test.ts} +0 -0
@@ -0,0 +1,253 @@
1
+ import { UpdateInputProcessor } from '../../inputProcessing'
2
+ import { Input, Model } from '@contember/schema'
3
+ import {
4
+ ConstraintType,
5
+ getInsertPrimary,
6
+ MutationConstraintViolationError,
7
+ MutationEntryNotFoundError,
8
+ MutationNothingToDo,
9
+ MutationResultList,
10
+ NothingToDoReason,
11
+ } from '../Result'
12
+ import { Mapper } from '../Mapper'
13
+ import { UpdateBuilder } from '../update/UpdateBuilder'
14
+ import { CheckedPrimary } from '../CheckedPrimary'
15
+ import { AbortDataManipulation } from '../DataManipulationBuilder'
16
+
17
+ export class OneHasOneOwningUpdateInputProcessor {
18
+ constructor(
19
+ private readonly primaryValue: Input.PrimaryValue,
20
+ private readonly mapper: Mapper,
21
+ private readonly updateBuilder: UpdateBuilder,
22
+ ) {
23
+ }
24
+
25
+ public async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {
26
+ const result: MutationResultList = []
27
+ let currentInverseSide: Input.PrimaryValue | undefined
28
+
29
+ const { entity, relation, targetEntity, targetRelation, input } = context
30
+ const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
31
+ const newInverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
32
+ if (!newInverseSide) {
33
+ result.push(new MutationEntryNotFoundError([], input))
34
+ return AbortDataManipulation
35
+ }
36
+ currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
37
+ return await this.connectInternal(context, currentInverseSide, newInverseSide, result)
38
+ })
39
+
40
+ if (newInverseSide) {
41
+ result.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))
42
+ }
43
+
44
+ return result
45
+ }
46
+
47
+ public async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {
48
+ const result: MutationResultList = []
49
+ let currentInverseSide: Input.PrimaryValue | undefined
50
+ const { entity, relation, targetEntity, targetRelation } = context
51
+ await this.updateBuilder.addFieldValue(relation.name, async () => {
52
+ currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
53
+ // orphan removal handled bellow
54
+ return await this.createInternal(context, currentInverseSide, result)
55
+ })
56
+
57
+ result.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))
58
+ return result
59
+ }
60
+
61
+ public async connectOrCreate({ input: { connect, create }, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {
62
+ const result: MutationResultList = []
63
+ let currentInverseSide: Input.PrimaryValue | undefined
64
+
65
+ const { relation, targetRelation, targetEntity, entity } = context
66
+ const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
67
+ const newInverseSide = await this.mapper.getPrimaryValue(targetEntity, connect)
68
+ currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
69
+ if (newInverseSide) {
70
+ return await this.connectInternal(context, currentInverseSide, newInverseSide, result)
71
+ }
72
+ return await this.createInternal({ ...context, input: create }, currentInverseSide, result)
73
+ })
74
+
75
+ if (newInverseSide) {
76
+ result.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))
77
+ }
78
+
79
+ return result
80
+ }
81
+
82
+ private async createInternal(
83
+ { targetEntity, targetRelation, relation, input }: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },
84
+ currentInverseSide: Input.PrimaryValue | undefined,
85
+ result: MutationResultList,
86
+ ) {
87
+ if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
88
+ result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
89
+ return AbortDataManipulation
90
+ }
91
+
92
+ const insertResult = await this.mapper.insert(targetEntity, input)
93
+ result.push(...insertResult)
94
+ const newInverseSide = getInsertPrimary(insertResult)
95
+ if (newInverseSide) {
96
+ return newInverseSide
97
+ }
98
+ return AbortDataManipulation
99
+ }
100
+
101
+ private async connectInternal(
102
+ { targetEntity, targetRelation, relation, entity }: Model.OneHasOneOwningContext,
103
+ currentInverseSide: Input.PrimaryValue | undefined,
104
+ newInverseSide: Input.PrimaryValue,
105
+ result: MutationResultList,
106
+ ) {
107
+
108
+ if (currentInverseSide === newInverseSide) {
109
+ result.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists))
110
+ return undefined
111
+ }
112
+
113
+ const currentOwnerOfNewInverseSide = await this.mapper.getPrimaryValue(entity, {
114
+ [relation.name]: { [targetEntity.primary]: newInverseSide },
115
+ })
116
+
117
+ if (currentOwnerOfNewInverseSide === this.primaryValue) {
118
+ result.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists))
119
+ return undefined
120
+ }
121
+
122
+ // orphan removal handled bellow
123
+ if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
124
+ result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
125
+ return AbortDataManipulation
126
+ }
127
+
128
+ if (currentOwnerOfNewInverseSide) {
129
+ if (!relation.nullable) {
130
+ result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
131
+ return AbortDataManipulation
132
+ }
133
+
134
+ const currentOwnerDisconnect = await this.mapper.updateInternal(
135
+ entity,
136
+ {
137
+ [entity.primary]: currentOwnerOfNewInverseSide,
138
+ },
139
+ builder => {
140
+ builder.addPredicates([relation.name])
141
+ builder.addFieldValue(relation.name, null)
142
+ },
143
+ )
144
+ result.push(...currentOwnerDisconnect)
145
+ }
146
+ return newInverseSide
147
+ }
148
+
149
+ private async getCurrentInverseSide(targetRelation: Model.OneHasOneInverseRelation | null, relation: Model.OneHasOneOwningRelation, entity: Model.Entity) {
150
+ if ((targetRelation && !targetRelation.nullable) || relation.orphanRemoval) {
151
+ return this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
152
+ }
153
+ return undefined
154
+ }
155
+
156
+ private async cleanupOrphan(relation: Model.OneHasOneOwningRelation, targetEntity: Model.Entity, currentInverseSide: Input.PrimaryValue | undefined) {
157
+ if (relation.orphanRemoval && currentInverseSide) {
158
+ await this.updateBuilder.update
159
+ return await this.mapper.delete(targetEntity, { [targetEntity.primary]: currentInverseSide })
160
+ }
161
+ return []
162
+ }
163
+
164
+ public async update({ entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.UpdateDataInput }) {
165
+ const inversePrimary = await this.mapper.selectField(
166
+ entity,
167
+ { [entity.primary]: this.primaryValue },
168
+ relation.name,
169
+ )
170
+ if (!inversePrimary) {
171
+ return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
172
+ }
173
+ return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)
174
+ }
175
+
176
+ public async upsert({ entity, relation, targetEntity, input: { create, update } }: Model.OneHasOneOwningContext & { input: UpdateInputProcessor.UpsertInput }) {
177
+ const select = this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
178
+
179
+ const result: MutationResultList = []
180
+ //addColumnData has to be called synchronously
181
+ await this.updateBuilder.addFieldValue(relation.name, async () => {
182
+ const primary = await select
183
+ if (primary) {
184
+ return undefined
185
+ }
186
+ const insertResult = await this.mapper.insert(targetEntity, create)
187
+ const insertPrimary = getInsertPrimary(insertResult)
188
+ if (insertPrimary) {
189
+ return insertPrimary
190
+ }
191
+ result.push(...insertResult)
192
+ return AbortDataManipulation
193
+ })
194
+
195
+ const inversePrimary = await select
196
+ if (inversePrimary) {
197
+ return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)
198
+ }
199
+ return result
200
+ }
201
+
202
+ public async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {
203
+ if (!relation.nullable) {
204
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
205
+ }
206
+ const result: MutationResultList = []
207
+
208
+ const currentInverseSide = (targetRelation && !targetRelation.nullable) || relation.orphanRemoval
209
+ ? this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
210
+ : Promise.resolve(undefined)
211
+
212
+ this.updateBuilder.addFieldValue(relation.name, async () => {
213
+ const inversePrimary = await currentInverseSide
214
+ if (inversePrimary && targetRelation && !targetRelation.nullable && !relation.orphanRemoval) {
215
+ result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
216
+ return AbortDataManipulation
217
+ }
218
+ return null
219
+ })
220
+ if (relation.orphanRemoval) {
221
+ const inversePrimary = await currentInverseSide
222
+ if (inversePrimary) {
223
+ await this.updateBuilder.update
224
+ const deleteOrphanedInverseSide = await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })
225
+ result.push(...deleteOrphanedInverseSide)
226
+ }
227
+ }
228
+ return result
229
+ }
230
+
231
+ public async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {
232
+ if (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {
233
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
234
+ }
235
+ if (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {
236
+ // eslint-disable-next-line no-console
237
+ console.error(
238
+ '[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version.',
239
+ )
240
+ this.updateBuilder.addFieldValue(relation.name, null)
241
+ }
242
+ const targetPrimary = await this.mapper.selectField(
243
+ entity,
244
+ { [entity.primary]: this.primaryValue },
245
+ relation.name,
246
+ )
247
+ if (!targetPrimary) {
248
+ return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
249
+ }
250
+ await this.updateBuilder.update
251
+ return await this.mapper.delete(targetEntity, new CheckedPrimary(targetPrimary))
252
+ }
253
+ }
@@ -8,12 +8,12 @@ import { SelectBuilder } from '@contember/database'
8
8
  export class JoinBuilder {
9
9
  constructor(private readonly schema: Model.Schema) {}
10
10
 
11
- join<Filled extends keyof SelectBuilder.Options>(
12
- qb: SelectBuilder<SelectBuilder.Result>,
11
+ join<R extends SelectBuilder.Result>(
12
+ qb: SelectBuilder<R>,
13
13
  path: Path,
14
14
  entity: Model.Entity,
15
15
  relationName: string,
16
- ) {
16
+ ): SelectBuilder<R> {
17
17
  const targetEntity = getTargetEntity(this.schema, entity, relationName)
18
18
  if (!targetEntity) {
19
19
  throw new Error(`JoinBuilder: target entity for relation ${entity.name}::${relationName} not found`)
@@ -21,7 +21,7 @@ export class JoinBuilder {
21
21
 
22
22
  const joins = acceptRelationTypeVisitor(this.schema, entity, relationName, new JoinVisitor(path))
23
23
 
24
- return joins.reduce<SelectBuilder<SelectBuilder.Result>>((qb, join) => {
24
+ return joins.reduce<SelectBuilder<R>>((qb, join) => {
25
25
  const targetAlias = join.targetAlias || path.alias
26
26
  if (qb.options.join.find(it => it.alias === targetAlias)) {
27
27
  return qb
@@ -5,10 +5,11 @@ export class OrderByHelper {
5
5
  public static appendDefaultOrderBy(
6
6
  entity: Model.Entity,
7
7
  objectNode: ObjectNode<Input.ListQueryInput>,
8
- defaultOrderBy: readonly Model.OrderBy[],
8
+ relationOrderBy: readonly Model.OrderBy[] | undefined,
9
9
  ): ObjectNode<Input.ListQueryInput> {
10
10
  const inputOrder = objectNode.args.orderBy || []
11
11
  const hasOrderBy = inputOrder.length > 0
12
+ const defaultOrderBy = relationOrderBy ?? entity.orderBy ?? []
12
13
  if (!hasOrderBy && defaultOrderBy.length > 0) {
13
14
  const defaultOrderByWithPrimary = [...defaultOrderBy, ...this.getPrimaryOrderBy(inputOrder, entity)]
14
15
  return objectNode.withArg('orderBy', this.buildOrderBy(defaultOrderByWithPrimary))
@@ -83,7 +83,7 @@ export class RelationFetcher {
83
83
  const objectNodeWithOrder = OrderByHelper.appendDefaultOrderBy(
84
84
  targetEntity,
85
85
  objectNodeWithWhere,
86
- relation.orderBy || [],
86
+ relation.orderBy,
87
87
  )
88
88
 
89
89
  return mapper.selectGrouped(targetEntity, objectNodeWithOrder, targetRelation, [
@@ -144,7 +144,7 @@ export class RelationFetcher {
144
144
  }: FetchManyHasManyGroupsArgs): Promise<SelectGroupedObjects> {
145
145
  const owningRelation = relationContext.type === 'manyHasManyInverse' ? relationContext.targetRelation : relationContext.relation
146
146
  const joiningColumns = this.resolveJoiningColumns({ relationType: relationContext.type, joiningTable: owningRelation.joiningTable })
147
- const defaultOrderBy = relationContext.relation.orderBy || []
147
+ const defaultOrderBy = relationContext.relation.orderBy
148
148
  const objectNode = OrderByHelper.appendDefaultOrderBy(relationContext.targetEntity, field, defaultOrderBy)
149
149
  const { targetEntity } = relationContext
150
150
  const junctionValues = await this.fetchJunction(
@@ -23,13 +23,13 @@ export class WhereBuilder {
23
23
  private readonly useExistsInHasManyFilter: boolean,
24
24
  ) {}
25
25
 
26
- public build(
27
- qb: SelectBuilder<SelectBuilder.Result>,
26
+ public build<R extends SelectBuilder.Result>(
27
+ qb: SelectBuilder<R>,
28
28
  entity: Model.Entity,
29
29
  path: Path,
30
30
  where: Input.OptionalWhere,
31
31
  optimizationHints: WhereOptimizationHints = {},
32
- ) {
32
+ ): SelectBuilder<R> {
33
33
  const optimizedWhere = this.whereOptimizer.optimize(where, entity, optimizationHints)
34
34
  return this.buildInternal({
35
35
  entity,
@@ -41,13 +41,13 @@ export class WhereBuilder {
41
41
  }
42
42
 
43
43
 
44
- public buildAdvanced(
44
+ public buildAdvanced<R extends SelectBuilder.Result>(
45
45
  entity: Model.Entity,
46
46
  path: Path,
47
47
  where: Input.OptionalWhere,
48
- callback: (clauseCb: (clause: SqlConditionBuilder) => SqlConditionBuilder) => SelectBuilder<SelectBuilder.Result>,
48
+ callback: (clauseCb: (clause: SqlConditionBuilder) => SqlConditionBuilder) => SelectBuilder<R>,
49
49
  optimizationHints: WhereOptimizationHints = {},
50
- ) {
50
+ ): SelectBuilder<R> {
51
51
  const optimizedWhere = this.whereOptimizer.optimize(where, entity, optimizationHints)
52
52
  return this.buildInternal({
53
53
  entity,
@@ -58,11 +58,11 @@ export class WhereBuilder {
58
58
  })
59
59
  }
60
60
 
61
- private buildInternal({
61
+ private buildInternal<R extends SelectBuilder.Result>({
62
62
  callback,
63
63
  ...args
64
- }: { entity: Model.Entity; path: Path; where: Input.OptionalWhere; callback: (clauseCb: (clause: SqlConditionBuilder) => SqlConditionBuilder) => SelectBuilder<SelectBuilder.Result>; allowManyJoin: boolean },
65
- ) {
64
+ }: { entity: Model.Entity; path: Path; where: Input.OptionalWhere; callback: (clauseCb: (clause: SqlConditionBuilder) => SqlConditionBuilder) => SelectBuilder<R>; allowManyJoin: boolean },
65
+ ): SelectBuilder<R> {
66
66
  const joinList: WhereJoinDefinition[] = []
67
67
 
68
68
  const qbWithWhere = callback(clause => this.buildRecursive({
@@ -70,8 +70,8 @@ export class WhereBuilder {
70
70
  joinList: joinList,
71
71
  ...args,
72
72
  }))
73
- return joinList.reduce<SelectBuilder<SelectBuilder.Result>>(
74
- (qb, { path, entity, relationName }) => this.joinBuilder.join(qb, path, entity, relationName),
73
+ return joinList.reduce<SelectBuilder<R>>(
74
+ (qb, { path, entity, relationName }) => this.joinBuilder.join<R>(qb, path, entity, relationName),
75
75
  qbWithWhere,
76
76
  )
77
77
  }