@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
@@ -1,35 +1,44 @@
1
1
  import { Input, Model } from '@contember/schema'
2
- import { getColumnName } from '@contember/schema-utils'
3
- import { SelectGroupedObjects, SelectHydrator, SelectIndexedResultObjects, SelectResultObject } from './select'
4
- import { PathFactory } from './select'
5
- import * as database from '@contember/database'
6
- import { Client, SelectBuilder } from '@contember/database'
7
- import { SelectBuilderFactory } from './select'
2
+ import { acceptFieldVisitor, getColumnName, SchemaDatabaseMetadata } from '@contember/schema-utils'
3
+ import {
4
+ OrderByHelper,
5
+ PathFactory,
6
+ SelectBuilderFactory,
7
+ SelectGroupedObjects,
8
+ SelectHydrator,
9
+ SelectIndexedResultObjects,
10
+ SelectResultObject,
11
+ WhereBuilder,
12
+ } from './select'
13
+ import { Client, Connection, ConstraintHelper, SelectBuilder } from '@contember/database'
8
14
  import { PredicatesInjector } from '../acl'
9
- import { WhereBuilder } from './select'
10
15
  import { JunctionTableManager } from './JunctionTableManager'
11
16
  import { DeletedEntitiesStorage, DeleteExecutor } from './delete'
12
17
  import { MutationEntryNotFoundError, MutationResultList } from './Result'
13
- import { Updater } from './update'
14
- import { Inserter } from './insert'
18
+ import { UpdateBuilder, Updater } from './update'
19
+ import { InsertBuilder, Inserter } from './insert'
15
20
  import { tryMutation } from './ErrorUtils'
16
- import { OrderByHelper } from './select'
17
- import { ObjectNode, UniqueWhereExpander } from '../inputProcessing'
18
- import { UpdateBuilder } from './update'
21
+ import { ObjectNode, UniqueWhereExpander } from '../inputProcessing'
19
22
  import { Mutex } from '../utils'
20
23
  import { CheckedPrimary } from './CheckedPrimary'
21
- import { ConstraintHelper } from '@contember/database'
22
24
  import { ImplementationException } from '../exception'
25
+ import { EventManager } from './EventManager'
23
26
 
