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

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 (555) hide show
  1. package/dist/src/ExecutionContainer.d.ts +141 -0
  2. package/dist/src/ExecutionContainer.d.ts.map +1 -0
  3. package/dist/src/ExecutionContainer.js +84 -0
  4. package/dist/src/ExecutionContainer.js.map +1 -0
  5. package/dist/src/index.d.ts +2 -1
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +18 -2
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  10. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js +6 -0
  11. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  12. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  13. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js +6 -0
  14. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  15. package/dist/src/inputProcessing/CreateInputProcessor.d.ts +27 -9
  16. package/dist/src/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  17. package/dist/src/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  18. package/dist/src/inputProcessing/CreateInputVisitor.js +10 -2
  19. package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  20. package/dist/src/inputProcessing/UniqueWhereExpander.d.ts +2 -1
  21. package/dist/src/inputProcessing/UniqueWhereExpander.d.ts.map +1 -1
  22. package/dist/src/inputProcessing/UniqueWhereExpander.js +4 -0
  23. package/dist/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
  24. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts +41 -16
  25. package/dist/src/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  26. package/dist/src/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  27. package/dist/src/inputProcessing/UpdateInputVisitor.js +7 -2
  28. package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  29. package/dist/src/mapper/ColumnValue.d.ts +2 -2
  30. package/dist/src/mapper/ColumnValue.d.ts.map +1 -1
  31. package/dist/src/mapper/DataManipulationBuilder.d.ts +7 -0
  32. package/dist/src/mapper/DataManipulationBuilder.d.ts.map +1 -0
  33. package/dist/src/mapper/DataManipulationBuilder.js +5 -0
  34. package/dist/src/mapper/DataManipulationBuilder.js.map +1 -0
  35. package/dist/src/mapper/EventManager.d.ts +86 -0
  36. package/dist/src/mapper/EventManager.d.ts.map +1 -0
  37. package/dist/src/mapper/EventManager.js +118 -0
  38. package/dist/src/mapper/EventManager.js.map +1 -0
  39. package/dist/src/mapper/JunctionTableManager.d.ts +12 -11
  40. package/dist/src/mapper/JunctionTableManager.d.ts.map +1 -1
  41. package/dist/src/mapper/JunctionTableManager.js +20 -8
  42. package/dist/src/mapper/JunctionTableManager.js.map +1 -1
  43. package/dist/src/mapper/Mapper.d.ts +19 -19
  44. package/dist/src/mapper/Mapper.d.ts.map +1 -1
  45. package/dist/src/mapper/Mapper.js +71 -21
  46. package/dist/src/mapper/Mapper.js.map +1 -1
  47. package/dist/src/mapper/MapperFactory.d.ts +33 -0
  48. package/dist/src/mapper/MapperFactory.d.ts.map +1 -0
  49. package/dist/src/mapper/MapperFactory.js +40 -0
  50. package/dist/src/mapper/MapperFactory.js.map +1 -0
  51. package/dist/src/mapper/Result.d.ts +5 -4
  52. package/dist/src/mapper/Result.d.ts.map +1 -1
  53. package/dist/src/mapper/Result.js +2 -1
  54. package/dist/src/mapper/Result.js.map +1 -1
  55. package/dist/src/mapper/delete/DeleteExecutor.d.ts +12 -5
  56. package/dist/src/mapper/delete/DeleteExecutor.d.ts.map +1 -1
  57. package/dist/src/mapper/delete/DeleteExecutor.js +183 -77
  58. package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
  59. package/dist/src/mapper/delete/DeleteState.d.ts +22 -0
  60. package/dist/src/mapper/delete/DeleteState.d.ts.map +1 -0
  61. package/dist/src/mapper/delete/DeleteState.js +68 -0
  62. package/dist/src/mapper/delete/DeleteState.js.map +1 -0
  63. package/dist/src/mapper/delete/DeletedEntitiesStorage.d.ts +1 -0
  64. package/dist/src/mapper/delete/DeletedEntitiesStorage.d.ts.map +1 -1
  65. package/dist/src/mapper/delete/DeletedEntitiesStorage.js +5 -0
  66. package/dist/src/mapper/delete/DeletedEntitiesStorage.js.map +1 -1
  67. package/dist/src/mapper/delete/helpers.d.ts +11 -0
  68. package/dist/src/mapper/delete/helpers.d.ts.map +1 -0
  69. package/dist/src/mapper/delete/helpers.js +49 -0
  70. package/dist/src/mapper/delete/helpers.js.map +1 -0
  71. package/dist/src/mapper/index.d.ts +3 -1
  72. package/dist/src/mapper/index.d.ts.map +1 -1
  73. package/dist/src/mapper/index.js +3 -1
  74. package/dist/src/mapper/index.js.map +1 -1
  75. package/dist/src/mapper/insert/InsertBuilder.d.ts +10 -7
  76. package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
  77. package/dist/src/mapper/insert/InsertBuilder.js +24 -11
  78. package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
  79. package/dist/src/mapper/insert/InsertBuilderFactory.d.ts +3 -1
  80. package/dist/src/mapper/insert/InsertBuilderFactory.d.ts.map +1 -1
  81. package/dist/src/mapper/insert/InsertBuilderFactory.js +3 -2
  82. package/dist/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
  83. package/dist/src/mapper/insert/Inserter.d.ts +3 -6
  84. package/dist/src/mapper/insert/Inserter.d.ts.map +1 -1
  85. package/dist/src/mapper/insert/Inserter.js +9 -12
  86. package/dist/src/mapper/insert/Inserter.js.map +1 -1
  87. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts +5 -0
  88. package/dist/src/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  89. package/dist/src/mapper/insert/SqlCreateInputProcessor.js +54 -120
  90. package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  91. package/dist/src/mapper/relations/ManyHasManyInputProcessor.d.ts +32 -0
  92. package/dist/src/mapper/relations/ManyHasManyInputProcessor.d.ts.map +1 -0
  93. package/dist/src/mapper/relations/ManyHasManyInputProcessor.js +77 -0
  94. package/dist/src/mapper/relations/ManyHasManyInputProcessor.js.map +1 -0
  95. package/dist/src/mapper/relations/ManyHasOneInputProcessor.d.ts +32 -0
  96. package/dist/src/mapper/relations/ManyHasOneInputProcessor.d.ts.map +1 -0
  97. package/dist/src/mapper/relations/ManyHasOneInputProcessor.js +108 -0
  98. package/dist/src/mapper/relations/ManyHasOneInputProcessor.js.map +1 -0
  99. package/dist/src/mapper/relations/OneHasManyInputProcessor.d.ts +29 -0
  100. package/dist/src/mapper/relations/OneHasManyInputProcessor.d.ts.map +1 -0
  101. package/dist/src/mapper/relations/OneHasManyInputProcessor.js +61 -0
  102. package/dist/src/mapper/relations/OneHasManyInputProcessor.js.map +1 -0
  103. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts +21 -0
  104. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -0
  105. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js +74 -0
  106. package/dist/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
  107. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts +32 -0
  108. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -0
  109. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js +125 -0
  110. package/dist/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
  111. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts +21 -0
  112. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -0
  113. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +72 -0
  114. package/dist/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
  115. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts +37 -0
  116. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -0
  117. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +193 -0
  118. package/dist/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
  119. package/dist/src/mapper/select/JoinBuilder.d.ts +1 -1
  120. package/dist/src/mapper/select/JoinBuilder.d.ts.map +1 -1
  121. package/dist/src/mapper/select/JoinBuilder.js.map +1 -1
  122. package/dist/src/mapper/select/OrderByHelper.d.ts +1 -1
  123. package/dist/src/mapper/select/OrderByHelper.d.ts.map +1 -1
  124. package/dist/src/mapper/select/OrderByHelper.js +3 -1
  125. package/dist/src/mapper/select/OrderByHelper.js.map +1 -1
  126. package/dist/src/mapper/select/RelationFetcher.js +2 -2
  127. package/dist/src/mapper/select/RelationFetcher.js.map +1 -1
  128. package/dist/src/mapper/select/WhereBuilder.d.ts +2 -2
  129. package/dist/src/mapper/select/WhereBuilder.d.ts.map +1 -1
  130. package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
  131. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts +5 -0
  132. package/dist/src/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  133. package/dist/src/mapper/update/SqlUpdateInputProcessor.js +52 -389
  134. package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  135. package/dist/src/mapper/update/UpdateBuilder.d.ts +10 -7
  136. package/dist/src/mapper/update/UpdateBuilder.d.ts.map +1 -1
  137. package/dist/src/mapper/update/UpdateBuilder.js +43 -19
  138. package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
  139. package/dist/src/mapper/update/UpdateBuilderFactory.d.ts +4 -2
  140. package/dist/src/mapper/update/UpdateBuilderFactory.d.ts.map +1 -1
  141. package/dist/src/mapper/update/UpdateBuilderFactory.js +4 -3
  142. package/dist/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
  143. package/dist/src/mapper/update/Updater.d.ts +1 -4
  144. package/dist/src/mapper/update/Updater.d.ts.map +1 -1
  145. package/dist/src/mapper/update/Updater.js +17 -23
  146. package/dist/src/mapper/update/Updater.js.map +1 -1
  147. package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts +1 -3
  148. package/dist/src/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
  149. package/dist/src/resolvers/GraphQlQueryAstFactory.js +1 -4
  150. package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  151. package/dist/src/resolvers/MutationResolver.d.ts +1 -4
  152. package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
  153. package/dist/src/resolvers/MutationResolver.js +10 -12
  154. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  155. package/dist/src/resolvers/ReadResolver.d.ts +1 -3
  156. package/dist/src/resolvers/ReadResolver.d.ts.map +1 -1
  157. package/dist/src/resolvers/ReadResolver.js +6 -10
  158. package/dist/src/resolvers/ReadResolver.js.map +1 -1
  159. package/dist/src/resolvers/ValidationResolver.d.ts +1 -3
  160. package/dist/src/resolvers/ValidationResolver.d.ts.map +1 -1
  161. package/dist/src/resolvers/ValidationResolver.js +3 -4
  162. package/dist/src/resolvers/ValidationResolver.js.map +1 -1
  163. package/dist/src/resolvers/index.d.ts +0 -1
  164. package/dist/src/resolvers/index.d.ts.map +1 -1
  165. package/dist/src/resolvers/index.js +0 -1
  166. package/dist/src/resolvers/index.js.map +1 -1
  167. package/dist/src/schema/CustomTypesProvider.d.ts.map +1 -1
  168. package/dist/src/schema/CustomTypesProvider.js +1 -23
  169. package/dist/src/schema/CustomTypesProvider.js.map +1 -1
  170. package/dist/src/schema/GraphQlSchemaBuilderFactory.d.ts +3 -0
  171. package/dist/src/schema/GraphQlSchemaBuilderFactory.d.ts.map +1 -1
  172. package/dist/src/schema/GraphQlSchemaBuilderFactory.js +4 -2
  173. package/dist/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
  174. package/dist/src/schema/MutationProvider.js +4 -4
  175. package/dist/src/schema/MutationProvider.js.map +1 -1
  176. package/dist/src/schema/QueryProvider.js +3 -3
  177. package/dist/src/schema/QueryProvider.js.map +1 -1
  178. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts +15 -0
  179. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts.map +1 -0
  180. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.js +43 -0
  181. package/dist/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -0
  182. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
  183. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +2 -6
  184. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  185. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  186. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +3 -0
  187. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  188. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +3 -1
  189. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  190. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +15 -8
  191. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  192. package/dist/src/schema/mutations/EntityInputProvider.d.ts.map +1 -1
  193. package/dist/src/schema/mutations/EntityInputProvider.js +0 -3
  194. package/dist/src/schema/mutations/EntityInputProvider.js.map +1 -1
  195. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
  196. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +2 -6
  197. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  198. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  199. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +3 -0
  200. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  201. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +3 -1
  202. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  203. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +11 -22
  204. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  205. package/dist/src/tsconfig.tsbuildinfo +1 -1
  206. package/dist/src/types.d.ts +2 -3
  207. package/dist/src/types.d.ts.map +1 -1
  208. package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js +3 -5
  209. package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js.map +1 -1
  210. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js +2 -2
  211. package/dist/tests/cases/integration/graphQlDb/insert/insertSequence.test.js.map +1 -1
  212. package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js +1 -1
  213. package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js.map +1 -1
  214. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js +45 -45
  215. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js.map +1 -1
  216. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js +5 -5
  217. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js.map +1 -1
  218. package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js +2 -2
  219. package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js.map +1 -1
  220. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js +8 -8
  221. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js.map +1 -1
  222. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js +7 -10
  223. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js.map +1 -1
  224. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js +2 -2
  225. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js.map +1 -1
  226. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +13 -32
  227. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
  228. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js +11 -30
  229. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js.map +1 -1
  230. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js +62 -45
  231. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js.map +1 -1
  232. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js +10 -11
  233. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js.map +1 -1
  234. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js +29 -18
  235. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js.map +1 -1
  236. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.d.ts +2 -0
  237. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.d.ts.map +1 -0
  238. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.js +97 -0
  239. package/dist/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.js.map +1 -0
  240. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js +58 -22
  241. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js.map +1 -1
  242. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.d.ts +2 -0
  243. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.d.ts.map +1 -0
  244. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/{insertRelationCreate.test.js → create.test.js} +1 -1
  245. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.js.map +1 -0
  246. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.d.ts +2 -0
  247. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.d.ts.map +1 -0
  248. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/{insertRelationCreate.test.js → create.test.js} +1 -1
  249. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.js.map +1 -0
  250. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.d.ts +2 -0
  251. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.d.ts.map +1 -0
  252. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.js +99 -0
  253. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.js.map +1 -0
  254. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.d.ts +2 -0
  255. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.d.ts.map +1 -0
  256. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/{insertRelationCreate.test.js → create.test.js} +1 -1
  257. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.js.map +1 -0
  258. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.d.ts +2 -0
  259. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.d.ts.map +1 -0
  260. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationConnect.test.js → connect.test.js} +4 -4
  261. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.js.map +1 -0
  262. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.d.ts +2 -0
  263. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.d.ts.map +1 -0
  264. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationCreate.test.js → create.test.js} +1 -1
  265. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.js.map +1 -0
  266. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.d.ts +2 -0
  267. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.d.ts.map +1 -0
  268. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/{insertRelationCreate.test.js → create.test.js} +1 -1
  269. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.js.map +1 -0
  270. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.d.ts +2 -0
  271. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.d.ts.map +1 -0
  272. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationCreate.test.js → create.test.js} +1 -1
  273. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.js.map +1 -0
  274. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.d.ts +2 -0
  275. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.d.ts.map +1 -0
  276. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationEmpty.test.js → empty.test.js} +1 -1
  277. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.js.map +1 -0
  278. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.d.ts +2 -0
  279. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.d.ts.map +1 -0
  280. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.js +67 -0
  281. package/dist/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.js.map +1 -0
  282. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +6 -18
  283. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
  284. package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js +3 -4
  285. package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js.map +1 -1
  286. package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js +3 -8
  287. package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js.map +1 -1
  288. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js +49 -11
  289. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js.map +1 -1
  290. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js +3 -9
  291. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js.map +1 -1
  292. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js +3 -9
  293. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js.map +1 -1
  294. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js +49 -11
  295. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js.map +1 -1
  296. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js +3 -9
  297. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js.map +1 -1
  298. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js +3 -9
  299. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js.map +1 -1
  300. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js +3 -10
  301. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js.map +1 -1
  302. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js +3 -10
  303. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js.map +1 -1
  304. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js +83 -49
  305. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js.map +1 -1
  306. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js +3 -9
  307. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js.map +1 -1
  308. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js +3 -9
  309. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js.map +1 -1
  310. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js +6 -18
  311. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js.map +1 -1
  312. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js +10 -11
  313. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js.map +1 -1
  314. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js +3 -11
  315. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js.map +1 -1
  316. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js +49 -11
  317. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js.map +1 -1
  318. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js +3 -8
  319. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js.map +1 -1
  320. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js +3 -6
  321. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js.map +1 -1
  322. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js +3 -6
  323. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js.map +1 -1
  324. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js +97 -29
  325. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js.map +1 -1
  326. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js +14 -15
  327. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js.map +1 -1
  328. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js +101 -11
  329. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js.map +1 -1
  330. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js +11 -12
  331. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js.map +1 -1
  332. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.d.ts +1 -0
  333. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.d.ts.map +1 -1
  334. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.js +9 -1
  335. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.js.map +1 -1
  336. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js +3 -6
  337. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js.map +1 -1
  338. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js +11 -13
  339. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js.map +1 -1
  340. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js +85 -29
  341. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js.map +1 -1
  342. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.d.ts +2 -0
  343. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.d.ts.map +1 -0
  344. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.js +53 -0
  345. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.js.map +1 -0
  346. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js +75 -9
  347. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js.map +1 -1
  348. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js +66 -25
  349. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js.map +1 -1
  350. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.js +3 -10
  351. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.js.map +1 -1
  352. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.d.ts +1 -0
  353. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.d.ts.map +1 -1
  354. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.js +10 -2
  355. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.js.map +1 -1
  356. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js +3 -9
  357. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js.map +1 -1
  358. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js +6 -19
  359. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js.map +1 -1
  360. package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js +6 -8
  361. package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js.map +1 -1
  362. package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js +9 -24
  363. package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js.map +1 -1
  364. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js +3 -7
  365. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js.map +1 -1
  366. package/dist/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +14 -1
  367. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -5
  368. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +14 -1
  369. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +12 -0
  370. package/dist/tests/cases/integration/graphQlSchema/schema-basic.gql +40 -2
  371. package/dist/tests/cases/integration/graphQlSchema/schema-bug-66.gql +30 -3
  372. package/dist/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +40 -2
  373. package/dist/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +14 -1
  374. package/dist/tests/cases/integration/graphQlSchema/schema-new-builder.gql +40 -2
  375. package/dist/tests/cases/unit/orderbyHelper.test.js +11 -0
  376. package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
  377. package/dist/tests/src/test.d.ts +1 -1
  378. package/dist/tests/src/test.d.ts.map +1 -1
  379. package/dist/tests/src/test.js +34 -32
  380. package/dist/tests/src/test.js.map +1 -1
  381. package/dist/tests/src/testGraphql.js +1 -1
  382. package/dist/tests/src/testGraphql.js.map +1 -1
  383. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  384. package/package.json +11 -11
  385. package/src/ExecutionContainer.ts +204 -0
  386. package/src/index.ts +24 -1
  387. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +6 -0
  388. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +6 -0
  389. package/src/inputProcessing/CreateInputProcessor.ts +8 -11
  390. package/src/inputProcessing/CreateInputVisitor.ts +11 -2
  391. package/src/inputProcessing/UniqueWhereExpander.ts +5 -1
  392. package/src/inputProcessing/UpdateInputProcessor.ts +18 -18
  393. package/src/inputProcessing/UpdateInputVisitor.ts +6 -2
  394. package/src/mapper/ColumnValue.ts +2 -2
  395. package/src/mapper/DataManipulationBuilder.ts +12 -0
  396. package/src/mapper/EventManager.ts +158 -0
  397. package/src/mapper/JunctionTableManager.ts +50 -32
  398. package/src/mapper/Mapper.ts +101 -55
  399. package/src/mapper/MapperFactory.ts +67 -0
  400. package/src/mapper/Result.ts +3 -2
  401. package/src/mapper/delete/DeleteExecutor.ts +262 -95
  402. package/src/mapper/delete/DeleteState.ts +80 -0
  403. package/src/mapper/delete/DeletedEntitiesStorage.ts +6 -0
  404. package/src/mapper/delete/helpers.ts +68 -0
  405. package/src/mapper/index.ts +3 -1
  406. package/src/mapper/insert/InsertBuilder.ts +35 -14
  407. package/src/mapper/insert/InsertBuilderFactory.ts +3 -1
  408. package/src/mapper/insert/Inserter.ts +9 -13
  409. package/src/mapper/insert/SqlCreateInputProcessor.ts +61 -139
  410. package/src/mapper/relations/ManyHasManyInputProcessor.ts +108 -0
  411. package/src/mapper/relations/ManyHasOneInputProcessor.ts +158 -0
  412. package/src/mapper/relations/OneHasManyInputProcessor.ts +101 -0
  413. package/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts +99 -0
  414. package/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.ts +164 -0
  415. package/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts +92 -0
  416. package/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts +253 -0
  417. package/src/mapper/select/JoinBuilder.ts +4 -4
  418. package/src/mapper/select/OrderByHelper.ts +2 -1
  419. package/src/mapper/select/RelationFetcher.ts +2 -2
  420. package/src/mapper/select/WhereBuilder.ts +11 -11
  421. package/src/mapper/update/SqlUpdateInputProcessor.ts +55 -484
  422. package/src/mapper/update/UpdateBuilder.ts +52 -22
  423. package/src/mapper/update/UpdateBuilderFactory.ts +11 -2
  424. package/src/mapper/update/Updater.ts +16 -30
  425. package/src/resolvers/GraphQlQueryAstFactory.ts +1 -2
  426. package/src/resolvers/MutationResolver.ts +13 -14
  427. package/src/resolvers/ReadResolver.ts +5 -9
  428. package/src/resolvers/ValidationResolver.ts +2 -4
  429. package/src/resolvers/index.ts +0 -1
  430. package/src/schema/CustomTypesProvider.ts +2 -27
  431. package/src/schema/GraphQlSchemaBuilderFactory.ts +7 -4
  432. package/src/schema/MutationProvider.ts +4 -4
  433. package/src/schema/QueryProvider.ts +3 -3
  434. package/src/schema/mutations/ConnectOrCreateRelationInputProvider.ts +54 -0
  435. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +2 -6
  436. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +3 -1
  437. package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +20 -15
  438. package/src/schema/mutations/EntityInputProvider.ts +0 -3
  439. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +2 -6
  440. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +3 -1
  441. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +52 -57
  442. package/src/tsconfig.json +7 -21
  443. package/src/types.ts +2 -3
  444. package/tests/cases/bugs/bug-update-by-nested-unique.test.ts +3 -5
  445. package/tests/cases/integration/graphQlDb/insert/insertSequence.test.ts +2 -2
  446. package/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.ts +1 -1
  447. package/tests/cases/integration/graphQlDb/update/deferedConstraints.test.ts +9 -9
  448. package/tests/cases/integration/graphQlDb/update/failedDelete.test.ts +3 -3
  449. package/tests/cases/integration/graphQlDb/update/invalidInput.test.ts +2 -2
  450. package/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.ts +8 -8
  451. package/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.ts +7 -10
  452. package/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.ts +2 -2
  453. package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +15 -34
  454. package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +12 -31
  455. package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +68 -46
  456. package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +11 -12
  457. package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +30 -19
  458. package/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.ts +102 -0
  459. package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +63 -23
  460. package/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.ts +106 -0
  461. package/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationConnect.test.ts → connect.test.ts} +3 -3
  462. package/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.ts +67 -0
  463. package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +6 -18
  464. package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +3 -4
  465. package/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.ts +3 -8
  466. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +51 -12
  467. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.ts +3 -9
  468. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.ts +3 -9
  469. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +51 -12
  470. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.ts +3 -9
  471. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.ts +3 -9
  472. package/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.ts +3 -10
  473. package/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.ts +3 -10
  474. package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +86 -50
  475. package/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.ts +3 -9
  476. package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +3 -9
  477. package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +6 -18
  478. package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +11 -12
  479. package/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.ts +3 -11
  480. package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +51 -12
  481. package/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.ts +3 -8
  482. package/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.ts +3 -6
  483. package/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.ts +3 -6
  484. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.ts +101 -31
  485. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.ts +14 -15
  486. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +106 -12
  487. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.ts +11 -12
  488. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.ts +13 -0
  489. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.ts +3 -6
  490. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +11 -13
  491. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.ts +89 -30
  492. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.ts +51 -0
  493. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.ts +77 -11
  494. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.ts +69 -26
  495. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.ts +3 -10
  496. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.ts +14 -1
  497. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +3 -9
  498. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +6 -19
  499. package/tests/cases/integration/graphQlRequests/update/queryPortal.test.ts +6 -8
  500. package/tests/cases/integration/graphQlRequests/update/transaction.test.ts +9 -24
  501. package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +3 -7
  502. package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +14 -1
  503. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -5
  504. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +14 -1
  505. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +12 -0
  506. package/tests/cases/integration/graphQlSchema/schema-basic.gql +40 -2
  507. package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +30 -3
  508. package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +40 -2
  509. package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +14 -1
  510. package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +40 -2
  511. package/tests/cases/unit/orderbyHelper.test.ts +13 -0
  512. package/tests/src/test.ts +38 -40
  513. package/tests/src/testGraphql.ts +1 -1
  514. package/tests/tsconfig.json +3 -9
  515. package/dist/src/mapper/MapperContainer.d.ts +0 -18
  516. package/dist/src/mapper/MapperContainer.d.ts.map +0 -1
  517. package/dist/src/mapper/MapperContainer.js +0 -55
  518. package/dist/src/mapper/MapperContainer.js.map +0 -1
  519. package/dist/src/resolvers/ExecutionContainerFactory.d.ts +0 -24
  520. package/dist/src/resolvers/ExecutionContainerFactory.d.ts.map +0 -1
  521. package/dist/src/resolvers/ExecutionContainerFactory.js +0 -45
  522. package/dist/src/resolvers/ExecutionContainerFactory.js.map +0 -1
  523. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.d.ts +0 -2
  524. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.d.ts.map +0 -1
  525. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.js.map +0 -1
  526. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.d.ts +0 -2
  527. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.d.ts.map +0 -1
  528. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.js.map +0 -1
  529. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.d.ts +0 -2
  530. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.d.ts.map +0 -1
  531. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.js.map +0 -1
  532. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.d.ts +0 -2
  533. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.d.ts.map +0 -1
  534. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.js.map +0 -1
  535. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.d.ts +0 -2
  536. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.d.ts.map +0 -1
  537. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.js.map +0 -1
  538. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.d.ts +0 -2
  539. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.d.ts.map +0 -1
  540. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.js.map +0 -1
  541. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.d.ts +0 -2
  542. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.d.ts.map +0 -1
  543. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.js.map +0 -1
  544. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.d.ts +0 -2
  545. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.d.ts.map +0 -1
  546. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.js.map +0 -1
  547. package/src/mapper/MapperContainer.ts +0 -138
  548. package/src/resolvers/ExecutionContainerFactory.ts +0 -74
  549. /package/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  550. /package/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  551. /package/tests/cases/integration/graphQlRequests/insert/manyHasOne/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  552. /package/tests/cases/integration/graphQlRequests/insert/oneHasMany/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  553. /package/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  554. /package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationCreate.test.ts → create.test.ts} +0 -0
  555. /package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/{insertRelationEmpty.test.ts → empty.test.ts} +0 -0
