@contember/engine-content-api 2.0.0-alpha.19 → 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 (330) 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/select/handlers/FieldsVisitor.cjs +3 -0
  56. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  57. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +3 -0
  58. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  59. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
  60. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  61. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
  62. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  63. package/dist/development/src/mapper/update/UpdateBuilder.cjs +2 -14
  64. package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  65. package/dist/development/src/mapper/update/UpdateBuilder.js +2 -14
  66. package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
  67. package/dist/development/src/mapper/update/Updater.cjs +45 -17
  68. package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
  69. package/dist/development/src/mapper/update/Updater.js +47 -19
  70. package/dist/development/src/mapper/update/Updater.js.map +1 -1
  71. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +89 -0
  72. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
  73. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +89 -0
  74. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
  75. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +89 -0
  76. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
  77. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +89 -0
  78. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
  79. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +86 -0
  80. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
  81. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +86 -0
  82. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
  83. package/dist/development/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.cjs +83 -66
  84. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
  85. package/dist/development/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.js +83 -66
  86. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
  87. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +187 -0
  88. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
  89. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +187 -0
  90. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
  91. package/dist/development/src/resolvers/MutationResolver.cjs +1 -1
  92. package/dist/development/src/resolvers/MutationResolver.js +1 -1
  93. package/dist/production/index.cjs +1 -1
  94. package/dist/production/index.js +1 -1
  95. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs +1 -1
  96. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  97. package/dist/production/src/input-validation/preValidation/InputPreValidator.js +1 -1
  98. package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  99. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +10 -10
  100. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  101. package/dist/production/src/inputProcessing/CreateInputVisitor.js +10 -10
  102. package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  103. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +13 -13
  104. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  105. package/dist/production/src/inputProcessing/UpdateInputVisitor.js +13 -13
  106. package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  107. package/dist/production/src/mapper/MutationProcessorHelper.cjs +10 -2
  108. package/dist/production/src/mapper/MutationProcessorHelper.cjs.map +1 -1
  109. package/dist/production/src/mapper/MutationProcessorHelper.js +10 -2
  110. package/dist/production/src/mapper/MutationProcessorHelper.js.map +1 -1
  111. package/dist/production/src/mapper/Result.cjs +10 -27
  112. package/dist/production/src/mapper/Result.cjs.map +1 -1
  113. package/dist/production/src/mapper/Result.js +10 -27
  114. package/dist/production/src/mapper/Result.js.map +1 -1
  115. package/dist/production/src/mapper/insert/InsertBuilder.cjs +1 -13
  116. package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  117. package/dist/production/src/mapper/insert/InsertBuilder.js +1 -13
  118. package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
  119. package/dist/production/src/mapper/insert/Inserter.cjs +43 -21
  120. package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
  121. package/dist/production/src/mapper/insert/Inserter.js +45 -23
  122. package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
  123. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +22 -76
  124. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  125. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +22 -76
  126. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  127. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +45 -0
  128. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -0
  129. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +45 -0
  130. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -0
  131. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +42 -0
  132. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -0
  133. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +42 -0
  134. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -0
  135. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +37 -0
  136. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -0
  137. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +37 -0
  138. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -0
  139. package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.cjs +25 -32
  140. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -0
  141. package/dist/production/src/mapper/{relations → insert/relations}/OneHasOneInverseCreateInputProcessor.js +25 -32
  142. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -0
  143. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +67 -0
  144. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -0
  145. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +67 -0
  146. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -0
  147. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +3 -0
  148. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  149. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +3 -0
  150. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  151. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs +36 -36
  152. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  153. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js +36 -36
  154. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  155. package/dist/production/src/mapper/update/UpdateBuilder.cjs +2 -14
  156. package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  157. package/dist/production/src/mapper/update/UpdateBuilder.js +2 -14
  158. package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
  159. package/dist/production/src/mapper/update/Updater.cjs +45 -17
  160. package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
  161. package/dist/production/src/mapper/update/Updater.js +47 -19
  162. package/dist/production/src/mapper/update/Updater.js.map +1 -1
  163. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +89 -0
  164. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -0
  165. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +89 -0
  166. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -0
  167. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +89 -0
  168. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -0
  169. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +89 -0
  170. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -0
  171. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +86 -0
  172. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -0
  173. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +86 -0
  174. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -0
  175. package/dist/production/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.cjs +83 -66
  176. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -0
  177. package/dist/production/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.js +83 -66
  178. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -0
  179. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +187 -0
  180. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -0
  181. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +187 -0
  182. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -0
  183. package/dist/production/src/resolvers/MutationResolver.cjs +1 -1
  184. package/dist/production/src/resolvers/MutationResolver.js +1 -1
  185. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  186. package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
  187. package/dist/types/inputProcessing/CreateInputVisitor.d.ts +8 -8
  188. package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  189. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +8 -8
  190. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  191. package/dist/types/mapper/MutationProcessorHelper.d.ts +2 -2
  192. package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
  193. package/dist/types/mapper/Result.d.ts +11 -5
  194. package/dist/types/mapper/Result.d.ts.map +1 -1
  195. package/dist/types/mapper/insert/InsertBuilder.d.ts +3 -7
  196. package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
  197. package/dist/types/mapper/insert/Inserter.d.ts +0 -1
  198. package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
  199. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts +11 -8
  200. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  201. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +24 -0
  202. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -0
  203. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +23 -0
  204. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -0
  205. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +26 -0
  206. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -0
  207. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +29 -0
  208. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -0
  209. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +24 -0
  210. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -0
  211. package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  212. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +10 -7
  213. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  214. package/dist/types/mapper/update/UpdateBuilder.d.ts +2 -6
  215. package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
  216. package/dist/types/mapper/update/Updater.d.ts +0 -1
  217. package/dist/types/mapper/update/Updater.d.ts.map +1 -1
  218. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +46 -0
  219. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -0
  220. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +40 -0
  221. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -0
  222. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +46 -0
  223. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -0
  224. package/dist/types/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.d.ts +17 -13
  225. package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -0
  226. package/dist/types/mapper/{relations → update/relations}/OneHasOneOwningUpdateInputProcessor.d.ts +19 -16
  227. package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -0
  228. package/dist/types/tsconfig.tsbuildinfo +1 -1
  229. package/package.json +11 -11
  230. package/src/input-validation/preValidation/InputPreValidator.ts +3 -5
  231. package/src/inputProcessing/CreateInputVisitor.ts +14 -14
  232. package/src/inputProcessing/UpdateInputVisitor.ts +17 -17
  233. package/src/mapper/MutationProcessorHelper.ts +16 -8
  234. package/src/mapper/Result.ts +11 -47
  235. package/src/mapper/insert/InsertBuilder.ts +8 -22
  236. package/src/mapper/insert/Inserter.ts +53 -40
  237. package/src/mapper/insert/SqlCreateInputProcessor.ts +35 -88
  238. package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +59 -0
  239. package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +57 -0
  240. package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +50 -0
  241. package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +91 -0
  242. package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +87 -0
  243. package/src/mapper/select/handlers/FieldsVisitor.ts +3 -0
  244. package/src/mapper/update/SqlUpdateInputProcessor.ts +48 -46
  245. package/src/mapper/update/UpdateBuilder.ts +9 -23
  246. package/src/mapper/update/Updater.ts +53 -34
  247. package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +116 -0
  248. package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +125 -0
  249. package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +111 -0
  250. package/src/mapper/{relations → update/relations}/OneHasOneInverseUpdateInputProcessor.ts +93 -73
  251. package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +243 -0
  252. package/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.ts +8 -8
  253. package/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.ts +4 -4
  254. package/dist/development/src/mapper/DataManipulationBuilder.cjs +0 -5
  255. package/dist/development/src/mapper/DataManipulationBuilder.cjs.map +0 -1
  256. package/dist/development/src/mapper/DataManipulationBuilder.js +0 -5
  257. package/dist/development/src/mapper/DataManipulationBuilder.js.map +0 -1
  258. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
  259. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
  260. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
  261. package/dist/development/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
  262. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
  263. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
  264. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
  265. package/dist/development/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
  266. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
  267. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
  268. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
  269. package/dist/development/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
  270. package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
  271. package/dist/development/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
  272. package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
  273. package/dist/development/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
  274. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
  275. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
  276. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
  277. package/dist/development/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
  278. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
  279. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
  280. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
  281. package/dist/development/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
  282. package/dist/production/src/mapper/DataManipulationBuilder.cjs +0 -5
  283. package/dist/production/src/mapper/DataManipulationBuilder.cjs.map +0 -1
  284. package/dist/production/src/mapper/DataManipulationBuilder.js +0 -5
  285. package/dist/production/src/mapper/DataManipulationBuilder.js.map +0 -1
  286. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs +0 -75
  287. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.cjs.map +0 -1
  288. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js +0 -75
  289. package/dist/production/src/mapper/relations/ManyHasManyInputProcessor.js.map +0 -1
  290. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs +0 -114
  291. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.cjs.map +0 -1
  292. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js +0 -114
  293. package/dist/production/src/mapper/relations/ManyHasOneInputProcessor.js.map +0 -1
  294. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs +0 -72
  295. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.cjs.map +0 -1
  296. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js +0 -72
  297. package/dist/production/src/mapper/relations/OneHasManyInputProcessor.js.map +0 -1
  298. package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.cjs.map +0 -1
  299. package/dist/production/src/mapper/relations/OneHasOneInverseCreateInputProcessor.js.map +0 -1
  300. package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +0 -1
  301. package/dist/production/src/mapper/relations/OneHasOneInverseUpdateInputProcessor.js.map +0 -1
  302. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs +0 -71
  303. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.cjs.map +0 -1
  304. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js +0 -71
  305. package/dist/production/src/mapper/relations/OneHasOneOwningCreateInputProcessor.js.map +0 -1
  306. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs +0 -200
  307. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +0 -1
  308. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js +0 -200
  309. package/dist/production/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.js.map +0 -1
  310. package/dist/types/mapper/DataManipulationBuilder.d.ts +0 -7
  311. package/dist/types/mapper/DataManipulationBuilder.d.ts.map +0 -1
  312. package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts +0 -32
  313. package/dist/types/mapper/relations/ManyHasManyInputProcessor.d.ts.map +0 -1
  314. package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts +0 -32
  315. package/dist/types/mapper/relations/ManyHasOneInputProcessor.d.ts.map +0 -1
  316. package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts +0 -29
  317. package/dist/types/mapper/relations/OneHasManyInputProcessor.d.ts.map +0 -1
  318. package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts +0 -21
  319. package/dist/types/mapper/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +0 -1
  320. package/dist/types/mapper/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +0 -1
  321. package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts +0 -21
  322. package/dist/types/mapper/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +0 -1
  323. package/dist/types/mapper/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +0 -1
  324. package/src/mapper/DataManipulationBuilder.ts +0 -12
  325. package/src/mapper/relations/ManyHasManyInputProcessor.ts +0 -108
  326. package/src/mapper/relations/ManyHasOneInputProcessor.ts +0 -158
  327. package/src/mapper/relations/OneHasManyInputProcessor.ts +0 -101
  328. package/src/mapper/relations/OneHasOneInverseCreateInputProcessor.ts +0 -99
  329. package/src/mapper/relations/OneHasOneOwningCreateInputProcessor.ts +0 -92
  330. package/src/mapper/relations/OneHasOneOwningUpdateInputProcessor.ts +0 -253
