@contember/engine-content-api 2.0.0-alpha.20 → 2.0.0-alpha.21

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 (320) hide show
  1. package/dist/development/index.cjs +1 -1
  2. package/dist/development/index.js +1 -1
  3. package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
  4. package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  5. package/dist/development/src/input-validation/preValidation/InputPreValidator.js +1 -1
  6. package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  7. package/dist/development/src/inputProcessing/CreateInputVisitor.cjs +10 -10
  8. package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  9. package/dist/development/src/inputProcessing/CreateInputVisitor.js +10 -10
  10. package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  11. package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs +13 -13
  12. package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  13. package/dist/development/src/inputProcessing/UpdateInputVisitor.js +13 -13
  14. package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  15. package/dist/development/src/mapper/MutationProcessorHelper.cjs +10 -2
  16. package/dist/development/src/mapper/MutationProcessorHelper.cjs.map +1 -1
  17. package/dist/development/src/mapper/MutationProcessorHelper.js +10 -2
  18. package/dist/development/src/mapper/MutationProcessorHelper.js.map +1 -1
  19. package/dist/development/src/mapper/Result.cjs +10 -27
  20. package/dist/development/src/mapper/Result.cjs.map +1 -1
  21. package/dist/development/src/mapper/Result.js +10 -27
  22. package/dist/development/src/mapper/Result.js.map +1 -1
  23. package/dist/development/src/mapper/insert/InsertBuilder.cjs +1 -13
  24. package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  25. package/dist/development/src/mapper/insert/InsertBuilder.js +1 -13
  26. package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
  27. package/dist/development/src/mapper/insert/Inserter.cjs +43 -21
  28. package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
  29. package/dist/development/src/mapper/insert/Inserter.js +45 -23
  30. package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
  31. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs +22 -76
  32. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  33. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js +22 -76
  34. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  35. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +45 -0
  36. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
  37. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +45 -0
  38. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
  39. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +42 -0
  40. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
  41. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +42 -0
  42. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
  43. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +37 -0
  44. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
  45. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +37 -0
  46. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
  47. package/dist/development/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +25 -32
  48. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
  49. package/dist/development/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +25 -32
  50. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
  51. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +67 -0
  52. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
  53. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +67 -0
  54. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
  55. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
  56. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  57. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
  58. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  59. package/dist/development/src/mapper/update/UpdateBuilder.cjs +2 -14
  60. package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  61. package/dist/development/src/mapper/update/UpdateBuilder.js +2 -14
  62. package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
  63. package/dist/development/src/mapper/update/Updater.cjs +45 -17
  64. package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
  65. package/dist/development/src/mapper/update/Updater.js +47 -19
  66. package/dist/development/src/mapper/update/Updater.js.map +1 -1
  67. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +89 -0
  68. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
  69. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +89 -0
  70. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
  71. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +89 -0
  72. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
  73. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +89 -0
  74. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
  75. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +86 -0
  76. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
  77. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +86 -0
  78. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
  79. package/dist/development/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.cjs +83 -66
  80. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
  81. package/dist/development/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.js +83 -66
  82. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
  83. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +187 -0
  84. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
  85. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +187 -0
  86. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
  87. package/dist/development/src/resolvers/MutationResolver.cjs +1 -1
  88. package/dist/development/src/resolvers/MutationResolver.js +1 -1
  89. package/dist/production/index.cjs +1 -1
  90. package/dist/production/index.js +1 -1
  91. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
  92. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  93. package/dist/production/src/input-validation/preValidation/InputPreValidator.js +1 -1
  94. package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  95. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +10 -10
  96. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  97. package/dist/production/src/inputProcessing/CreateInputVisitor.js +10 -10
  98. package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  99. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +13 -13
  100. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  101. package/dist/production/src/inputProcessing/UpdateInputVisitor.js +13 -13
  102. package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  103. package/dist/production/src/mapper/MutationProcessorHelper.cjs +10 -2
  104. package/dist/production/src/mapper/MutationProcessorHelper.cjs.map +1 -1
  105. package/dist/production/src/mapper/MutationProcessorHelper.js +10 -2
  106. package/dist/production/src/mapper/MutationProcessorHelper.js.map +1 -1
  107. package/dist/production/src/mapper/Result.cjs +10 -27
  108. package/dist/production/src/mapper/Result.cjs.map +1 -1
  109. package/dist/production/src/mapper/Result.js +10 -27
  110. package/dist/production/src/mapper/Result.js.map +1 -1
  111. package/dist/production/src/mapper/insert/InsertBuilder.cjs +1 -13
  112. package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  113. package/dist/production/src/mapper/insert/InsertBuilder.js +1 -13
  114. package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
  115. package/dist/production/src/mapper/insert/Inserter.cjs +43 -21
  116. package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
  117. package/dist/production/src/mapper/insert/Inserter.js +45 -23
  118. package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
  119. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +22 -76
  120. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  121. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +22 -76
  122. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  123. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +45 -0
  124. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
  125. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +45 -0
  126. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
  127. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +42 -0
  128. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
  129. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +42 -0
  130. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
  131. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +37 -0
  132. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
  133. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +37 -0
  134. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
  135. package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +25 -32
  136. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
  137. package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +25 -32
  138. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
  139. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +67 -0
  140. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
  141. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +67 -0
  142. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
  143. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
  144. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  145. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
  146. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  147. package/dist/production/src/mapper/update/UpdateBuilder.cjs +2 -14
  148. package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  149. package/dist/production/src/mapper/update/UpdateBuilder.js +2 -14
  150. package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
  151. package/dist/production/src/mapper/update/Updater.cjs +45 -17
  152. package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
  153. package/dist/production/src/mapper/update/Updater.js +47 -19
  154. package/dist/production/src/mapper/update/Updater.js.map +1 -1
  155. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +89 -0
  156. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
  157. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +89 -0
  158. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
  159. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +89 -0
  160. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
  161. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +89 -0
  162. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
  163. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +86 -0
  164. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
  165. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +86 -0
  166. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
  167. package/dist/production/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.cjs +83 -66
  168. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
  169. package/dist/production/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.js +83 -66
  170. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
  171. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +187 -0
  172. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
  173. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +187 -0
  174. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
  175. package/dist/production/src/resolvers/MutationResolver.cjs +1 -1
  176. package/dist/production/src/resolvers/MutationResolver.js +1 -1
  177. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  178. package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
  179. package/dist/types/inputProcessing/CreateInputVisitor.d.ts +8 -8
  180. package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  181. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +8 -8
  182. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  183. package/dist/types/mapper/MutationProcessorHelper.d.ts +2 -2
  184. package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
  185. package/dist/types/mapper/Result.d.ts +11 -5
  186. package/dist/types/mapper/Result.d.ts.map +1 -1
  187. package/dist/types/mapper/insert/InsertBuilder.d.ts +3 -7
  188. package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
  189. package/dist/types/mapper/insert/Inserter.d.ts +0 -1
  190. package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
  191. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts +11 -8
  192. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  193. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +24 -0
  194. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -0
  195. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +23 -0
  196. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -0
  197. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +26 -0
  198. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -0
  199. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +29 -0
  200. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -0
  201. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +24 -0
  202. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -0
  203. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +10 -7
  204. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  205. package/dist/types/mapper/update/UpdateBuilder.d.ts +2 -6
  206. package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
  207. package/dist/types/mapper/update/Updater.d.ts +0 -1
  208. package/dist/types/mapper/update/Updater.d.ts.map +1 -1
  209. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +46 -0
  210. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -0
  211. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +40 -0
  212. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -0
  213. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +46 -0
  214. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -0
  215. package/dist/types/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.d.ts +17 -13
  216. package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -0
  217. package/dist/types/mapper/{relations → update/relations}/OneHasOneOwningUpdateInputProcessor.d.ts +19 -16
  218. package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -0
  219. package/dist/types/tsconfig.tsbuildinfo +1 -1
  220. package/package.json +10 -10
  221. package/src/input-validation/preValidation/InputPreValidator.ts +3 -5
  222. package/src/inputProcessing/CreateInputVisitor.ts +14 -14
  223. package/src/inputProcessing/UpdateInputVisitor.ts +17 -17
  224. package/src/mapper/MutationProcessorHelper.ts +16 -8
  225. package/src/mapper/Result.ts +11 -47
  226. package/src/mapper/insert/InsertBuilder.ts +8 -22
  227. package/src/mapper/insert/Inserter.ts +53 -40
  228. package/src/mapper/insert/SqlCreateInputProcessor.ts +35 -88
  229. package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +59 -0
  230. package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +57 -0
  231. package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +50 -0
  232. package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +91 -0
  233. package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +87 -0
  234. package/src/mapper/update/SqlUpdateInputProcessor.ts +48 -46
  235. package/src/mapper/update/UpdateBuilder.ts +9 -23
  236. package/src/mapper/update/Updater.ts +53 -34
  237. package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +116 -0
  238. package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +125 -0
  239. package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +111 -0
  240. package/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.ts +93 -73
  241. package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +243 -0
  242. package/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.ts +8 -8
  243. package/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.ts +4 -4
  244. package/dist/development/src/mapper/DataManipulationBuilder.cjs +0 -5
  245. package/dist/development/src/mapper/DataManipulationBuilder.cjs.map +0 -1
  246. package/dist/development/src/mapper/DataManipulationBuilder.js +0 -5
  247. package/dist/development/src/mapper/DataManipulationBuilder.js.map +0 -1
  248. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
  249. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
  250. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
  251. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
  252. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
  253. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
  254. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
  255. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
  256. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
  257. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
  258. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
  259. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
  260. package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
  261. package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
  262. package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
  263. package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
  264. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
  265. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
  266. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
  267. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
  268. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
  269. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
  270. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
  271. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
  272. package/dist/production/src/mapper/DataManipulationBuilder.cjs +0 -5
  273. package/dist/production/src/mapper/DataManipulationBuilder.cjs.map +0 -1
  274. package/dist/production/src/mapper/DataManipulationBuilder.js +0 -5
  275. package/dist/production/src/mapper/DataManipulationBuilder.js.map +0 -1
  276. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
  277. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
  278. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
  279. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
  280. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
  281. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
  282. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
  283. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
  284. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
  285. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
  286. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
  287. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
  288. package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
  289. package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
  290. package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
  291. package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
  292. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
  293. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
  294. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
  295. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
  296. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
  297. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
  298. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
  299. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
  300. package/dist/types/mapper/DataManipulationBuilder.d.ts +0 -7
  301. package/dist/types/mapper/DataManipulationBuilder.d.ts.map +0 -1
  302. package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts +0 -32
  303. package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts.map +0 -1
  304. package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts +0 -32
  305. package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts.map +0 -1
  306. package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts +0 -29
  307. package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts.map +0 -1
  308. package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts +0 -21
  309. package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +0 -1
  310. package/dist/types/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +0 -1
  311. package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts +0 -21
  312. package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +0 -1
  313. package/dist/types/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +0 -1
  314. package/src/mapper/DataManipulationBuilder.ts +0 -12
  315. package/src/mapper/relations/ManyHasManyInputProcessor.ts +0 -108
  316. package/src/mapper/relations/ManyHasOneInputProcessor.ts +0 -158
  317. package/src/mapper/relations/OneHasManyInputProcessor.ts +0 -101
  318. package/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts +0 -99
  319. package/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts +0 -92
  320. package/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts +0 -253
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-content-api",
3
- "version": "2.0.0-alpha.20",
3
+ "version": "2.0.0-alpha.21",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/production/index.js",
6
6
  "typings": "./dist/types/index.d.ts",