@@ -23,9 +23,7 @@ export class CreateEntityInputFieldVisitor implements
23
23
  return undefined
24
24
  }
25
25
  const type = this.columnTypeResolver.getType(column)
26
- return {
27
- type,
28
- }
26
+ return { type }
29
27
  }
30
28
 
31
29
  public visitHasOne({ entity, relation }: Model.AnyHasOneRelationContext): GraphQLInputFieldConfig | undefined {
@@ -33,9 +31,7 @@ export class CreateEntityInputFieldVisitor implements
33
31
  if (type === undefined) {
34
32
  return undefined
35
33
  }
36
- return {
37
- type,
38
- }
34
+ return { type }
39
35
  }
40
36
 
41
37
  public visitHasMany({ entity, relation }: Model.AnyHasManyRelationContext): GraphQLInputFieldConfig | undefined {
@@ -58,10 +58,12 @@ export class CreateEntityRelationAllowedOperationsVisitor implements
58
58
  if (canReadTargetEntity && canCreateOwning) {
59
59
  result.push(Input.CreateRelationOperation.connect)
60
60
  }
61
-
62
61
  if (canCreateTargetEntity && canCreateOwning) {
63
62
  result.push(Input.CreateRelationOperation.create)
64
63
  }
64
+ if (canReadTargetEntity && canCreateTargetEntity && canCreateOwning) {
65
+ result.push(Input.CreateRelationOperation.connectOrCreate)
66
+ }
65
67
 
66
68
  return result
67
69
  }