@@ -2,20 +2,22 @@ import { Input, Model, Value } from '@contember/schema'
2
2
  import { Mapper } from '../Mapper'
3
3
  import { UpdateBuilder } from './UpdateBuilder'
4
4
  import { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'
5
- import { OneHasOneInverseUpdateInputProcessor } from '../relations/OneHasOneInverseUpdateInputProcessor'
6
- import { OneHasOneOwningUpdateInputProcessor } from '../relations/OneHasOneOwningUpdateInputProcessor'
7
- import { OneHasManyInputProcessor } from '../relations/OneHasManyInputProcessor'
8
- import { ManyHasOneInputProcessor } from '../relations/ManyHasOneInputProcessor'
9
- import { ManyHasManyInputProcessor } from '../relations/ManyHasManyInputProcessor'
5
+ import { OneHasOneInverseUpdateInputProcessor } from './relations/OneHasOneInverseUpdateInputProcessor'
6
+ import { OneHasOneOwningUpdateInputProcessor } from './relations/OneHasOneOwningUpdateInputProcessor'
7
+ import { OneHasManyUpdateInputProcessor } from './relations/OneHasManyUpdateInputProcessor'
8
+ import { ManyHasManyUpdateInputProcessor } from './relations/ManyHasManyUpdateInputProcessor'
10
9
  import { UpdateInputProcessor } from '../../inputProcessing'
11
10
  import { MutationResultList } from '../Result'
11
+ import { ManyHasOneUpdateInputProcessor } from './relations/ManyHasOneUpdateInputProcessor'
12
12
 
13
- export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationResultList> {
13
+ export type SqlUpdateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue}) => Promise<MutationResultList>)
14
+
15
+ export class SqlUpdateInputProcessor implements UpdateInputProcessor<SqlUpdateInputProcessorResult> {
14
16
  private oneHasOneInverseUpdateInputProcessor: OneHasOneInverseUpdateInputProcessor
15
17
  private oneHasOneOwningUpdateInputProcessor: OneHasOneOwningUpdateInputProcessor
16
- private oneHasManyUpdateInputProcessor: OneHasManyInputProcessor
17
- private manyHasOneUpdateInputProcessor: ManyHasOneInputProcessor
18
- private manyHasManyUpdateInputProcessor: ManyHasManyInputProcessor
18
+ private oneHasManyUpdateInputProcessor: OneHasManyUpdateInputProcessor
19
+ private manyHasOneUpdateInputProcessor: ManyHasOneUpdateInputProcessor
20
+ private manyHasManyUpdateInputProcessor: ManyHasManyUpdateInputProcessor
19
21
 
20
22
  constructor(
21
23
  private readonly primaryValue: Input.PrimaryValue,
@@ -25,9 +27,9 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationRes
25
27
  ) {
26
28
  this.oneHasOneInverseUpdateInputProcessor = new OneHasOneInverseUpdateInputProcessor(this.primaryValue, this.mapper)
27
29
  this.oneHasOneOwningUpdateInputProcessor = new OneHasOneOwningUpdateInputProcessor(this.primaryValue, this.mapper, this.updateBuilder)
28
- this.oneHasManyUpdateInputProcessor = new OneHasManyInputProcessor(this.mapper)
29
- this.manyHasOneUpdateInputProcessor = new ManyHasOneInputProcessor(this.mapper)
30
- this.manyHasManyUpdateInputProcessor = new ManyHasManyInputProcessor(this.mapper)
30
+ this.oneHasManyUpdateInputProcessor = new OneHasManyUpdateInputProcessor(this.mapper)
31
+ this.manyHasOneUpdateInputProcessor = new ManyHasOneUpdateInputProcessor(this.mapper, this.updateBuilder, this.primaryValue)
32
+ this.manyHasManyUpdateInputProcessor = new ManyHasManyUpdateInputProcessor(this.mapper)
31
33
  }
32
34
 
33
35
  public column({ entity, column }: Model.ColumnContext) {
@@ -37,47 +39,47 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationRes
37
39
  return Promise.resolve([])
38
40
  }
39
41
 
40
- manyHasManyInverse: UpdateInputProcessor<MutationResultList>['manyHasManyInverse'] = {
41
- connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx, this.primaryValue)),
42
- create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx, this.primaryValue)),
43
- connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx, this.primaryValue)),
44
- update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx, this.primaryValue)),
45
- upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx, this.primaryValue)),
46
- delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx, this.primaryValue)),
47
- disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx, this.primaryValue)),
42
+ manyHasManyInverse: UpdateInputProcessor<SqlUpdateInputProcessorResult>['manyHasManyInverse'] = {
43
+ connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx)),
44
+ create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx)),
45
+ connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx)),
46
+ update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx)),
47
+ upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx)),
48
+ delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx)),
49
+ disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx)),
48
50
  }