@@ -26,18 +26,18 @@
26
26
  "generate": "gql-gen --config graphql.codegen.yml"
27
27
  },
28
28
  "dependencies": {
29
- "@contember/database": "2.0.0-alpha.20",
30
- "@contember/dic": "2.0.0-alpha.20",
31
- "@contember/graphql-utils": "2.0.0-alpha.20",
32
- "@contember/logger": "2.0.0-alpha.20",
33
- "@contember/schema": "2.0.0-alpha.20",
34
- "@contember/schema-definition": "2.0.0-alpha.20",
35
- "@contember/schema-utils": "2.0.0-alpha.20",
29
+ "@contember/database": "2.0.0-alpha.21",
30
+ "@contember/dic": "2.0.0-alpha.21",
31
+ "@contember/graphql-utils": "2.0.0-alpha.21",
32
+ "@contember/logger": "2.0.0-alpha.21",
33
+ "@contember/schema": "2.0.0-alpha.21",
34
+ "@contember/schema-definition": "2.0.0-alpha.21",
35
+ "@contember/schema-utils": "2.0.0-alpha.21",
36
36
  "fast-deep-equal": "^3.1.3"
37
37
  },
38
38
  "devDependencies": {
39
- "@contember/database-tester": "2.0.0-alpha.20",
40
- "@contember/schema-definition": "2.0.0-alpha.20",
39
+ "@contember/database-tester": "2.0.0-alpha.21",
40
+ "@contember/schema-definition": "2.0.0-alpha.21",
41
41
  "@types/node": "^20.16.11",
42
42
  "graphql": "^16.9.0",
43
43
  "pg": "^8.12.0"
@@ -158,14 +158,12 @@ export class InputPreValidator {
158
158
 
159
159
  private async validateRelations(
160
160
  entity: Model.Entity,
161
- visitor: Model.FieldVisitor<Promise<ValidationResult | ValidationResult[] | undefined>>,
162
- ): Promise<FieldValidationResult[]> {
161
+ visitor: Model.FieldVisitor<Promise<ValidationResult[]>>,
162
+ ): Promise<ValidationResult> {
163
163
  const validateRelationsResult = acceptEveryFieldVisitor(this.model, entity, visitor)
164
164
 
165
165
  return (await Promise.all(Object.values(validateRelationsResult)))
166
- .filter((value): value is FieldValidationResult[] | FieldValidationResult[][] => value !== undefined)
167
- .reduce<(FieldValidationResult[] | FieldValidationResult)[]>((res, it) => [...res, ...it], [])
168
- .reduce<FieldValidationResult[]>((res, it) => [...res, ...(Array.isArray(it) ? it : [it])], [])
166
+ .flatMap(it => it.flat())
169
167
  }
170
168
 
171
169
  private getApplicableRules(changedFields: string[], entityRules: Validation.EntityRules): Validation.EntityRules {
@@ -6,8 +6,8 @@ import { UserError } from '../exception'
6
6
  import { ImplementationException } from '../exception'
7
7
 
8
8
  export class CreateInputVisitor<Result> implements
9
- Model.ColumnVisitor<Promise<Result | Result[] | undefined>>,
10
- Model.RelationByTypeVisitor<Promise<Result | Result[] | undefined>> {
9
+ Model.ColumnVisitor<Promise<Result[]>>,
10
+ Model.RelationByTypeVisitor<Promise<Result[]>> {
11
11
 
12
12
  constructor(
13
13
  private readonly createInputProcessor: CreateInputProcessor<Result>,
@@ -15,11 +15,11 @@ export class CreateInputVisitor<Result> implements
15
15
  private readonly data: Input.CreateDataInput,
16
16
  ) {}
17
17
 
18
- public visitColumn(context: Model.ColumnContext): Promise<Result> {
19
- return this.createInputProcessor.column({
18
+ public async visitColumn(context: Model.ColumnContext): Promise<Result[]> {
19
+ return [await this.createInputProcessor.column({
20
20
  ...context,
21
21
  input: this.data[context.column.name] as Input.ColumnValue,
22
- })
22
+ })]
23
23
  }
24
24
 
25
25
  public visitManyHasManyInverse(context: Model.ManyHasManyInverseContext) {
@@ -70,27 +70,27 @@ export class CreateInputVisitor<Result> implements
70
70
  )
71
71
  }
72
72
 
73
- private processRelationInput<Context>(
73
+ private async processRelationInput<Context>(
74
74
  processor: CreateInputProcessor.HasOneRelationProcessor<Context, Result>,
75
75
  context: Context,
76
76
  input: Input.CreateOneRelationInput | undefined,
77
- ): Promise<undefined | Result> {
77
+ ): Promise<Result[]> {
78
78
  if (input === undefined || input === null) {
79
79
  if (processor.nothing) {
80
- return processor.nothing({ ...context, input: undefined })
80
+ return [await processor.nothing({ ...context, input: undefined })]
81
81
  }
82
- return Promise.resolve(undefined)
82
+ return Promise.resolve([])
83
83
  }
84
84
  input = filterObject(input, (k, v) => v !== null && v !== undefined)
85
85
  this.verifyOperations(input)
86
86
  if (isIt<Input.ConnectRelationInput>(input, 'connect')) {
87
- return processor.connect({ ...context, input: input.connect })
87
+ return [await processor.connect({ ...context, input: input.connect })]
88
88
  }
89
89
  if (isIt<Input.CreateRelationInput>(input, 'create')) {
90
- return processor.create({ ...context, input: input.create })
90
+ return [await processor.create({ ...context, input: input.create })]
91
91
  }
92
92
  if (isIt<Input.ConnectOrCreateRelationInput>(input, 'connectOrCreate')) {
93
- return processor.connectOrCreate({ ...context, input: input.connectOrCreate })
93
+ return [await processor.connectOrCreate({ ...context, input: input.connectOrCreate })]
94
94
  }
95
95
  throw new ImplementationException()
96
96
  }
@@ -99,9 +99,9 @@ export class CreateInputVisitor<Result> implements
99
99
  processor: CreateInputProcessor.HasManyRelationProcessor<Context, Result>,
100
100
  context: Context,
101
101
  input: Input.CreateManyRelationInput | undefined,
102
- ): Promise<undefined | Result[]> {
102
+ ): Promise<Result[]> {
103
103
  if (input === undefined || input === null) {
104
- return Promise.resolve(undefined)
104
+ return Promise.resolve([])
105
105
  }
106
106
  const results: Result[] = []
107
107
  let i = 0
@@ -4,8 +4,8 @@ import { UpdateInputProcessor } from './UpdateInputProcessor'
4
4
  import { ImplementationException, UserError } from '../exception'
5
5
 
6
6
  export class UpdateInputVisitor<Result> implements
7
- Model.ColumnVisitor<Promise<Result | Result[] | undefined>>,
8
- Model.RelationByTypeVisitor<Promise<Result | Result[] | undefined>> {
7
+ Model.ColumnVisitor<Promise<Result[]>>,
8
+ Model.RelationByTypeVisitor<Promise<Result[]>> {
9
9
 
10
10
  constructor(
11
11
  private readonly updateInputProcessor: UpdateInputProcessor<Result>,
@@ -13,12 +13,12 @@ export class UpdateInputVisitor<Result> implements
13
13
  private readonly data: Input.UpdateDataInput,
14
14
  ) {}
15
15
 
16
- public visitColumn({ entity, column }: Model.ColumnContext): Promise<Result> {
17
- return this.updateInputProcessor.column({
16
+ public async visitColumn({ entity, column }: Model.ColumnContext): Promise<Result[]> {
17
+ return [await this.updateInputProcessor.column({
18
18
  entity,
19
19
  column,
20
20
  input: this.data[column.name] as Input.ColumnValue,
21
- })
21
+ })]
22
22
  }
23
23
 
24
24
  public visitManyHasManyInverse(context: Model.ManyHasManyInverseContext) {
@@ -69,36 +69,36 @@ export class UpdateInputVisitor<Result> implements
69
69
  )
70
70
  }
71
71
 
72
- private processRelationInput<Context>(
72
+ private async processRelationInput<Context>(
73
73
  processor: UpdateInputProcessor.HasOneRelationInputProcessor<Context, Result>,
74
74
  context: Context,
75
75
  input: Input.UpdateOneRelationInput | undefined,
76
- ): Promise<undefined | Result> {
76
+ ): Promise< Result[]> {
77
77
  if (input === undefined || input === null) {
78
- return Promise.resolve(undefined)
78
+ return Promise.resolve([])
79
79
  }
80
80
  input = filterObject(input, (k, v) => v !== null && v !== undefined)
81
81
  this.verifyOperations(input)
82
82
  if (isIt<Input.ConnectRelationInput>(input, 'connect')) {
83
- return processor.connect({ ...context, input: input.connect })
83
+ return [await processor.connect({ ...context, input: input.connect })]
84
84
  }
85
85
  if (isIt<Input.CreateRelationInput>(input, 'create')) {
86
- return processor.create({ ...context, input: input.create })
86
+ return [await processor.create({ ...context, input: input.create })]
87
87
  }
88
88
  if (isIt<Input.ConnectOrCreateRelationInput>(input, 'connectOrCreate')) {
89
- return processor.connectOrCreate({ ...context, input: input.connectOrCreate })
89
+ return [await processor.connectOrCreate({ ...context, input: input.connectOrCreate })]
90
90
  }
91
91
  if (isIt<Input.DeleteRelationInput>(input, 'delete')) {
92
- return processor.delete({ ...context, input: undefined })
92
+ return [await processor.delete({ ...context, input: undefined })]
93
93
  }
94
94
  if (isIt<Input.DisconnectRelationInput>(input, 'disconnect')) {
95
- return processor.disconnect({ ...context, input: undefined })
95
+ return [await processor.disconnect({ ...context, input: undefined })]
96
96
  }
97
97
  if (isIt<Input.UpdateRelationInput>(input, 'update')) {
98
- return processor.update({ ...context, input: input.update })
98
+ return [await processor.update({ ...context, input: input.update })]
99
99
  }
100
100
  if (isIt<Input.UpsertRelationInput>(input, 'upsert')) {
101
- return processor.upsert({ ...context, input: input.upsert })
101
+ return [await processor.upsert({ ...context, input: input.upsert })]
102
102
  }
103
103
  throw new ImplementationException()
104
104
  }
@@ -107,9 +107,9 @@ export class UpdateInputVisitor<Result> implements
107
107
  processor: UpdateInputProcessor.HasManyRelationInputProcessor<Context, Result>,
108
108
  context: Context,
109
109
  input: Input.UpdateManyRelationInput | undefined,
110
- ): Promise<undefined | Result[]> {
110
+ ): Promise<Result[]> {
111
111
  if (input === undefined || input === null) {
112
- return Promise.resolve(undefined)
112
+ return Promise.resolve([])
113
113
  }
114
114
  const results: Array<Result> = []
115
115
  let i = 0
@@ -1,22 +1,30 @@
1
1
  import { MutationResultList, prependPath } from './Result'
2
2
  import { Model } from '@contember/schema'
3
3
 
4
- export const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }>(
5
- innerProcessor: (context: Context) => Promise<MutationResultList>,
4
+ export const hasManyProcessor = <Context extends { relation: Model.AnyRelation; index: number; alias?: string }, Args>(
5
+ innerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,
6
6
  ) => {
7
- return async (context: Context): Promise<MutationResultList> => {
7
+ return async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {
8
8
  const { relation, index, alias } = context
9
9
  const path = [{ field: relation.name }, { index, alias }]
10
- return prependPath(path, await innerProcessor(context))
10
+ const innerResult = await innerProcessor(context)
11
+ if (typeof innerResult === 'function') {
12
+ return async (it: Args) => prependPath(path, await innerResult(it))
13
+ }
14
+ return prependPath(path, innerResult)
11
15
  }
12
16
  }
13
17
 
14
- export const hasOneProcessor = <Context extends { relation: Model.AnyRelation }>(
15
- innerProcessor: (context: Context) => Promise<MutationResultList>,
18
+ export const hasOneProcessor = <Context extends { relation: Model.AnyRelation }, Args>(
19
+ innerProcessor: (context: Context) => Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)>,
16
20
  ) => {
17
- return async (context: Context): Promise<MutationResultList> => {
21
+ return async (context: Context): Promise<MutationResultList | ((args: Args) => Promise<MutationResultList>)> => {
18
22
  const { relation } = context
19
23
  const path = [{ field: relation.name }]
20
- return prependPath(path, await innerProcessor(context))
24
+ const innerResult = await innerProcessor(context)
25
+ if (typeof innerResult === 'function') {
26
+ return async (it: Args) => prependPath(path, await innerResult(it))
27
+ }
28
+ return prependPath(path, innerResult)
21
29
  }
22
30
  }
@@ -1,8 +1,4 @@
1
1
  import { Input, Model, Value } from '@contember/schema'
2
- import { convertError } from './ErrorUtils'
3
- import { getFulfilledValues, getRejections } from '../utils'
4
- import { DatabaseMetadata, SerializationFailureError } from '@contember/database'
5
- import { logger } from '@contember/logger'
6
2
 
7
3
  export enum MutationResultType {
8
4
  ok = 'ok',
@@ -44,6 +40,7 @@ export type MutationResultList = MutationResult[]
44
40
  type Path = ({ field: string } | { index: number; alias?: string })[]
45
41
 
46
42
  interface MutationResultInterface {
43
+ error: boolean
47
44
  result: MutationResultType
48
45
  paths: Path[]
49
46
  message?: string
@@ -53,6 +50,7 @@ interface MutationResultInterface {
53
50
  export type RowValues = { [fieldName: string]: Value.FieldValue }
54
51
 
55
52
  export class MutationUpdateOk implements MutationResultInterface {
53
+ error = false
56
54
  result = MutationResultType.ok as const
57
55
  type = ModificationType.update as const
58
56
  hints: MutationResultHint[] = []
@@ -68,6 +66,7 @@ export class MutationUpdateOk implements MutationResultInterface {
68
66
  }
69
67
 
70
68
  export class MutationCreateOk implements MutationResultInterface {
69
+ error = false
71
70
  result = MutationResultType.ok as const
72
71
  type = ModificationType.create as const
73
72
  hints: MutationResultHint[] = []
@@ -82,6 +81,7 @@ export class MutationCreateOk implements MutationResultInterface {
82
81
  }
83
82
 
84
83
  export class MutationDeleteOk implements MutationResultInterface {
84
+ error = false
85
85
  result = MutationResultType.ok as const
86
86
  type = ModificationType.delete as const
87
87
  hints: MutationResultHint[] = []
@@ -94,6 +94,7 @@ export class MutationDeleteOk implements MutationResultInterface {
94
94
  }
95
95
 
96
96
  export class MutationJunctionUpdateOk implements MutationResultInterface {
97
+ error = false
97
98
  result = MutationResultType.ok as const
98
99
  type = ModificationType.junctionUpdate as const
99
100
  hints: MutationResultHint[] = []
@@ -116,6 +117,7 @@ export enum NothingToDoReason {
116
117
  }
117
118
 
118
119
  export class MutationNothingToDo implements MutationResultInterface {
120
+ error = false
119
121
  result = MutationResultType.nothingToDo as const
120
122
  hints: MutationResultHint[] = []
121
123
 
@@ -128,6 +130,7 @@ export enum InputErrorKind {
128
130
  }
129
131
 
130
132
  export class MutationInputError implements MutationResultInterface {
133
+ error = true
131
134
  result = MutationResultType.inputError as const
132
135
 
133
136
  constructor(
@@ -139,6 +142,7 @@ export class MutationInputError implements MutationResultInterface {
139
142
  }
140
143
 
141
144
  export class MutationSqlError implements MutationResultInterface {
145
+ error = true
142
146
  result = MutationResultType.sqlError as const
143
147
 
144
148
  constructor(
@@ -155,6 +159,7 @@ export enum ConstraintType {
155
159
  }
156
160
 
157
161
  export class MutationConstraintViolationError implements MutationResultInterface {
162
+ error = true
158
163
  result = MutationResultType.constraintViolationError as const
159
164
 
160
165
  constructor(
@@ -167,6 +172,7 @@ export class MutationConstraintViolationError implements MutationResultInterface
167
172
 
168
173
  // maybe denied by acl
169
174
  export class MutationEntryNotFoundError implements MutationResultInterface {
175
+ error = true
170
176
  result = MutationResultType.notFoundError as const
171
177
  hints: MutationResultHint[] = []
172
178
  message: string
@@ -178,6 +184,7 @@ export class MutationEntryNotFoundError implements MutationResultInterface {
178
184
 
179
185
  // possibly denied by acl
180
186
  export class MutationNoResultError implements MutationResultInterface {
187
+ error = true
181
188
  result = MutationResultType.noResultError as const
182
189
 
183
190
  constructor(
@@ -197,46 +204,3 @@ export const getInsertPrimary = (result: MutationResultList) =>
197
204
  result[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.create
198
205
  ? result[0].primary
199
206
  : undefined
200
-
201
- export const getUpdatePrimary = (result: MutationResultList) =>
202
- result[0] && result[0].result === MutationResultType.ok && result[0].type === ModificationType.update
203
- ? result[0].primary
204
- : undefined
205
-
206
- export const flattenResult = (result: (MutationResultList | MutationResultList[])[]): MutationResultList =>
207
- result
208
- .reduce<(MutationResult | MutationResult[])[]>((acc, it) => [...acc, ...it], [])
209
- .reduce<MutationResultList>((acc, it) => (Array.isArray(it) ? [...acc, ...it] : [...acc, it]), [])
210
-
211
- export type ResultListNotFlatten = MutationResultList | MutationResultList[]
212
-
213
- export const collectResults = async (
214
- schema: Model.Schema,
215
- schemaDatabaseMetadata: DatabaseMetadata,
216
- mainPromise: Promise<ResultListNotFlatten | undefined> | undefined,
217
- otherPromises: (Promise<ResultListNotFlatten | undefined> | undefined)[],
218
- ): Promise<MutationResultList> => {
219
- let index = 0
220
- const allPromises: Promise<{ index: number; value: ResultListNotFlatten }>[] = [mainPromise, ...otherPromises]
221
- .filter((it): it is Promise<ResultListNotFlatten> => !!it)
222
- .map(it =>
223
- it //
224
- .catch(e => [convertError(schema, schemaDatabaseMetadata, e)])
225
- .then(value => ({ value, index: index++ })),
226
- )
227
- const results = await Promise.allSettled(allPromises)
228
- const failures = getRejections(results)
229
- if (failures.length > 0) {
230
- if (failures.length > 1 && !failures.every(it => it instanceof SerializationFailureError)) {
231
- failures.slice(1).map(e => logger.error(e))
232
- }
233
- throw failures[0]
234
- }
235
-
236
- const values = getFulfilledValues(results)
237
- const sortedValues = [values[0], ...values.slice(1).sort((a, b) => a.index - b.index)]
238
-
239
- return flattenResult(
240
- sortedValues.map(it => it.value).filter((it): it is MutationResultList | MutationResultList[] => !!it),
241
- )
242
- }
@@ -1,28 +1,20 @@
1
1
  import { Acl, Input, Model, Value } from '@contember/schema'
2
- import { Client, InsertBuilder as DbInsertBuilder, QueryBuilder, Value as DbValue } from '@contember/database'
2
+ import { InsertBuilder as DbInsertBuilder, QueryBuilder, Value as DbValue } from '@contember/database'
3
3
  import { PathFactory, WhereBuilder } from '../select'
4
4
  import { getColumnName, getColumnType } from '@contember/schema-utils'
5
5
  import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
6
- import { ImplementationException } from '../../exception'
7
6
  import { PredicateFactory } from '../../acl'
8
- import { AbortDataManipulation, DataManipulationBuilder } from '../DataManipulationBuilder'
9
- import { AfterInsertEvent, BeforeInsertEvent, EventManager } from '../EventManager'
7
+ import { AfterInsertEvent, BeforeInsertEvent } from '../EventManager'
10
8
  import { Mapper } from '../Mapper'
11
9
 
12
10
  export interface InsertResult {
13
11
  values: ResolvedColumnValue[]
14
12
  executed: boolean
15
- aborted: boolean
16
13
  primaryValue: Value.PrimaryValue | null
17
14
  }
18
15
 
19
- export class InsertBuilder implements DataManipulationBuilder {
20
- private resolver: (value: Value.PrimaryValue | null) => void = () => {
21
- throw new ImplementationException('InsertBuilder: Resolver called too soon')
22
- }
23
- public readonly insert: Promise<Value.PrimaryValue | null> = new Promise(resolve => (this.resolver = resolve))
24
-
25
- private rowData: Map<string, ColumnValue<AbortDataManipulation | undefined>> = new Map()
16
+ export class InsertBuilder {
17
+ private rowData: Map<string, ColumnValue<undefined>> = new Map()
26
18
  private where: { and: Input.OptionalWhere[] } = { and: [] }
27
19
 
28
20
  constructor(
@@ -35,8 +27,8 @@ export class InsertBuilder implements DataManipulationBuilder {
35
27
 
36
28
  public addFieldValue(
37
29
  fieldName: string,
38
- value: Value.GenericValueLike<Value.AtomicValue<AbortDataManipulation | undefined>>,
39
- ): Promise<Value.AtomicValue<AbortDataManipulation | undefined>> {
30
+ value: Value.GenericValueLike<Value.AtomicValue<undefined>>,
31
+ ): Promise<Value.AtomicValue<undefined>> {
40
32
  const columnName = getColumnName(this.schema, this.entity, fieldName)
41
33
  const columnType = getColumnType(this.schema, this.entity, fieldName)
42
34
  const resolvedValue = resolveGenericValue(value)
@@ -53,17 +45,13 @@ export class InsertBuilder implements DataManipulationBuilder {
53
45
  this.where.and.push(where)
54
46
  }
55
47
 
56
- public async getResolvedData(): Promise<ResolvedColumnValue<AbortDataManipulation>[]> {
48
+ public async getResolvedData(): Promise<ResolvedColumnValue[]> {
57
49
  return resolveRowData([...this.rowData.values()])
58
50
  }
59
51
 
60
52
  public async execute(mapper: Mapper): Promise<InsertResult> {
61
53
  try {
62
54
  const resolvedData = await this.getResolvedData()
63
- if (resolvedData.find(it => it.resolvedValue === AbortDataManipulation)) {
64
- this.resolver(null)
65
- return { aborted: true, executed: false, primaryValue: null, values: [] }
66
- }
67
55
 
68
56
  const insertData = resolvedData.reduce<QueryBuilder.ColumnExpressionMap>(
69
57
  (result, item) => ({ ...result, [item.columnName]: expr => expr.select(['root_', item.columnName]) }),
@@ -95,10 +83,8 @@ export class InsertBuilder implements DataManipulationBuilder {
95
83
  beforeInsertEvent.afterEvent = afterInsertEvent
96
84
  await mapper.eventManager.fire(afterInsertEvent)
97
85
 
98
- this.resolver(result)
99
- return { values: resolvedData as ResolvedColumnValue[], executed: true, primaryValue: result, aborted: false }
86
+ return { values: resolvedData as ResolvedColumnValue[], executed: true, primaryValue: result }
100
87
  } catch (e) {
101
- this.resolver(null)
102
88
  throw e
103
89
  }
104
90
  }
@@ -1,20 +1,11 @@
1
- import {
2
- collectResults,
3
- MutationCreateOk,
4
- MutationNoResultError,
5
- MutationNothingToDo,
6
- MutationResultList,
7
- NothingToDoReason,
8
- RowValues,
9
- } from '../Result'
1
+ import { MutationCreateOk, MutationNoResultError, MutationNothingToDo, MutationResultList, NothingToDoReason } from '../Result'
10
2
  import { CreateInputVisitor } from '../../inputProcessing'
11
- import { SqlCreateInputProcessor } from './SqlCreateInputProcessor'
3
+ import { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'
12
4
  import { Mapper } from '../Mapper'
13
- import { Input, Model, Value } from '@contember/schema'
14
- import { acceptEveryFieldVisitor, Providers } from '@contember/schema-utils'
5
+ import { Input, Model } from '@contember/schema'
6
+ import { acceptFieldVisitor, Providers } from '@contember/schema-utils'
15
7
  import { InsertBuilderFactory } from './InsertBuilderFactory'
16
8
  import { InsertBuilder } from './InsertBuilder'
17
- import { tryMutation } from '../ErrorUtils'
18
9
  import { rowDataToFieldValues } from '../ColumnValue'
19
10
  import { DatabaseMetadata } from '@contember/database'
20
11
 
@@ -34,45 +25,67 @@ export class Inserter {
34
25
  builderCb: (builder: InsertBuilder) => void,
35
26
  ): Promise<MutationResultList> {
36
27
  const insertBuilder = this.insertBuilderFactory.create(entity)
37
- // eslint-disable-next-line promise/catch-or-return
38
- insertBuilder.insert.then(id => id && insertIdCallback(String(id)))
39
28
 
40
29
  insertBuilder.addPredicates(Object.keys(data))
41
- const visitor = new CreateInputVisitor<MutationResultList>(
30
+
31
+ const visitor = new CreateInputVisitor<SqlCreateInputProcessorResult>(
42
32
  new SqlCreateInputProcessor(insertBuilder, mapper, this.providers),
43
33
  this.schema,
44
34
  data,
45
35
  )
46
- const promises = acceptEveryFieldVisitor<Promise<MutationResultList | MutationResultList[] | undefined>>(
47
- this.schema,
48
- entity,
49
- visitor,
50
- )
51
- builderCb(insertBuilder)
52
36
 
53
- const okResultFactory = (primary: Value.PrimaryValue, values: RowValues) =>
54
- new MutationCreateOk([], entity, primary, data, values)
55
- const insertPromise = this.executeInsert(insertBuilder, mapper, okResultFactory)
37
+ const resultList: MutationResultList = []
38
+ const postInserts: Exclude<SqlCreateInputProcessorResult, MutationResultList>[] = []
56
39
 
57
- return await collectResults(this.schema, this.schemaDatabaseMetadata, insertPromise, Object.values(promises))
58
- }
40
+ const keys = new Set([
41
+ entity.primary,
42
+ ...Object.keys(data),
43
+ ...Object.keys(entity.fields),
44
+ ])
59
45
 
60
- private async executeInsert(
61
- insertBuilder: InsertBuilder,
62
- mapper: Mapper,
63
- okResultFactory: (primary: Value.PrimaryValue, values: RowValues) => MutationCreateOk,
64
- ): Promise<MutationResultList> {
65
- return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
66
- const result = await insertBuilder.execute(mapper)
67
- if (result.aborted) {
68
- return [new MutationNothingToDo([], NothingToDoReason.aborted)]
46
+ for (const key of keys.values()) {
47
+ const resultSet = await acceptFieldVisitor(
48
+ this.schema,
49
+ entity,
50
+ key,
51
+ visitor,
52
+ )
53
+ for (const result of resultSet) {
54
+ if (typeof result === 'function') {
55
+ postInserts.push(result)
56
+ } else {
57
+ for (const resultItem of await result) {
58
+ resultList.push(resultItem)
59
+ if (resultItem.error) {
60
+ return resultList
61
+ }
62
+ }
63
+ }
69
64
  }
65
+ }
66
+
67
+ builderCb(insertBuilder)
68
+ const insertResult = await insertBuilder.execute(mapper)
70
69
 
71
- if (result.primaryValue === null) {
72
- return [new MutationNoResultError([])]
70
+ if (insertResult.primaryValue === null) {
71
+ return [new MutationNoResultError([]), ...resultList]
72
+ }
73
+ insertIdCallback(String(insertResult.primaryValue))
74
+
75
+ const okResult = new MutationCreateOk([], entity, insertResult.primaryValue, data, rowDataToFieldValues(insertResult.values))
76
+ resultList.unshift(okResult)
77
+
78
+ for (const postInsert of postInserts) {
79
+ const postInsertResult = await postInsert({ primary: insertResult.primaryValue })
80
+ for (const result of postInsertResult) {
81
+ resultList.push(result)
82
+ if (result.error) {
83
+ return resultList
84
+ }
73
85
  }
74
- return [okResultFactory(result.primaryValue, rowDataToFieldValues(result.values))]
75
- })
86
+ }
87
+
88
+ return resultList
76
89
  }
77
90
  }
78
91