@@ -7,6 +7,7 @@ import { EntityInputProvider, EntityInputType } from './EntityInputProvider'
7
7
  import { CreateEntityRelationAllowedOperationsVisitor } from './CreateEntityRelationAllowedOperationsVisitor'
8
8
  import { acceptFieldVisitor } from '@contember/schema-utils'
9
9
  import { ImplementationException } from '../../exception'
10
+ import { ConnectOrCreateRelationInputProvider } from './ConnectOrCreateRelationInputProvider'
10
11
 
11
12
  export class CreateEntityRelationInputFieldVisitor implements
12
13
  Model.ColumnVisitor<never>,
@@ -15,10 +16,9 @@ export class CreateEntityRelationInputFieldVisitor implements
15
16
  constructor(
16
17
  private readonly schema: Model.Schema,
17
18
  private readonly whereTypeBuilder: WhereTypeProvider,
18
- private readonly createEntityInputProviderAccessor: Accessor<
19
- Interface<EntityInputProvider<EntityInputType.create>>
20
- >,
19
+ private readonly createEntityInputProviderAccessor: Accessor<Interface<EntityInputProvider<EntityInputType.create>>>,
21
20
  private readonly createEntityRelationAllowedOperationsVisitor: CreateEntityRelationAllowedOperationsVisitor,
21
+ private readonly connectOrCreateRelationInputProvider: ConnectOrCreateRelationInputProvider,
22
22
  ) {}