24
- export class Mapper {
27
+ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connection.ConnectionLike> {
25
28
  private primaryKeyCache: Record<string, Promise<string> | string> = {}
29
+ private systemVariablesSetupDone: Promise<void> | undefined
26
30
  public readonly deletedEntities = new DeletedEntitiesStorage()
27
31
  public readonly mutex = new Mutex()
28
32
  public readonly constraintHelper: ConstraintHelper
29
33
 
34
+ public readonly eventManager: EventManager
35
+
30
36
  constructor(
37
+ public readonly db: Client<ConnectionType>,
38
+ public readonly identityId: string,
39
+ public readonly transactionId: string,
31
40
  private readonly schema: Model.Schema,
32
- public readonly db: database.Client,
41
+ private readonly schemaDatabaseMetadata: SchemaDatabaseMetadata,
33
42
  private readonly predicatesInjector: PredicatesInjector,
34
43
  private readonly selectBuilderFactory: SelectBuilderFactory,
35
44
  private readonly uniqueWhereExpander: UniqueWhereExpander,
@@ -41,9 +50,10 @@ export class Mapper {
41
50
  private readonly pathFactory: PathFactory,
42
51
  ) {
43
52
  this.constraintHelper = new ConstraintHelper(db)
53
+ this.eventManager = new EventManager(this)
44
54
  }
45
55
 
46
- public async selectField(entity: Model.Entity, where: Input.UniqueWhere, fieldName: string) {
56
+ public async selectField(entity: Model.Entity, where: Input.UniqueWhere | CheckedPrimary, fieldName: string) {
47
57
  const columnName = getColumnName(this.schema, entity, fieldName)
48
58
 
49
59
  const qb = SelectBuilder.create() //
@@ -119,7 +129,7 @@ export class Mapper {
119
129
  relationPath: Model.AnyRelationContext[],
120
130
  groupBy?: string,
121
131
  ) {
122
- const inputWithOrder = OrderByHelper.appendDefaultOrderBy(entity, input, [])
132
+ const inputWithOrder = OrderByHelper.appendDefaultOrderBy(entity, input, undefined)
123
133
  const path = this.pathFactory.create([])
124
134
  const augmentedBuilder = qb.from(entity.tableName, path.alias).meta('path', [...input.path, input.alias])
125
135
 
@@ -163,15 +173,17 @@ export class Mapper {
163
173
  return Object.fromEntries(result)
164
174
  }
165
175
 
166
- public async insert(entity: Model.Entity, data: Input.CreateDataInput): Promise<MutationResultList> {
176
+ public async insert(
177
+ entity: Model.Entity,
178
+ data: Input.CreateDataInput,
179
+ builderCb: (builder: InsertBuilder) => void = () => {},
180
+ ): Promise<MutationResultList> {
167
181
  if (entity.view) {
168
182
  throw new ImplementationException()
169
183
  }
170
- return tryMutation(this.schema, () =>
171
- this.inserter.insert(this, entity, data, id => {
172
- const where = { [entity.primary]: id }
173
- this.primaryKeyCache[this.hashWhere(entity.name, where)] = id
174
- }),
184
+ await this.setupSystemVariables()
185
+ return tryMutation(this.schema, this.schemaDatabaseMetadata, () =>
186
+ this.insertInternal(entity, data, builderCb),
175
187
  )
176
188
  }
177
189
 
@@ -184,7 +196,8 @@ export class Mapper {
184
196
  if (entity.view) {
185
197
  throw new ImplementationException()
186
198
  }
187
- return tryMutation(this.schema, async () => {
199
+ await this.setupSystemVariables()
200
+ return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
188
201
  const primaryValue = await this.getPrimaryValue(entity, by)
189
202
  if (primaryValue === undefined) {
190
203
  return [new MutationEntryNotFoundError([], by)]
@@ -195,19 +208,21 @@ export class Mapper {
195
208
 
196
209
  public async updateInternal(
197
210
  entity: Model.Entity,
198
- by: Input.UniqueWhere,
199
- predicateFields: string[],
211
+ by: Input.UniqueWhere | CheckedPrimary,
200
212
  builderCb: (builder: UpdateBuilder) => void,
201
213
  ): Promise<MutationResultList> {
202
- return tryMutation(this.schema, async () => {
214
+ if (entity.view) {
215
+ throw new ImplementationException()
216
+ }
217
+ await this.setupSystemVariables()
218
+ return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
203
219
  const primaryValue = await this.getPrimaryValue(entity, by)
204
220
  if (primaryValue === undefined) {
205
- return [new MutationEntryNotFoundError([], by)]
221
+ return [new MutationEntryNotFoundError([], by as Input.UniqueWhere)]
206
222
  }
207
- return await this.updater.updateCb(this, entity, primaryValue, predicateFields, builderCb)
223
+ return await this.updater.updateCb(this, entity, primaryValue, builderCb)
208
224
  })
209
225
  }
210
-
211
226
  public async upsert(
212
227
  entity: Model.Entity,
213
228
  by: Input.UniqueWhere,
@@ -218,18 +233,23 @@ export class Mapper {
218
233
  if (entity.view) {
219
234
  throw new ImplementationException()
220
235
  }
221
- return tryMutation(this.schema, async () => {
236
+ await this.setupSystemVariables()
237
+ return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
222
238
  const primaryValue = await this.getPrimaryValue(entity, by)
223
239
  if (primaryValue === undefined) {
224
- return await this.inserter.insert(this, entity, create, id => {
225
- const where = { [entity.primary]: id }
226
- this.primaryKeyCache[this.hashWhere(entity.name, where)] = id
227
- })
240
+ return await this.insertInternal(entity, create)
228
241
  }
229
242
  return await this.updater.update(this, entity, primaryValue, update, filter)
230
243
  })
231
244
  }
232
245
 
246
+ private insertInternal(entity: Model.Entity, data: Input.CreateDataInput, builderCb: (builder: InsertBuilder) => void = () => {}) {
247
+ return this.inserter.insert(this, entity, data, id => {
248
+ const where = { [entity.primary]: id }
249
+ this.primaryKeyCache[this.hashWhere(entity.name, where)] = id
250
+ }, builderCb)
251
+ }
252
+
233
253
  public async delete(
234
254
  entity: Model.Entity,
235
255
  by: Input.UniqueWhere | CheckedPrimary,
@@ -238,37 +258,60 @@ export class Mapper {
238
258
  if (entity.view) {
239
259
  throw new ImplementationException()
240
260
  }
241
- return tryMutation(this.schema, () => this.deleteExecutor.execute(this, entity, by, filter))
261
+ await this.setupSystemVariables()
262
+ return tryMutation(this.schema, this.schemaDatabaseMetadata, () => {
263
+ return this.deleteExecutor.execute(this, entity, by, filter)
264
+ })
242
265
  }
243
266
 
244
267
  public async connectJunction(
245
- owningEntity: Model.Entity,
246
- relation: Model.ManyHasManyOwningRelation,
247
- owningPrimary: Input.PrimaryValue,
248
- inversePrimary: Input.PrimaryValue,
268
+ entity: Model.Entity,
269
+ relation: Model.ManyHasManyOwningRelation | Model.ManyHasManyInverseRelation,
270
+ thisPrimary: Input.PrimaryValue,
271
+ otherPrimary: Input.PrimaryValue,
249
272
  ): Promise<MutationResultList> {
250
- return await this.junctionTableManager.connectJunction(
251
- this.db,
252
- owningEntity,
253
- relation,
254
- owningPrimary,
255
- inversePrimary,
256
- )
273
+ await this.setupSystemVariables()
274
+ const err = () => {
275
+ throw new ImplementationException()
276
+ }
277
+ return await acceptFieldVisitor(this.schema, entity, relation, {
278
+ visitManyHasManyOwning: ({ entity, relation }) => {
279
+ return this.junctionTableManager.connectJunction(this, entity, relation, thisPrimary, otherPrimary)
280
+ },
281
+ visitManyHasManyInverse: ({ targetEntity, targetRelation }) => {
282
+ return this.junctionTableManager.connectJunction(this, targetEntity, targetRelation, otherPrimary, thisPrimary)
283
+ },
284
+ visitColumn: err,
285
+ visitOneHasMany: err,
286
+ visitOneHasOneInverse: err,
287
+ visitOneHasOneOwning: err,
288
+ visitManyHasOne: err,
289
+ })
257
290
  }
258
291
 
259
292
  public async disconnectJunction(
260
- owningEntity: Model.Entity,
261
- relation: Model.ManyHasManyOwningRelation,
262
- owningPrimary: Input.PrimaryValue,
263
- inversePrimary: Input.PrimaryValue,
293
+ entity: Model.Entity,
294
+ relation: Model.ManyHasManyOwningRelation | Model.ManyHasManyInverseRelation,
295
+ thisPrimary: Input.PrimaryValue,
296
+ otherPrimary: Input.PrimaryValue,
264
297
  ): Promise<MutationResultList> {
265
- return await this.junctionTableManager.disconnectJunction(
266
- this.db,
267
- owningEntity,
268
- relation,
269
- owningPrimary,
270
- inversePrimary,
271
- )
298
+ await this.setupSystemVariables()
299
+ const err = () => {
300
+ throw new ImplementationException()
301
+ }
302
+ return await acceptFieldVisitor(this.schema, entity, relation, {
303
+ visitManyHasManyOwning: ({ entity, relation }) => {
304
+ return this.junctionTableManager.disconnectJunction(this, entity, relation, thisPrimary, otherPrimary)
305
+ },
306
+ visitManyHasManyInverse: ({ targetEntity, targetRelation }) => {
307
+ return this.junctionTableManager.disconnectJunction(this, targetEntity, targetRelation, otherPrimary, thisPrimary)
308
+ },
309
+ visitColumn: err,
310
+ visitOneHasMany: err,
311
+ visitOneHasOneInverse: err,
312
+ visitOneHasOneOwning: err,
313
+ visitManyHasOne: err,
314
+ })
272
315
  }
273
316
 
274
317
  public async getPrimaryValue(
@@ -295,6 +338,12 @@ export class Mapper {
295
338
  private hashWhere(entityName: string, where: Input.UniqueWhere): string {
296
339
  return JSON.stringify([entityName, where])
297
340
  }
298
- }
299
341
 
300
- export type MapperFactory = (db: Client) => Mapper
342
+ private async setupSystemVariables() {
343
+ this.systemVariablesSetupDone ??= (async () => {
344
+ await this.db.query('SELECT set_config(?, ?, false)', ['tenant.identity_id', this.identityId]) // todo rename to system.identity_id
345
+ await this.db.query('SELECT set_config(?, ?, false)', ['system.transaction_id', this.transactionId])
346
+ })()
347
+ await this.systemVariablesSetupDone
348
+ }
349
+ }
@@ -0,0 +1,69 @@
1
+ import { PredicatesInjector } from '../acl'
2
+ import { PathFactory, SelectBuilderFactory, WhereBuilder } from './select'
3
+ import { UniqueWhereExpander } from '../inputProcessing'
4
+ import { JunctionTableManager } from './JunctionTableManager'
5
+ import { DeleteExecutor } from './delete'
6
+ import { Updater } from './update'
7
+ import { Inserter } from './insert'
8
+ import { Model } from '@contember/schema'
9
+ import { Client, Connection } from '@contember/database'
10
+ import { Mapper } from './Mapper'
11
+ import { Providers, SchemaDatabaseMetadata } from '@contember/schema-utils'
12
+
13
+ export type MapperFactoryHook = (mapper: Mapper) => void
14
+
15
+ export class MapperFactory {
16
+
17
+ public readonly hooks: MapperFactoryHook[] = []
18
+
19
+ constructor(
20
+ private readonly db: Client,
21
+ private readonly identityId: string,
22
+ private readonly schema: Model.Schema,
23
+ private readonly schemaDatabaseMetadata: SchemaDatabaseMetadata,
24
+ private readonly predicatesInjector: PredicatesInjector,
25
+ private readonly selectBuilderFactory: SelectBuilderFactory,
26
+ private readonly uniqueWhereExpander: UniqueWhereExpander,
27
+ private readonly whereBuilder: WhereBuilder,
28
+ private readonly junctionTableManager: JunctionTableManager,
29
+ private readonly deleteExecutor: DeleteExecutor,
30
+ private readonly updater: Updater,
31
+ private readonly inserter: Inserter,
32
+ private readonly pathFactory: PathFactory,
33
+ private readonly providers: Providers,
34
+ ) {
35
+ }
36
+
37
+ public create() {
38
+ return this.createInternal(this.db)
39
+ }
40
+
41
+ public transaction<T>(cb: (mapper: Mapper<Connection.TransactionLike>) => Promise<T>): Promise<T> {
42
+ return this.db.transaction(async trx => {
43
+ await trx.connection.query(Connection.REPEATABLE_READ)
44
+ const mapper = this.createInternal(trx)
45
+ return await cb(mapper)
46
+ })
47
+ }
48
+
49
+ private createInternal<T extends Connection.ConnectionLike>(db: Client<T>) {
50
+ const mapper = new Mapper<T>(
51
+ db,
52
+ this.identityId,
53
+ this.providers.uuid(),
54
+ this.schema,
55
+ this.schemaDatabaseMetadata,
56
+ this.predicatesInjector,
57
+ this.selectBuilderFactory,
58
+ this.uniqueWhereExpander,
59
+ this.whereBuilder,
60
+ this.junctionTableManager,
61
+ this.deleteExecutor,
62
+ this.updater,
63
+ this.inserter,
64
+ this.pathFactory,
65
+ )
66
+ this.hooks.forEach(it => it(mapper))
67
+ return mapper
68
+ }
69
+ }
@@ -3,6 +3,7 @@ import { convertError } from './ErrorUtils'
3
3
  import { getFulfilledValues, getRejections } from '../utils'
4
4
  import { SerializationFailureError } from '@contember/database'
5
5
  import { logger } from '@contember/logger'
6
+ import { SchemaDatabaseMetadata } from '@contember/schema-utils'
6
7
 
7
8
  export enum MutationResultType {
8
9
  ok = 'ok',
@@ -50,7 +51,7 @@ interface MutationResultInterface {
50
51
  hints: MutationResultHint[]
51
52
  }
52
53
 
53
- export type RowValues = { [fieldName: string]: Value.AtomicValue }
54
+ export type RowValues = { [fieldName: string]: Value.FieldValue }
54
55
 
55
56
  export class MutationUpdateOk implements MutationResultInterface {
56
57
  result = MutationResultType.ok as const
@@ -63,6 +64,7 @@ export class MutationUpdateOk implements MutationResultInterface {
63
64
  public readonly primary: Value.PrimaryValue,
64
65
  public readonly input: Input.UpdateDataInput,
65
66
  public readonly values: RowValues,
67
+ public readonly oldValues?: RowValues,
66
68
  ) {}
67
69
  }
68
70
 
@@ -170,7 +172,7 @@ export class MutationEntryNotFoundError implements MutationResultInterface {
170
172
  hints: MutationResultHint[] = []
171
173
  message: string
172
174
 
173
- constructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere) {
175
+ constructor(public readonly paths: Path[], public readonly where: Input.UniqueWhere | Input.Where) {
174
176
  this.message = 'for input ' + JSON.stringify(where)
175
177
  }
176
178
  }
@@ -211,6 +213,7 @@ export type ResultListNotFlatten = MutationResultList | MutationResultList[]
211
213
 
212
214
  export const collectResults = async (
213
215
  schema: Model.Schema,
216
+ schemaDatabaseMetadata: SchemaDatabaseMetadata,
214
217
  mainPromise: Promise<ResultListNotFlatten | undefined> | undefined,
215
218
  otherPromises: (Promise<ResultListNotFlatten | undefined> | undefined)[],
216
219
  ): Promise<MutationResultList> => {
@@ -219,7 +222,7 @@ export const collectResults = async (
219
222
  .filter((it): it is Promise<ResultListNotFlatten> => !!it)
220
223
  .map(it =>
221
224
  it //
222
- .catch(e => [convertError(schema, e)])
225
+ .catch(e => [convertError(schema, schemaDatabaseMetadata, e)])
223
226
  .then(value => ({ value, index: index++ })),
224
227
  )
225
228
  const results = await Promise.allSettled(allPromises)