49
51
 
50
- manyHasManyOwning: UpdateInputProcessor<MutationResultList>['manyHasManyOwning'] = {
51
- connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx, this.primaryValue)),
52
- create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx, this.primaryValue)),
53
- connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx, this.primaryValue)),
54
- update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx, this.primaryValue)),
55
- upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx, this.primaryValue)),
56
- delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx, this.primaryValue)),
57
- disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx, this.primaryValue)),
52
+ manyHasManyOwning: UpdateInputProcessor<SqlUpdateInputProcessorResult>['manyHasManyOwning'] = {
53
+ connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx)),
54
+ create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx)),
55
+ connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx)),
56
+ update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx)),
57
+ upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx)),
58
+ delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx)),
59
+ disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx)),
58
60
  }
59
61
 
60
- manyHasOne: UpdateInputProcessor<MutationResultList>['manyHasOne'] = {
61
- connect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connect(ctx, this.updateBuilder)),
62
- create: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.create(ctx, this.updateBuilder)),
63
- connectOrCreate: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connectOrCreate(ctx, this.updateBuilder)),
64
- update: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.update(ctx, this.primaryValue)),
65
- upsert: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.upsert(ctx, this.updateBuilder, this.primaryValue)),
66
- delete: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.delete(ctx, this.updateBuilder, this.primaryValue)),
67
- disconnect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.disconnect(ctx, this.updateBuilder)),
62
+ manyHasOne: UpdateInputProcessor<SqlUpdateInputProcessorResult>['manyHasOne'] = {
63
+ connect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connect(ctx)),
64
+ create: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.create(ctx)),
65
+ connectOrCreate: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connectOrCreate(ctx)),
66
+ update: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.update(ctx)),
67
+ upsert: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.upsert(ctx)),
68
+ delete: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.delete(ctx)),
69
+ disconnect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.disconnect(ctx)),
68
70
  }