23
23
 
24
24
  public visitColumn(): never {
@@ -46,12 +46,10 @@ export class CreateEntityRelationInputFieldVisitor implements
46
46
  this.createEntityRelationAllowedOperationsVisitor,
47
47
  )
48
48
 
49
- if (allowedOperations.includes(Input.CreateRelationOperation.connect)) {
50
- const uniqueWhere = this.whereTypeBuilder.getEntityUniqueWhereType(targetEntity.name)
51
- if (uniqueWhere) {
52
- fields[Input.CreateRelationOperation.connect] = {
53
- type: uniqueWhere,
54
- }
49
+ const uniqueWhere = this.whereTypeBuilder.getEntityUniqueWhereType(targetEntity.name)
50
+ if (allowedOperations.includes(Input.CreateRelationOperation.connect) && uniqueWhere) {
51
+ fields[Input.CreateRelationOperation.connect] = {
52
+ type: uniqueWhere,
55
53
  }
56
54
  }
57
55
 
@@ -61,18 +59,25 @@ export class CreateEntityRelationInputFieldVisitor implements
61
59
  type: createInput,
62
60
  }
63
61
  }
62
+ if (allowedOperations.includes(Input.CreateRelationOperation.connectOrCreate) && uniqueWhere !== undefined && createInput !== undefined) {
63
+ const connectOrCreateInput = this.connectOrCreateRelationInputProvider.getInput(entity.name, relation.name)
64
+ if (connectOrCreateInput) {
65
+ fields[Input.CreateRelationOperation.connectOrCreate] = {
66
+ type: connectOrCreateInput,
67
+ }
68
+ }
69
+ }
64
70
  if (Object.keys(fields).length === 0) {
65
71
  return undefined
66
72
  }
67
73
  return new GraphQLInputObjectType({
68
74
  name: GqlTypeName`${entity.name}Create${relation.name}EntityRelationInput`,
69
- fields: () =>
70
- withAliasField
71
- ? {
72
- ...fields,
73
- alias: { type: GraphQLString },
75
+ fields: () => withAliasField
76
+ ? {
77
+ ...fields,
78
+ alias: { type: GraphQLString },
74
79
  }
75
- : fields,
80
+ : fields,
76
81
  })
77
82
  }
78
83
  }
@@ -38,9 +38,6 @@ export class EntityInputProvider<Operation extends EntityInputType> {
38
38
  }
39
39
  const entityName = entity.name
40
40
  const withoutSuffix = withoutRelation ? GqlTypeName`Without${withoutRelation}` : ''
41
- if (entity.view) {
42
- return undefined
43
- }
44
41
  const operation: Acl.Operation = (() => {
45
42
  switch (this.operation) {
46
43
  case EntityInputType.create:
@@ -22,9 +22,7 @@ export class UpdateEntityInputFieldVisitor implements
22
22
  return undefined
23
23
  }
24
24
  const type = this.columnTypeResolver.getType(column)
25
- return {
26
- type,
27
- }
25
+ return { type }
28
26
  }
29
27
 
30
28
  public visitHasOne({ entity, relation }: Model.AnyHasOneRelationContext) {
@@ -32,9 +30,7 @@ export class UpdateEntityInputFieldVisitor implements
32
30
  if (type === undefined) {
33
31
  return undefined
34
32
  }
35
- return {
36
- type,
37
- }
33
+ return { type }
38
34
  }
39
35
 
40
36
  public visitHasMany({ entity, relation }: Model.AnyHasManyRelationContext) {
@@ -72,7 +72,6 @@ export class UpdateEntityRelationAllowedOperationsVisitor implements
72
72
  result.push(Input.UpdateRelationOperation.connect)
73
73
  result.push(Input.UpdateRelationOperation.disconnect)
74
74
  }
75
-
76
75
  if (canCreateTargetEntity && canUpdateOwningRelation) {
77
76
  result.push(Input.UpdateRelationOperation.create)
78
77
  }
@@ -85,6 +84,9 @@ export class UpdateEntityRelationAllowedOperationsVisitor implements
85
84
  if (canDeleteTargetEntity && canUpdateOwningRelation) {
86
85
  result.push(Input.UpdateRelationOperation.delete)
87
86
  }
87
+ if (canReadTargetEntity && canUpdateOwningRelation && canCreateTargetEntity) {
88
+ result.push(Input.UpdateRelationOperation.connectOrCreate)
89
+ }
88
90
 
89
91
  return result
90
92
  }
@@ -14,9 +14,9 @@ import { acceptFieldVisitor } from '@contember/schema-utils'
14
14
  import { UpdateEntityRelationAllowedOperationsVisitor } from './UpdateEntityRelationAllowedOperationsVisitor'
15
15
  import { Authorizator } from '../../acl'
16
16
  import { ImplementationException } from '../../exception'
17
+ import { ConnectOrCreateRelationInputProvider } from './ConnectOrCreateRelationInputProvider'
17
18
 
18
- export class UpdateEntityRelationInputFieldVisitor implements
19
- Model.ColumnVisitor<never>,
19
+ export class UpdateEntityRelationInputFieldVisitor implements Model.ColumnVisitor<never>,
20
20
  Model.RelationByGenericTypeVisitor<GraphQLInputObjectType | undefined> {
21
21
 
22
22
  constructor(
@@ -26,7 +26,9 @@ export class UpdateEntityRelationInputFieldVisitor implements
26
26
  private readonly updateEntityInputProviderAccessor: Accessor<EntityInputProvider<EntityInputType.update>>,
27
27
  private readonly createEntityInputProvider: EntityInputProvider<EntityInputType.create>,
28
28
  private readonly updateEntityRelationAllowedOperationsVisitor: UpdateEntityRelationAllowedOperationsVisitor,
29
- ) {}
29
+ private readonly connectOrCreateRelationInputProvider: ConnectOrCreateRelationInputProvider,
30
+ ) {
31
+ }
30
32
 