69
71
 
70
- oneHasMany: UpdateInputProcessor<MutationResultList>['oneHasMany'] = {
71
- connect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connect(ctx, this.primaryValue)),
72
- create: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.create(ctx, this.primaryValue)),
73
- connectOrCreate: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connectOrCreate(ctx, this.primaryValue)),
74
- update: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.update(ctx, this.primaryValue)),
75
- upsert: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.upsert(ctx, this.primaryValue)),
76
- delete: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.delete(ctx, this.primaryValue)),
77
- disconnect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.disconnect(ctx, this.primaryValue)),
72
+ oneHasMany: UpdateInputProcessor<SqlUpdateInputProcessorResult>['oneHasMany'] = {
73
+ connect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connect(ctx)),
74
+ create: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.create(ctx)),
75
+ connectOrCreate: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connectOrCreate(ctx)),
76
+ update: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.update(ctx)),
77
+ upsert: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.upsert(ctx)),
78
+ delete: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.delete(ctx)),
79
+ disconnect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.disconnect(ctx)),
78
80
  }
79
81
 
80
- oneHasOneInverse: UpdateInputProcessor<MutationResultList>['oneHasOneInverse'] = {
82
+ oneHasOneInverse: UpdateInputProcessor<SqlUpdateInputProcessorResult>['oneHasOneInverse'] = {
81
83
  connect: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.connect(ctx)),
82
84
  create: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.create(ctx)),