31
33
  public visitColumn(): never {
32
34
  throw new Error('UpdateEntityRelationInputFieldVisitor: Not applicable for a column')
@@ -36,39 +38,39 @@ export class UpdateEntityRelationInputFieldVisitor implements
36
38
  const withoutRelation = targetRelation ? targetRelation.name : undefined
37
39
 
38
40
  const whereInput = this.createWhereInput(targetEntity)
41
+
39
42
  const createInputType = this.createEntityInputProvider.getInput(targetEntity.name, withoutRelation)
40
- const createInput = createInputType
41
- ? {
42
- type: createInputType,
43
- }
44
- : undefined
43
+ const createInput = createInputType ? { type: createInputType } : undefined
44
+
45
45
  const updateInputType = this.updateEntityInputProviderAccessor.get().getInput(targetEntity.name, withoutRelation)
46
- const updateInput = updateInputType
46
+ const updateInput = updateInputType ? { type: updateInputType } : undefined
47
+
48
+ const upsertInput = updateInput && createInput
47
49
  ? {
48
- type: updateInputType,
49
- }
50
- : undefined
51
- const upsertInput =
52
- updateInput && createInput
53
- ? {
54
- type: new GraphQLInputObjectType({
55
- name: GqlTypeName`${entity.name}Upsert${relation.name}RelationInput`,
56
- fields: () => ({
57
- update: updateInput,
58
- create: createInput,
59
- }),
50
+ type: new GraphQLInputObjectType({
51
+ name: GqlTypeName`${entity.name}Upsert${relation.name}RelationInput`,
52
+ fields: () => ({
53
+ update: updateInput,
54
+ create: createInput,
60
55
  }),
61
- }
62
- : undefined
56
+ }),
57
+ }
58
+ : undefined
59
+
63
60
  const booleanInput = {
64
61
  type: GraphQLBoolean,
65
62
  }
66
63
 
64
+ const connectOrCreateInput = createInput && whereInput
65
+ ? { type: this.connectOrCreateRelationInputProvider.getInput(entity.name, relation.name) }
66
+ : undefined
67
+
67
68
  const fields = {
69
+ [Input.UpdateRelationOperation.connect]: whereInput,
68
70
  [Input.UpdateRelationOperation.create]: createInput,
71
+ [Input.UpdateRelationOperation.connectOrCreate]: connectOrCreateInput,
69
72
  [Input.UpdateRelationOperation.update]: updateInput,
70
73
  [Input.UpdateRelationOperation.upsert]: upsertInput,
71
- [Input.UpdateRelationOperation.connect]: whereInput,
72
74
  [Input.UpdateRelationOperation.disconnect]: booleanInput,
73
75
  [Input.UpdateRelationOperation.delete]: booleanInput,
74
76
  }
@@ -88,45 +90,37 @@ export class UpdateEntityRelationInputFieldVisitor implements
88
90
  const withoutRelation = targetRelation ? targetRelation.name : undefined
89
91
 
90
92
  const whereInput = this.createWhereInput(targetEntity)
93
+
91
94
  const createInputType = this.createEntityInputProvider.getInput(targetEntity.name, withoutRelation)
92
- const createInput = createInputType
93
- ? {
94
- type: createInputType,
95
- }
96
- : undefined
95
+ const createInput = createInputType ? { type: createInputType } : undefined
96
+
97
97
  const updateInputType = this.updateEntityInputProviderAccessor.get().getInput(targetEntity.name, withoutRelation)
98
- const updateInput = updateInputType
98
+ const updateInput = updateInputType ? { type: updateInputType } : undefined
99
+
100
+ const updateSpecifiedInput = updateInput && whereInput
99
101
  ? {
100
- type: updateInputType,
101
- }
102
+ type: new GraphQLInputObjectType({
103
+ name: GqlTypeName`${entity.name}Update${relation.name}RelationInput`,
104
+ fields: () => ({
105
+ by: whereInput,
106
+ data: updateInput,
107
+ }),
108
+ }),
109
+ }
102
110
  : undefined
103
111
 
104
- const updateSpecifiedInput =
105
- updateInput && whereInput
106
- ? {
107
- type: new GraphQLInputObjectType({
108
- name: GqlTypeName`${entity.name}Update${relation.name}RelationInput`,
109
- fields: () => ({
110
- by: whereInput,
111
- data: updateInput,
112
- }),
113
- }),
114
- }
115
- : undefined
116
-
117
- const upsertInput =
118
- updateInput && createInput && whereInput
119
- ? {
120
- type: new GraphQLInputObjectType({
121
- name: GqlTypeName`${entity.name}Upsert${relation.name}RelationInput`,
122
- fields: () => ({
123
- by: whereInput,
124
- update: updateInput,
125
- create: createInput,
126
- }),
112
+ const upsertInput = updateInput && createInput && whereInput
113
+ ? {
114
+ type: new GraphQLInputObjectType({
115
+ name: GqlTypeName`${entity.name}Upsert${relation.name}RelationInput`,
116
+ fields: () => ({
117
+ by: whereInput,
118
+ update: updateInput,
119
+ create: createInput,
127
120
  }),
128
- }
129
- : undefined
121
+ }),
122
+ }
123
+ : undefined
130
124
 
131
125
  const fields = {
132
126
  [Input.UpdateRelationOperation.create]: createInput,
@@ -136,6 +130,7 @@ export class UpdateEntityRelationInputFieldVisitor implements
136
130
  [Input.UpdateRelationOperation.disconnect]: whereInput,
137
131
  [Input.UpdateRelationOperation.delete]: whereInput,
138
132
  }
133
+
139
134
  const filteredFields = this.filterAllowedOperations(entity, relation, fields)
140
135
  if (Object.keys(filteredFields).length === 0) {
141
136
  return undefined
package/src/tsconfig.json CHANGED
@@ -5,26 +5,12 @@
5
5
  "esModuleInterop": true
6
6
  },
7
7
  "references": [
8
- {
9
- "path": "../../database/src"
10
- },
11
- {
12
- "path": "../../dic/src"
13
- },
14
- {
15
- "path": "../../graphql-utils/src"
16
- },
17
- {
18
- "path": "../../logger/src"
19
- },
20
- {
21
- "path": "../../schema/src"
22
- },
23
- {
24
- "path": "../../schema-definition/src"
25
- },
26
- {
27
- "path": "../../schema-utils/src"
28
- }
8
+ { "path": "../../database/src" },
9
+ { "path": "../../dic/src" },
10
+ { "path": "../../graphql-utils/src" },
11
+ { "path": "../../logger/src" },
12
+ { "path": "../../schema/src" },
13
+ { "path": "../../schema-definition/src" },
14
+ { "path": "../../schema-utils/src" }
29
15
  ]
30
16
  }
package/src/types.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  import { Acl } from '@contember/schema'
2
2
  import { Client } from '@contember/database'
3
- import { Container } from '@contember/dic'
4
- import { ExecutionContainer } from './resolvers'
3
+ import { ExecutionContainer } from './ExecutionContainer'
5
4
 
6
5
  export interface Context {
7
6
  db: Client
8
7
  identityVariables: Acl.VariablesMap
9
- executionContainer: Container<ExecutionContainer>
8
+ executionContainer: ExecutionContainer
10
9
  timer: <T>(event: string, cb?: () => T) => Promise<T>
11
10
  }
@@ -31,11 +31,9 @@ test('Update by nested unique where', async () => {
31
31
  parameters: ['en'],
32
32
  },
33
33
  {
34
- sql: SQL`
35
- with "newData_" as
36
- (select ? :: text as "title", "root_"."id", "root_"."site_id" from "public"."front_page" as "root_" where "root_"."id" = ?)
37
- update "public"."front_page" set "title" = "newData_"."title" from "newData_" where "front_page"."id" = "newData_"."id"`,
38
- response: { rowCount: 1 },
34
+ sql: SQL`with "newData_" as (select ? :: text as "title", "root_"."title" as "title_old__", "root_"."id", "root_"."site_id" from "public"."front_page" as "root_" where "root_"."id" = ?)
35
+ update "public"."front_page" set "title" = "newData_"."title" from "newData_" where "front_page"."id" = "newData_"."id" returning "title_old__"`,
36
+ response: { rows: [{}] },
39
37
  parameters: ['Hello', testUuid(1)],
40
38
  },
41
39
  ]),
@@ -10,9 +10,9 @@ namespace SeqModel {
10
10
  }
11
11
 
12
12
  test('insert author with id', async () => {
13
- const schema = def.createModel(SeqModel)
13
+ const model = def.createModel(SeqModel)
14
14
  await executeDbTest({
15
- schema: schema,
15
+ schema: { model },
16
16
  query: GQL`
17
17
  mutation {
18
18
  createOrder(data: {}) {
@@ -18,7 +18,7 @@ namespace Model {
18
18
  }
19
19
  test('create redirect to non-existing target', async () => {
20
20
  await executeDbTest({
21
- schema: def.createModel(Model),
21
+ schema: { model: def.createModel(Model) },
22
22
  query: GQL`
23
23
  mutation {
24
24
  createRedirect(
@@ -6,7 +6,7 @@ import { executeDbTest } from '@contember/engine-api-tester'
6
6
 
7
7
  test('delete without deferring constraints', async () => {
8
8
  await executeDbTest({
9
- schema: new SchemaBuilder()
9
+ schema: { model: new SchemaBuilder()
10
10
  .entity('Post', entity =>
11
11
  entity
12
12
  .column('slug')
@@ -25,7 +25,7 @@ test('delete without deferring constraints', async () => {
25
25
  .manyHasOne('attachment', relation => relation.target('Attachment').inversedBy('refereces'))
26
26
  .unique(['slug']),
27
27
  )
28
- .buildSchema(),
28
+ .buildSchema() },
29
29
  seed: [
30
30
  {
31
31
  query: `mutation {
@@ -60,10 +60,10 @@ test('delete without deferring constraints', async () => {
60
60
  return: {
61
61
  transaction: {
62
62
  ok: false,
63
- errorMessage: 'Execution has failed:\nupdatePost.attachments.0: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-000000000002 of entity Attachment, because it is still referenced from Reference::attachment. This is possibly caused by ACL denial or by missing "on delete cascade")',
63
+ errorMessage: 'Execution has failed:\nupdatePost.attachments.0: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-000000000004 row(s) of entity Attachment, because it is still referenced from 123e4567-e89b-12d3-a456-000000000006 row(s) of entity Reference in relation attachment. OnDelete behaviour of this relation is set to "restrict". You might consider changing it to "setNull" or "cascade".)',
64
64
  updatePost: {
65
65
  ok: false,
66
- errorMessage: 'Execution has failed:\nattachments.0: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-000000000002 of entity Attachment, because it is still referenced from Reference::attachment. This is possibly caused by ACL denial or by missing "on delete cascade")',
66
+ errorMessage: 'Execution has failed:\nattachments.0: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-000000000004 row(s) of entity Attachment, because it is still referenced from 123e4567-e89b-12d3-a456-000000000006 row(s) of entity Reference in relation attachment. OnDelete behaviour of this relation is set to "restrict". You might consider changing it to "setNull" or "cascade".)',
67
67
  },
68
68
  },
69
69
  },
@@ -73,7 +73,7 @@ test('delete without deferring constraints', async () => {
73
73
 
74
74
  test('delete with successfully deferring constraints', async () => {
75
75
  await executeDbTest({
76
- schema: new SchemaBuilder()
76
+ schema: { model: new SchemaBuilder()
77
77
  .entity('Post', entity =>
78
78
  entity
79
79
  .column('slug')
@@ -92,7 +92,7 @@ test('delete with successfully deferring constraints', async () => {
92
92
  .manyHasOne('attachment', relation => relation.target('Attachment').inversedBy('refereces'))
93
93
  .unique(['slug']),
94
94
  )
95
- .buildSchema(),
95
+ .buildSchema() },
96
96
  seed: [
97
97
  {
98
98
  query: `mutation {
@@ -140,7 +140,7 @@ test('delete with successfully deferring constraints', async () => {
140
140
 
141
141
  test('delete with unsuccessfully deferring constraints', async () => {
142
142
  await executeDbTest({
143
- schema: new SchemaBuilder()
143
+ schema: { model: new SchemaBuilder()
144
144
  .entity('Post', entity =>
145
145
  entity
146
146
  .column('slug')
@@ -159,7 +159,7 @@ test('delete with unsuccessfully deferring constraints', async () => {
159
159
  .manyHasOne('attachment', relation => relation.target('Attachment').inversedBy('refereces'))
160
160
  .unique(['slug']),
161
161
  )
162
- .buildSchema(),
162
+ .buildSchema() },
163
163
  seed: [
164
164
  {
165
165
  query: `mutation {
@@ -194,7 +194,7 @@ test('delete with unsuccessfully deferring constraints', async () => {
194
194
  return: {
195
195
  transaction: {
196
196
  ok: false,
197
- errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-000000000002 of entity Attachment, because it is still referenced from Reference::attachment. This is possibly caused by ACL denial or by missing "on delete cascade")',
197
+ errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-000000000004 of entity Attachment, because it is still referenced from Reference::attachment. This is possibly caused by ACL denial or by missing "on delete cascade")',
198
198
  updatePost: {
199
199
  ok: false,
200
200
  errorMessage: null,
@@ -6,14 +6,14 @@ import { executeDbTest } from '@contember/engine-api-tester'
6
6
 
7
7
  test('fails when deleting entity without proper cascade', async () => {
8
8
  await executeDbTest({
9
- schema: new SchemaBuilder()
9
+ schema: { model: new SchemaBuilder()
10
10
  .entity('Post', entity =>
11
11
  entity.column('slug').unique(['slug']),
12
12
  )
13
13
  .entity('PostLocales', entity =>
14
14
  entity.manyHasOne('post', relation => relation.target('Post').inversedBy('locales')).column('title'),
15
15
  )
16
- .buildSchema(),
16
+ .buildSchema() },
17
17
  seed: [
18
18
  {
19
19
  query: `mutation {
@@ -37,7 +37,7 @@ test('fails when deleting entity without proper cascade', async () => {
37
37
  }`,
38
38
  return: {
39
39
  deletePost: {
40
- errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete row 123e4567-e89b-12d3-a456-000000000001 of entity Post, because it is still referenced from PostLocales::post. This is possibly caused by ACL denial or by missing "on delete cascade")',
40
+ errorMessage: 'Execution has failed:\nunknown field: ForeignKeyConstraintViolation (Cannot delete 123e4567-e89b-12d3-a456-000000000003 row(s) of entity Post, because it is still referenced from 123e4567-e89b-12d3-a456-000000000004 row(s) of entity PostLocales in relation post. OnDelete behaviour of this relation is set to "restrict". You might consider changing it to "setNull" or "cascade".)',
41
41
  node: null,
42
42
  },
43
43
  },
@@ -4,7 +4,7 @@ import { test, assert } from 'vitest'
4
4
  import { executeDbTest } from '@contember/engine-api-tester'
5
5
  import { GQL } from '../../../../src/tags'
6
6
 
7
- const schema = new SchemaBuilder()
7
+ const model = new SchemaBuilder()
8
8
  .entity('Post', e =>
9
9
  e
10
10
  .column('slug', c => c.type(Model.ColumnType.String).unique())
@@ -13,7 +13,7 @@ const schema = new SchemaBuilder()
13
13
  .buildSchema()
14
14
  test('returns error for invalid date input', async () => {
15
15
  await executeDbTest({
16
- schema,
16
+ schema: { model },
17
17
  seed: [
18
18
  {
19
19
  query: GQL`mutation {
@@ -5,7 +5,7 @@ import { executeDbTest } from '@contember/engine-api-tester'
5
5
  import { GQL } from '../../../../src/tags'
6
6
  import { testUuid } from '../../../../src/testUuid'
7
7
 
8
- const schema = new SchemaBuilder()
8
+ const model = new SchemaBuilder()
9
9
  .entity('Site', e =>
10
10
  e
11
11
  .column('slug', c => c.unique().type(Model.ColumnType.String))
@@ -17,7 +17,7 @@ const schema = new SchemaBuilder()
17
17
 
18
18
  test('update site & create contact page', async () => {
19
19
  await executeDbTest({
20
- schema,
20
+ schema: { model },
21
21
  seed: [
22
22
  {
23
23
  query: GQL`mutation {
@@ -38,15 +38,15 @@ test('update site & create contact page', async () => {
38
38
  },
39
39
  },
40
40
  expectDatabase: {
41
- site: [{ id: testUuid(1), slug: 'en', contact_page_id: testUuid(2) }],
42
- contact_page: [{ id: testUuid(2), title: 'Test' }],
41
+ site: [{ id: testUuid(3), slug: 'en', contact_page_id: testUuid(5) }],
42
+ contact_page: [{ id: testUuid(5), title: 'Test' }],
43
43
  },
44
44
  })
45
45
  })
46
46
 
47
47
  test('update site & try to create contact page which however exists', async () => {
48
48
  await executeDbTest({
49
- schema,
49
+ schema: { model },
50
50
  seed: [
51
51
  {
52
52
  query: GQL`mutation {
@@ -69,14 +69,14 @@ test('update site & try to create contact page which however exists', async () =
69
69
  ok: false,
70
70
  errors: [
71
71
  {
72
- type: 'UniqueConstraintViolation',
72
+ type: 'NotNullConstraintViolation',
73
73
  },
74
74
  ],
75
75
  },
76
76
  },
77
77
  expectDatabase: {
78
- site: [{ id: testUuid(1), slug: 'en', contact_page_id: testUuid(2) }],
79
- contact_page: [{ id: testUuid(2), title: 'Test' }],
78
+ site: [{ id: testUuid(3), slug: 'en', contact_page_id: testUuid(4) }],
79
+ contact_page: [{ id: testUuid(4), title: 'Test' }],
80
80
  },
81
81
  })
82
82
  })
@@ -5,7 +5,7 @@ import { executeDbTest } from '@contember/engine-api-tester'
5
5
  import { GQL } from '../../../../src/tags'
6
6
  import { testUuid } from '../../../../src/testUuid'
7
7
 
8
- const schema = new SchemaBuilder()
8
+ const model = new SchemaBuilder()
9
9
  .entity('Site', e => e.column('slug', c => c.unique().type(Model.ColumnType.String)))
10
10
  .entity('ContactPage', e =>
11
11
  e.column('title').oneHasOne('site', r => r.target('Site').inversedBy('contactPage').notNull()),
@@ -14,7 +14,7 @@ const schema = new SchemaBuilder()
14
14
 
15
15
  test('update site & create contact page', async () => {
16
16
  await executeDbTest({
17
- schema,
17
+ schema: { model },
18
18
  seed: [
19
19
  {
20
20
  query: GQL`mutation {
@@ -35,15 +35,15 @@ test('update site & create contact page', async () => {
35
35
  },
36
36
  },
37
37
  expectDatabase: {
38
- site: [{ id: testUuid(1), slug: 'en' }],
39
- contact_page: [{ site_id: testUuid(1), id: testUuid(2), title: 'Test' }],
38
+ site: [{ id: testUuid(3), slug: 'en' }],
39
+ contact_page: [{ site_id: testUuid(3), id: testUuid(5), title: 'Test' }],
40
40
  },
41
41
  })
42
42
  })
43
43
 
44
44
  test('update site & try to create contact page which however exists', async () => {
45
45
  await executeDbTest({
46
- schema,
46
+ schema: { model },
47
47
  seed: [
48
48
  {
49
49
  query: GQL`mutation {
@@ -68,15 +68,12 @@ test('update site & try to create contact page which however exists', async () =
68
68
  {
69
69
  type: 'NotNullConstraintViolation',
70
70
  },
71
- {
72
- type: 'UniqueConstraintViolation',
73
- },
74
71
  ],
75
72
  },
76
73
  },
77
74
  expectDatabase: {
78
- site: [{ id: testUuid(1), slug: 'en' }],
79
- contact_page: [{ site_id: testUuid(1), id: testUuid(2), title: 'Test' }],
75
+ site: [{ id: testUuid(3), slug: 'en' }],
76
+ contact_page: [{ site_id: testUuid(3), id: testUuid(4), title: 'Test' }],
80
77
  },
81
78
  })
82
79
  })
@@ -4,7 +4,7 @@ import { test } from 'vitest'
4
4
  import { executeDbTest } from '@contember/engine-api-tester'
5
5
  import { GQL } from '../../../../src/tags'
6
6
 
7
- const schema = new SchemaBuilder()
7
+ const model = new SchemaBuilder()
8
8
  .entity('Site', e =>
9
9
  e.column('slug', c => c.unique().type(Model.ColumnType.String)),
10
10
  )
@@ -12,7 +12,7 @@ const schema = new SchemaBuilder()
12
12
 
13
13
  test('fail when creating a non-unique site', async () => {
14
14
  await executeDbTest({
15
- schema,
15
+ schema: { model },
16
16
  seed: [
17
17
  {
18
18
  query: GQL`mutation {