83
85
  connectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.connectOrCreate(ctx)),
@@ -87,7 +89,7 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationRes
87
89
  disconnect: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.disconnect(ctx)),
88
90
  }
89
91
 
90
- oneHasOneOwning: UpdateInputProcessor<MutationResultList>['oneHasOneOwning'] = {
92
+ oneHasOneOwning: UpdateInputProcessor<SqlUpdateInputProcessorResult>['oneHasOneOwning'] = {
91
93
  connect: hasOneProcessor(ctx => this.oneHasOneOwningUpdateInputProcessor.connect(ctx)),
92
94
  create: hasOneProcessor(ctx => this.oneHasOneOwningUpdateInputProcessor.create(ctx)),
93
95
  connectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningUpdateInputProcessor.connectOrCreate(ctx)),
@@ -1,28 +1,21 @@
1
1
  import { tuple } from '../../utils'
2
2
  import { Acl, Input, Model, Value } from '@contember/schema'
3
3
  import { acceptEveryFieldVisitor, getColumnName, getColumnType } from '@contember/schema-utils'
4
- import { Client, Operator, QueryBuilder, UpdateBuilder as DbUpdateBuilder, Value as DbValue } from '@contember/database'
4
+ import { Operator, QueryBuilder, UpdateBuilder as DbUpdateBuilder, Value as DbValue } from '@contember/database'
5
5
  import { PathFactory, WhereBuilder } from '../select'
6
6
  import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
7
7
  import { PredicateFactory } from '../../acl'
8
- import { AbortDataManipulation, DataManipulationBuilder } from '../DataManipulationBuilder'
9
- import { AfterUpdateEvent, BeforeUpdateEvent, EventManager } from '../EventManager'
8
+ import { AfterUpdateEvent, BeforeUpdateEvent } from '../EventManager'
10
9
  import { Mapper } from '../Mapper'
11
10
 
12
11
  export interface UpdateResult {
13
12
  values: ResolvedColumnValue[]
14
13
  executed: boolean
15
- aborted: boolean
16
14
  affectedRows: number | null
17
15
  }
18
16
 
19
- export class UpdateBuilder implements DataManipulationBuilder {
20
- private resolver: (value: number | null) => void = () => {
21
- throw new Error('UpdateBuilder: Resolver called too soon')
22
- }
23
- public readonly update: Promise<number | null> = new Promise(resolve => (this.resolver = resolve))
24
-
25
- private rowData: Map<string, ColumnValue<AbortDataManipulation>> = new Map()
17
+ export class UpdateBuilder {
18
+ private rowData: Map<string, ColumnValue> = new Map()
26
19
 
27
20
  private newWhere: { and: Input.OptionalWhere[] } = { and: [] }
28
21
  private oldWhere: { and: Input.OptionalWhere[] } = { and: [] }
@@ -38,8 +31,8 @@ export class UpdateBuilder implements DataManipulationBuilder {
38
31
 
39
32
  public addFieldValue(
40
33
  fieldName: string,
41
- value: Value.GenericValueLike<Value.AtomicValue<AbortDataManipulation | undefined>>,
42
- ): Promise<Value.AtomicValue<AbortDataManipulation | undefined>> {
34
+ value: Value.GenericValueLike<Value.AtomicValue<undefined>>,
35
+ ): Promise<Value.AtomicValue<undefined>> {
43
36
  const columnName = getColumnName(this.schema, this.entity, fieldName)
44
37
  const columnType = getColumnType(this.schema, this.entity, fieldName)
45
38
  const resolvedValue = resolveGenericValue(value)
@@ -63,14 +56,9 @@ export class UpdateBuilder implements DataManipulationBuilder {
63
56
 
64
57
  public async execute(mapper: Mapper): Promise<UpdateResult> {
65
58
  try {
66
- const resolvedData = await resolveRowData<AbortDataManipulation>([...this.rowData.values()])
59
+ const resolvedData = await resolveRowData([...this.rowData.values()])
67
60
  if (Object.keys(resolvedData).length === 0) {
68
- this.resolver(null)
69
- return { values: [], affectedRows: null, executed: false, aborted: false }
70
- }
71
- if (resolvedData.find(it => it.resolvedValue === AbortDataManipulation)) {
72
- this.resolver(null)
73
- return { values: [], affectedRows: null, executed: false, aborted: true }
61
+ return { values: [], affectedRows: null, executed: false }
74
62
  }
75
63
  const oldColSuffix = '_old__'
76
64
 
@@ -134,7 +122,6 @@ export class UpdateBuilder implements DataManipulationBuilder {
134
122
  await mapper.eventManager.fire(beforeEvent)
135
123
 
136
124
  const result = await qb.execute(mapper.db)
137
- this.resolver(result.length)
138
125
 
139
126
  if (result.length === 1) {
140
127
  const eventData = (resolvedData as ResolvedColumnValue[]).map(it => ({
@@ -146,9 +133,8 @@ export class UpdateBuilder implements DataManipulationBuilder {
146
133
  await mapper.eventManager.fire(afterUpdateEvent)
147
134
  }
148
135
 
149
- return { values: resolvedData as ResolvedColumnValue[], affectedRows: result.length, executed: true, aborted: false }
136
+ return { values: resolvedData as ResolvedColumnValue[], affectedRows: result.length, executed: true }
150
137
  } catch (e) {
151
- this.resolver(null)
152
138
  throw e
153
139
  }
154
140
  }
@@ -1,20 +1,11 @@
1
- import { SqlUpdateInputProcessor } from './SqlUpdateInputProcessor'
1
+ import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'
2
2
  import { UpdateInputVisitor } from '../../inputProcessing'
3
3
  import { Input, Model } from '@contember/schema'
4
4
  import { PredicateFactory } from '../../acl'
5
5
  import { UpdateBuilderFactory } from './UpdateBuilderFactory'
6
6
  import { Mapper } from '../Mapper'
7
- import { acceptEveryFieldVisitor } from '@contember/schema-utils'
8
- import {
9
- collectResults,
10
- MutationNoResultError,
11
- MutationNothingToDo,
12
- MutationResultList,
13
- MutationUpdateOk,
14
- NothingToDoReason,
15
- ResultListNotFlatten,
16
- RowValues,
17
- } from '../Result'
7
+ import { acceptFieldVisitor } from '@contember/schema-utils'
8
+ import { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason, RowValues } from '../Result'
18
9
  import { UpdateBuilder } from './UpdateBuilder'
19
10
  import { rowDataToFieldValues } from '../ColumnValue'
20
11
  import { DatabaseMetadata } from '@contember/database'
@@ -42,18 +33,57 @@ export class Updater {
42
33
  updateBuilder.addOldWhere(filter)
43
34
  }
44
35
 
45
- const updateVisitor = new SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper)
46
- const visitor = new UpdateInputVisitor<MutationResultList>(updateVisitor, this.schema, data)
47
- const promises = acceptEveryFieldVisitor<Promise<ResultListNotFlatten | undefined>>(this.schema, entity, visitor)
36
+ const visitor = new UpdateInputVisitor<SqlUpdateInputProcessorResult>(
37
+ new SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),
38
+ this.schema,
39
+ data,
40
+ )
41
+ const resultList: MutationResultList = []
42
+ const postUpdates: Exclude<SqlUpdateInputProcessorResult, MutationResultList>[] = []
48
43
 
49
- const okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, data, values)
50
- const mutationResultPromise = Updater.executeUpdate(updateBuilder, mapper, okResultFactory)
51
- const otherPromises = Object.values(promises)
52
- if (otherPromises.length === 0) {
53
- return await mutationResultPromise
44
+ for (const key of Object.keys(data)) {
45
+ const resultSet = await acceptFieldVisitor(
46
+ this.schema,
47
+ entity,
48
+ key,
49
+ visitor,
50
+ )
51
+ for (const result of resultSet) {
52
+ if (typeof result === 'function') {
53
+ postUpdates.push(result)
54
+ } else {
55
+ for (const resultItem of await result) {
56
+ resultList.push(resultItem)
57
+ if (resultItem.error) {
58
+ return resultList
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+
65
+ const result = await updateBuilder.execute(mapper)
66
+
67
+ if (!result.executed) {
68
+ resultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData))
69
+ } else if (result.affectedRows !== 1) {
70
+ return [new MutationNoResultError([])]
54
71
  } else {
55
- return await collectResults(this.schema, this.schemaDatabaseMetadata, mutationResultPromise, otherPromises)
72
+ const okResult = new MutationUpdateOk([], entity, primaryValue, data, rowDataToFieldValues(result.values))
73
+ resultList.unshift(okResult)
74
+ }
75
+
76
+ for (const postUpdate of postUpdates) {
77
+ const postInsertResult = await postUpdate({ primary: primaryValue })
78
+ for (const result of postInsertResult) {
79
+ resultList.push(result)
80
+ if (result.error) {
81
+ return resultList
82
+ }
83
+ }
56
84
  }
85
+
86
+ return resultList
57
87
  }
58
88
 
59
89
  public async updateCb(
@@ -64,27 +94,16 @@ export class Updater {
64
94
  ): Promise<MutationResultList> {
65
95
  const updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)
66
96
 
67
- const okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, {}, values)
68
97
  builderCb(updateBuilder)
69
98
 
70
- return Updater.executeUpdate(updateBuilder, mapper, okResultFactory)
71
- }
72
-
73
- private static async executeUpdate(
74
- updateBuilder: UpdateBuilder,
75
- mapper: Mapper,
76
- okResultFactory: (values: RowValues) => MutationUpdateOk,
77
- ): Promise<MutationResultList> {
78
99
  const result = await updateBuilder.execute(mapper)
79
- if (result.aborted) {
80
- return [new MutationNothingToDo([], NothingToDoReason.aborted)]
81
- }
100
+
82
101
  if (!result.executed) {
83
102
  return [new MutationNothingToDo([], NothingToDoReason.noData)]
84
103
  }
85
104
  if (result.affectedRows !== 1) {
86
105
  return [new MutationNoResultError([])]
87
106
  }
88
- return [okResultFactory(rowDataToFieldValues(result.values))]
107
+ return [new MutationUpdateOk([], entity, primaryValue, {}, rowDataToFieldValues(result.values))]
89
108
  }
90
109
  }
@@ -0,0 +1,116 @@
1
+ import { UpdateInputProcessor } from '../../../inputProcessing'
2
+ import { Input, Model } from '@contember/schema'
3
+ import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
4
+ import { Mapper } from '../../Mapper'
5
+ import { SqlUpdateInputProcessorResult } from '../../update'
6
+
7
+ type Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext
8
+
9
+ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult> {
10
+ constructor(
11
+ private readonly mapper: Mapper,
12
+ ) {
13
+ }
14
+
15
+ public async connect(
16
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
17
+ ) {
18
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
19
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
20
+ if (!otherPrimary) {
21
+ return [new MutationEntryNotFoundError([], input)]
22
+ }
23
+ return await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
24
+ }
25
+ }
26
+
27
+ public async create(
28
+ { entity, targetEntity, relation, input }: Context & { input: Input.CreateDataInput },
29
+ ) {
30
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
31
+ const insertResult = await this.mapper.insert(targetEntity, input)
32
+ const insertPrimary = getInsertPrimary(insertResult)
33
+ if (!insertPrimary) {
34
+ return insertResult
35
+ }
36
+ return [
37
+ ...insertResult,
38
+ ...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),
39
+ ]
40
+ }
41
+ }
42
+
43
+ public async connectOrCreate(
44
+ context: Context & { input: Input.ConnectOrCreateInput },
45
+ ) {
46
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
47
+ let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
48
+ if (!otherPrimary) {
49
+ const insertResult = await this.mapper.insert(context.targetEntity, context.input.create)
50
+ otherPrimary = getInsertPrimary(insertResult)
51
+ if (!otherPrimary) {
52
+ return insertResult
53
+ }
54
+ }
55
+ return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)
56
+ }
57
+ }
58
+
59
+ public async update(
60
+ { entity, targetEntity, relation, input: { where, data } }: Context & { input: UpdateInputProcessor.UpdateManyInput },
61
+ ) {
62
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
63
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)
64
+ if (!otherPrimary) {
65
+ return [new MutationEntryNotFoundError([], where)]
66
+ }
67
+ return [
68
+ ...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),
69
+ ...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),
70
+ ]
71
+ }
72
+ }
73
+
74
+ public async upsert(
75
+ { entity, relation, targetEntity, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },
76
+ ) {
77
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
78
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)
79
+ if (otherPrimary) {
80
+ const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)
81
+ const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
82
+ return [...updateResult, ...connectResult]
83
+ } else {
84
+ const insertResult = await this.mapper.insert(targetEntity, create)
85
+
86
+ const primaryValue = getInsertPrimary(insertResult)
87
+ if (!primaryValue) {
88
+ return insertResult
89
+ }
90
+ const connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue)
91
+ return [...insertResult, ...connectResult]
92
+ }
93
+ }
94
+ }
95
+
96
+ public async disconnect(
97
+ { entity, targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
98
+ ) {
99
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
100
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
101
+ if (!otherPrimary) {
102
+ return [new MutationEntryNotFoundError([], input)]
103
+ }
104
+
105
+ return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)
106
+ }
107
+ }
108
+
109
+ public async delete(
110
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
111
+ ) {
112
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
113
+ return await this.mapper.delete(targetEntity, input)
114
+ }
115
+ }
116
+ }
@@ -0,0 +1,125 @@
1
+ import { UpdateInputProcessor } from '../../../inputProcessing'
2
+ import { Input, Model } from '@contember/schema'
3
+ import {
4
+ ConstraintType,
5
+ getInsertPrimary,
6
+ MutationConstraintViolationError,
7
+ MutationEntryNotFoundError,
8
+ MutationNothingToDo,
9
+ NothingToDoReason,
10
+ } from '../../Result'
11
+ import { Mapper } from '../../Mapper'
12
+ import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
13
+ import { UpdateBuilder } from '../UpdateBuilder'
14
+
15
+ type Context = Model.ManyHasOneContext
16
+
17
+ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{
18
+
19
+ constructor(
20
+ private readonly mapper: Mapper,
21
+ private readonly builder: UpdateBuilder,
22
+ private readonly primary: Input.PrimaryValue,
23
+ ) {
24
+ }
25
+
26
+ public async connect(
27
+ { targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
28
+ ) {
29
+ const value = await this.mapper.getPrimaryValue(targetEntity, input)
30
+ if (!value) {
31
+ return [new MutationEntryNotFoundError([], input)]
32
+ }
33
+ this.builder.addFieldValue(relation.name, value)
34
+ return []
35
+ }
36
+
37
+ public async create(
38
+ { relation, targetEntity, input }: Context & { input: Input.CreateDataInput },
39
+ ) {
40
+ const insertResult = await this.mapper.insert(targetEntity, input)
41
+ const value = getInsertPrimary(insertResult)
42
+ if (!value) {
43
+ return insertResult
44
+ }
45
+ this.builder.addFieldValue(relation.name, value)
46
+ return []
47
+ }
48
+
49
+ public async connectOrCreate(
50
+ { input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },
51
+ ) {
52
+ const value = await this.mapper.getPrimaryValue(targetEntity, connect)
53
+ if (value) {
54
+ this.builder.addFieldValue(relation.name, value)
55
+ } else {
56
+ const insertResult = await this.mapper.insert(targetEntity, create)
57
+ const primary = getInsertPrimary(insertResult)
58
+ if (!primary) {
59
+ return insertResult
60
+ }
61
+
62
+ this.builder.addFieldValue(relation.name, primary)
63
+ }
64
+ return []
65
+ }
66
+
67
+ public async update(
68
+ { entity, relation, targetEntity, targetRelation, input }: Context & { input: Input.UpdateDataInput },
69
+ ) {
70
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
71
+ const inversePrimary = await this.mapper.selectField(
72
+ entity,
73
+ { [entity.primary]: primary },
74
+ relation.name,
75
+ )
76
+ if (!inversePrimary) {
77
+ return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
78
+ }
79
+ return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)
80
+ }
81
+ }
82
+
83
+ public async upsert(
84
+ { entity, relation, targetEntity, input: { create, update } }: Context & { input: UpdateInputProcessor.UpsertInput },
85
+ ) {
86
+ const inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name)
87
+ if (!inversePrimary) {
88
+ const insertResult = await this.mapper.insert(targetEntity, create)
89
+ const insertPrimary = getInsertPrimary(insertResult)
90
+ if (insertPrimary) {
91
+ this.builder.addFieldValue(relation.name, insertPrimary)
92
+ }
93
+ return insertResult
94
+ }
95
+
96
+ return async () =>
97
+ await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)
98
+ }
99
+
100
+ public async disconnect(
101
+ { entity, targetEntity, relation, targetRelation }: Context & { input: undefined },
102
+ ) {
103
+ if (!relation.nullable) {
104
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
105
+ }
106
+ this.builder.addFieldValue(relation.name, null)
107
+ return []
108
+ }
109
+
110
+ public async delete(
111
+ { entity, targetEntity, relation, targetRelation }: Context & { input: undefined },
112
+ ) {
113
+ if (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {
114
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
115
+ }
116
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
117
+ const inversePrimary = await this.mapper.selectField(
118
+ entity,
119
+ { [entity.primary]: primary },
120
+ relation.name,
121
+ )
122
+ return await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })
123
+ }
124
+ }
125
+ }