@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
@@ -20,36 +20,64 @@ class Updater {
20
20
  if (filter && Object.keys(filter).length > 0) {
21
21
  updateBuilder.addOldWhere(filter);
22
22
  }
23
- const updateVisitor = new SqlUpdateInputProcessor.SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper);
24
- const visitor = new UpdateInputVisitor.UpdateInputVisitor(updateVisitor, this.schema, data);
25
- const promises = schemaUtils.acceptEveryFieldVisitor(this.schema, entity, visitor);
26
- const okResultFactory = (values) => new Result.MutationUpdateOk([], entity, primaryValue, data, values);
27
- const mutationResultPromise = Updater.executeUpdate(updateBuilder, mapper, okResultFactory);
28
- const otherPromises = Object.values(promises);
29
- if (otherPromises.length === 0) {
30
- return await mutationResultPromise;
23
+ const visitor = new UpdateInputVisitor.UpdateInputVisitor(
24
+ new SqlUpdateInputProcessor.SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),
25
+ this.schema,
26
+ data
27
+ );
28
+ const resultList = [];
29
+ const postUpdates = [];
30
+ for (const key of Object.keys(data)) {
31
+ const resultSet = await schemaUtils.acceptFieldVisitor(
32
+ this.schema,
33
+ entity,
34
+ key,
35
+ visitor
36
+ );
37
+ for (const result2 of resultSet) {
38
+ if (typeof result2 === "function") {
39
+ postUpdates.push(result2);
40
+ } else {
41
+ for (const resultItem of await result2) {
42
+ resultList.push(resultItem);
43
+ if (resultItem.error) {
44
+ return resultList;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ const result = await updateBuilder.execute(mapper);
51
+ if (!result.executed) {
52
+ resultList.unshift(new Result.MutationNothingToDo([], Result.NothingToDoReason.noData));
53
+ } else if (result.affectedRows !== 1) {
54
+ return [new Result.MutationNoResultError([])];
31
55
  } else {
32
- return await Result.collectResults(this.schema, this.schemaDatabaseMetadata, mutationResultPromise, otherPromises);
56
+ const okResult = new Result.MutationUpdateOk([], entity, primaryValue, data, ColumnValue.rowDataToFieldValues(result.values));
57
+ resultList.unshift(okResult);
33
58
  }
59
+ for (const postUpdate of postUpdates) {
60
+ const postInsertResult = await postUpdate({ primary: primaryValue });
61
+ for (const result2 of postInsertResult) {
62
+ resultList.push(result2);
63
+ if (result2.error) {
64
+ return resultList;
65
+ }
66
+ }
67
+ }
68
+ return resultList;
34
69
  }
35
70
  async updateCb(mapper, entity, primaryValue, builderCb) {
36
71
  const updateBuilder = this.updateBuilderFactory.create(entity, primaryValue);
37
- const okResultFactory = (values) => new Result.MutationUpdateOk([], entity, primaryValue, {}, values);
38
72
  builderCb(updateBuilder);
39
- return Updater.executeUpdate(updateBuilder, mapper, okResultFactory);
40
- }
41
- static async executeUpdate(updateBuilder, mapper, okResultFactory) {
42
73
  const result = await updateBuilder.execute(mapper);
43
- if (result.aborted) {
44
- return [new Result.MutationNothingToDo([], Result.NothingToDoReason.aborted)];
45
- }
46
74
  if (!result.executed) {
47
75
  return [new Result.MutationNothingToDo([], Result.NothingToDoReason.noData)];
48
76
  }
49
77
  if (result.affectedRows !== 1) {
50
78
  return [new Result.MutationNoResultError([])];
51
79
  }
52
- return [okResultFactory(ColumnValue.rowDataToFieldValues(result.values))];
80
+ return [new Result.MutationUpdateOk([], entity, primaryValue, {}, ColumnValue.rowDataToFieldValues(result.values))];
53
81
  }
54
82
  }
55
83
  exports.Updater = Updater;
@@ -1 +1 @@
1
- {"version":3,"file":"Updater.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { PredicateFactory } from '../../acl'\nimport { UpdateBuilderFactory } from './UpdateBuilderFactory'\nimport { Mapper } from '../Mapper'\nimport { acceptEveryFieldVisitor } from '@contember/schema-utils'\nimport {\n\tcollectResults,\n\tMutationNoResultError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationUpdateOk,\n\tNothingToDoReason,\n\tResultListNotFlatten,\n\tRowValues,\n} from '../Result'\nimport { UpdateBuilder } from './UpdateBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\n\nexport class Updater {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly predicateFactory: PredicateFactory,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t) {}\n\n\tpublic async update(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tdata: Input.UpdateDataInput,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst predicateFields = Object.keys(data)\n\t\tupdateBuilder.addPredicates(predicateFields)\n\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\tupdateBuilder.addOldWhere(filter)\n\t\t}\n\n\t\tconst updateVisitor = new SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper)\n\t\tconst visitor = new UpdateInputVisitor<MutationResultList>(updateVisitor, this.schema, data)\n\t\tconst promises = acceptEveryFieldVisitor<Promise<ResultListNotFlatten | undefined>>(this.schema, entity, visitor)\n\n\t\tconst okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, data, values)\n\t\tconst mutationResultPromise = Updater.executeUpdate(updateBuilder, mapper, okResultFactory)\n\t\tconst otherPromises = Object.values(promises)\n\t\tif (otherPromises.length === 0) {\n\t\t\treturn await mutationResultPromise\n\t\t} else {\n\t\t\treturn await collectResults(this.schema, this.schemaDatabaseMetadata, mutationResultPromise, otherPromises)\n\t\t}\n\t}\n\n\tpublic async updateCb(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tbuilderCb: (builder: UpdateBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, {}, values)\n\t\tbuilderCb(updateBuilder)\n\n\t\treturn Updater.executeUpdate(updateBuilder, mapper, okResultFactory)\n\t}\n\n\tprivate static async executeUpdate(\n\t\tupdateBuilder: UpdateBuilder,\n\t\tmapper: Mapper,\n\t\tokResultFactory: (values: RowValues) => MutationUpdateOk,\n\t): Promise<MutationResultList> {\n\t\tconst result = await updateBuilder.execute(mapper)\n\t\tif (result.aborted) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.aborted)]\n\t\t}\n\t\tif (!result.executed) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.noData)]\n\t\t}\n\t\tif (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t}\n\t\treturn [okResultFactory(rowDataToFieldValues(result.values))]\n\t}\n}\n"],"names":["SqlUpdateInputProcessor","UpdateInputVisitor","acceptEveryFieldVisitor","MutationUpdateOk","collectResults","MutationNothingToDo","NothingToDoReason","MutationNoResultError","rowDataToFieldValues"],"mappings":";;;;;;;;AAqBO,MAAM,QAAQ;AAAA,EACpB,YACkB,QACA,wBACA,kBACA,sBAChB;AAJgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,mBAAA;AACA,SAAA,uBAAA;AAAA,EACf;AAAA,EAEH,MAAa,OACZ,QACA,QACA,cACA,MACA,QAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAErE,UAAA,kBAAkB,OAAO,KAAK,IAAI;AACxC,kBAAc,cAAc,eAAe;AAC3C,QAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAC7C,oBAAc,YAAY,MAAM;AAAA,IACjC;AAEA,UAAM,gBAAgB,IAAIA,gDAAwB,cAAc,MAAM,eAAe,MAAM;AAC3F,UAAM,UAAU,IAAIC,sCAAuC,eAAe,KAAK,QAAQ,IAAI;AAC3F,UAAM,WAAWC,YAAAA,wBAAmE,KAAK,QAAQ,QAAQ,OAAO;AAE1G,UAAA,kBAAkB,CAAC,WAAsB,IAAIC,OAAA,iBAAiB,IAAI,QAAQ,cAAc,MAAM,MAAM;AAC1G,UAAM,wBAAwB,QAAQ,cAAc,eAAe,QAAQ,eAAe;AACpF,UAAA,gBAAgB,OAAO,OAAO,QAAQ;AACxC,QAAA,cAAc,WAAW,GAAG;AAC/B,aAAO,MAAM;AAAA,IAAA,OACP;AACN,aAAO,MAAMC,OAAAA,eAAe,KAAK,QAAQ,KAAK,wBAAwB,uBAAuB,aAAa;AAAA,IAC3G;AAAA,EACD;AAAA,EAEA,MAAa,SACZ,QACA,QACA,cACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAErE,UAAA,kBAAkB,CAAC,WAAsB,IAAID,OAAA,iBAAiB,IAAI,QAAQ,cAAc,IAAI,MAAM;AACxG,cAAU,aAAa;AAEvB,WAAO,QAAQ,cAAc,eAAe,QAAQ,eAAe;AAAA,EACpE;AAAA,EAEA,aAAqB,cACpB,eACA,QACA,iBAC8B;AAC9B,UAAM,SAAS,MAAM,cAAc,QAAQ,MAAM;AACjD,QAAI,OAAO,SAAS;AACnB,aAAO,CAAC,IAAIE,OAAAA,oBAAoB,CAAA,GAAIC,OAAAA,kBAAkB,OAAO,CAAC;AAAA,IAC/D;AACI,QAAA,CAAC,OAAO,UAAU;AACrB,aAAO,CAAC,IAAID,OAAAA,oBAAoB,CAAA,GAAIC,OAAAA,kBAAkB,MAAM,CAAC;AAAA,IAC9D;AACI,QAAA,OAAO,iBAAiB,GAAG;AAC9B,aAAO,CAAC,IAAIC,OAAAA,sBAAsB,CAAE,CAAA,CAAC;AAAA,IACtC;AACA,WAAO,CAAC,gBAAgBC,YAAA,qBAAqB,OAAO,MAAM,CAAC,CAAC;AAAA,EAC7D;AACD;;"}
1
+ {"version":3,"file":"Updater.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { PredicateFactory } from '../../acl'\nimport { UpdateBuilderFactory } from './UpdateBuilderFactory'\nimport { Mapper } from '../Mapper'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason, RowValues } from '../Result'\nimport { UpdateBuilder } from './UpdateBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\n\nexport class Updater {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly predicateFactory: PredicateFactory,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t) {}\n\n\tpublic async update(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tdata: Input.UpdateDataInput,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst predicateFields = Object.keys(data)\n\t\tupdateBuilder.addPredicates(predicateFields)\n\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\tupdateBuilder.addOldWhere(filter)\n\t\t}\n\n\t\tconst visitor = new UpdateInputVisitor<SqlUpdateInputProcessorResult>(\n\t\t\tnew SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\t\tconst resultList: MutationResultList = []\n\t\tconst postUpdates: Exclude<SqlUpdateInputProcessorResult, MutationResultList>[] = []\n\n\t\tfor (const key of Object.keys(data)) {\n\t\t\tconst resultSet = await acceptFieldVisitor(\n\t\t\t\tthis.schema,\n\t\t\t\tentity,\n\t\t\t\tkey,\n\t\t\t\tvisitor,\n\t\t\t)\n\t\t\tfor (const result of resultSet) {\n\t\t\t\tif (typeof result === 'function') {\n\t\t\t\t\tpostUpdates.push(result)\n\t\t\t\t} else {\n\t\t\t\t\tfor (const resultItem of await result) {\n\t\t\t\t\t\tresultList.push(resultItem)\n\t\t\t\t\t\tif (resultItem.error) {\n\t\t\t\t\t\t\treturn resultList\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\tresultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData))\n\t\t} else if (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t} else {\n\t\t\tconst okResult = new MutationUpdateOk([], entity, primaryValue, data, rowDataToFieldValues(result.values))\n\t\t\tresultList.unshift(okResult)\n\t\t}\n\n\t\tfor (const postUpdate of postUpdates) {\n\t\t\tconst postInsertResult = await postUpdate({ primary: primaryValue })\n\t\t\tfor (const result of postInsertResult) {\n\t\t\t\tresultList.push(result)\n\t\t\t\tif (result.error) {\n\t\t\t\t\treturn resultList\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn resultList\n\t}\n\n\tpublic async updateCb(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tbuilderCb: (builder: UpdateBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tbuilderCb(updateBuilder)\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.noData)]\n\t\t}\n\t\tif (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t}\n\t\treturn [new MutationUpdateOk([], entity, primaryValue, {}, rowDataToFieldValues(result.values))]\n\t}\n}\n"],"names":["UpdateInputVisitor","SqlUpdateInputProcessor","acceptFieldVisitor","result","MutationNothingToDo","NothingToDoReason","MutationNoResultError","MutationUpdateOk","rowDataToFieldValues"],"mappings":";;;;;;;;AAYO,MAAM,QAAQ;AAAA,EACpB,YACkB,QACA,wBACA,kBACA,sBAChB;AAJgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,mBAAA;AACA,SAAA,uBAAA;AAAA,EACf;AAAA,EAEH,MAAa,OACZ,QACA,QACA,cACA,MACA,QAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAErE,UAAA,kBAAkB,OAAO,KAAK,IAAI;AACxC,kBAAc,cAAc,eAAe;AAC3C,QAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAC7C,oBAAc,YAAY,MAAM;AAAA,IACjC;AAEA,UAAM,UAAU,IAAIA,mBAAA;AAAA,MACnB,IAAIC,wBAAA,wBAAwB,cAAc,MAAM,eAAe,MAAM;AAAA,MACrE,KAAK;AAAA,MACL;AAAA,IAAA;AAED,UAAM,aAAiC,CAAA;AACvC,UAAM,cAA4E,CAAA;AAElF,eAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AACpC,YAAM,YAAY,MAAMC,YAAA;AAAA,QACvB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAED,iBAAWC,WAAU,WAAW;AAC3B,YAAA,OAAOA,YAAW,YAAY;AACjC,sBAAY,KAAKA,OAAM;AAAA,QAAA,OACjB;AACK,qBAAA,cAAc,MAAMA,SAAQ;AACtC,uBAAW,KAAK,UAAU;AAC1B,gBAAI,WAAW,OAAO;AACd,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,UAAM,SAAS,MAAM,cAAc,QAAQ,MAAM;AAE7C,QAAA,CAAC,OAAO,UAAU;AACrB,iBAAW,QAAQ,IAAIC,OAAA,oBAAoB,CAAI,GAAAC,OAAA,kBAAkB,MAAM,CAAC;AAAA,IAAA,WAC9D,OAAO,iBAAiB,GAAG;AACrC,aAAO,CAAC,IAAIC,OAAAA,sBAAsB,CAAE,CAAA,CAAC;AAAA,IAAA,OAC/B;AACA,YAAA,WAAW,IAAIC,wBAAiB,CAAA,GAAI,QAAQ,cAAc,MAAMC,YAAA,qBAAqB,OAAO,MAAM,CAAC;AACzG,iBAAW,QAAQ,QAAQ;AAAA,IAC5B;AAEA,eAAW,cAAc,aAAa;AACrC,YAAM,mBAAmB,MAAM,WAAW,EAAE,SAAS,aAAc,CAAA;AACnE,iBAAWL,WAAU,kBAAkB;AACtC,mBAAW,KAAKA,OAAM;AACtB,YAAIA,QAAO,OAAO;AACV,iBAAA;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAEO,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,SACZ,QACA,QACA,cACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAE3E,cAAU,aAAa;AAEvB,UAAM,SAAS,MAAM,cAAc,QAAQ,MAAM;AAE7C,QAAA,CAAC,OAAO,UAAU;AACrB,aAAO,CAAC,IAAIC,OAAAA,oBAAoB,CAAA,GAAIC,OAAAA,kBAAkB,MAAM,CAAC;AAAA,IAC9D;AACI,QAAA,OAAO,iBAAiB,GAAG;AAC9B,aAAO,CAAC,IAAIC,OAAAA,sBAAsB,CAAE,CAAA,CAAC;AAAA,IACtC;AACA,WAAO,CAAC,IAAIC,OAAAA,iBAAiB,CAAI,GAAA,QAAQ,cAAc,CAAI,GAAAC,iCAAqB,OAAO,MAAM,CAAC,CAAC;AAAA,EAChG;AACD;;"}
@@ -1,8 +1,8 @@
1
1
  import { SqlUpdateInputProcessor } from "./SqlUpdateInputProcessor.js";
2
- import { acceptEveryFieldVisitor } from "@contember/schema-utils";
2
+ import { acceptFieldVisitor } from "@contember/schema-utils";
3
3
  import "@contember/schema";
4
4
  import { UpdateInputVisitor } from "../../inputProcessing/UpdateInputVisitor.js";
5
- import { collectResults, MutationNothingToDo, NothingToDoReason, MutationNoResultError, MutationUpdateOk } from "../Result.js";
5
+ import { MutationNothingToDo, NothingToDoReason, MutationNoResultError, MutationUpdateOk } from "../Result.js";
6
6
  import { rowDataToFieldValues } from "../ColumnValue.js";
7
7
  class Updater {
8
8
  constructor(schema, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory) {
@@ -18,36 +18,64 @@ class Updater {
18
18
  if (filter && Object.keys(filter).length > 0) {
19
19
  updateBuilder.addOldWhere(filter);
20
20
  }
21
- const updateVisitor = new SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper);
22
- const visitor = new UpdateInputVisitor(updateVisitor, this.schema, data);
23
- const promises = acceptEveryFieldVisitor(this.schema, entity, visitor);
24
- const okResultFactory = (values) => new MutationUpdateOk([], entity, primaryValue, data, values);
25
- const mutationResultPromise = Updater.executeUpdate(updateBuilder, mapper, okResultFactory);
26
- const otherPromises = Object.values(promises);
27
- if (otherPromises.length === 0) {
28
- return await mutationResultPromise;
21
+ const visitor = new UpdateInputVisitor(
22
+ new SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),
23
+ this.schema,
24
+ data
25
+ );
26
+ const resultList = [];
27
+ const postUpdates = [];
28
+ for (const key of Object.keys(data)) {
29
+ const resultSet = await acceptFieldVisitor(
30
+ this.schema,
31
+ entity,
32
+ key,
33
+ visitor
34
+ );
35
+ for (const result2 of resultSet) {
36
+ if (typeof result2 === "function") {
37
+ postUpdates.push(result2);
38
+ } else {
39
+ for (const resultItem of await result2) {
40
+ resultList.push(resultItem);
41
+ if (resultItem.error) {
42
+ return resultList;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ const result = await updateBuilder.execute(mapper);
49
+ if (!result.executed) {
50
+ resultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData));
51
+ } else if (result.affectedRows !== 1) {
52
+ return [new MutationNoResultError([])];
29
53
  } else {
30
- return await collectResults(this.schema, this.schemaDatabaseMetadata, mutationResultPromise, otherPromises);
54
+ const okResult = new MutationUpdateOk([], entity, primaryValue, data, rowDataToFieldValues(result.values));
55
+ resultList.unshift(okResult);
31
56
  }
57
+ for (const postUpdate of postUpdates) {
58
+ const postInsertResult = await postUpdate({ primary: primaryValue });
59
+ for (const result2 of postInsertResult) {
60
+ resultList.push(result2);
61
+ if (result2.error) {
62
+ return resultList;
63
+ }
64
+ }
65
+ }
66
+ return resultList;
32
67
  }
33
68
  async updateCb(mapper, entity, primaryValue, builderCb) {
34
69
  const updateBuilder = this.updateBuilderFactory.create(entity, primaryValue);
35
- const okResultFactory = (values) => new MutationUpdateOk([], entity, primaryValue, {}, values);
36
70
  builderCb(updateBuilder);
37
- return Updater.executeUpdate(updateBuilder, mapper, okResultFactory);
38
- }
39
- static async executeUpdate(updateBuilder, mapper, okResultFactory) {
40
71
  const result = await updateBuilder.execute(mapper);
41
- if (result.aborted) {
42
- return [new MutationNothingToDo([], NothingToDoReason.aborted)];
43
- }
44
72
  if (!result.executed) {
45
73
  return [new MutationNothingToDo([], NothingToDoReason.noData)];
46
74
  }
47
75
  if (result.affectedRows !== 1) {
48
76
  return [new MutationNoResultError([])];
49
77
  }
50
- return [okResultFactory(rowDataToFieldValues(result.values))];
78
+ return [new MutationUpdateOk([], entity, primaryValue, {}, rowDataToFieldValues(result.values))];
51
79
  }
52
80
  }
53
81
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"Updater.js","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { PredicateFactory } from '../../acl'\nimport { UpdateBuilderFactory } from './UpdateBuilderFactory'\nimport { Mapper } from '../Mapper'\nimport { acceptEveryFieldVisitor } from '@contember/schema-utils'\nimport {\n\tcollectResults,\n\tMutationNoResultError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationUpdateOk,\n\tNothingToDoReason,\n\tResultListNotFlatten,\n\tRowValues,\n} from '../Result'\nimport { UpdateBuilder } from './UpdateBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\n\nexport class Updater {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly predicateFactory: PredicateFactory,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t) {}\n\n\tpublic async update(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tdata: Input.UpdateDataInput,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst predicateFields = Object.keys(data)\n\t\tupdateBuilder.addPredicates(predicateFields)\n\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\tupdateBuilder.addOldWhere(filter)\n\t\t}\n\n\t\tconst updateVisitor = new SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper)\n\t\tconst visitor = new UpdateInputVisitor<MutationResultList>(updateVisitor, this.schema, data)\n\t\tconst promises = acceptEveryFieldVisitor<Promise<ResultListNotFlatten | undefined>>(this.schema, entity, visitor)\n\n\t\tconst okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, data, values)\n\t\tconst mutationResultPromise = Updater.executeUpdate(updateBuilder, mapper, okResultFactory)\n\t\tconst otherPromises = Object.values(promises)\n\t\tif (otherPromises.length === 0) {\n\t\t\treturn await mutationResultPromise\n\t\t} else {\n\t\t\treturn await collectResults(this.schema, this.schemaDatabaseMetadata, mutationResultPromise, otherPromises)\n\t\t}\n\t}\n\n\tpublic async updateCb(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tbuilderCb: (builder: UpdateBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst okResultFactory = (values: RowValues) => new MutationUpdateOk([], entity, primaryValue, {}, values)\n\t\tbuilderCb(updateBuilder)\n\n\t\treturn Updater.executeUpdate(updateBuilder, mapper, okResultFactory)\n\t}\n\n\tprivate static async executeUpdate(\n\t\tupdateBuilder: UpdateBuilder,\n\t\tmapper: Mapper,\n\t\tokResultFactory: (values: RowValues) => MutationUpdateOk,\n\t): Promise<MutationResultList> {\n\t\tconst result = await updateBuilder.execute(mapper)\n\t\tif (result.aborted) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.aborted)]\n\t\t}\n\t\tif (!result.executed) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.noData)]\n\t\t}\n\t\tif (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t}\n\t\treturn [okResultFactory(rowDataToFieldValues(result.values))]\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAqBO,MAAM,QAAQ;AAAA,EACpB,YACkB,QACA,wBACA,kBACA,sBAChB;AAJgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,mBAAA;AACA,SAAA,uBAAA;AAAA,EACf;AAAA,EAEH,MAAa,OACZ,QACA,QACA,cACA,MACA,QAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAErE,UAAA,kBAAkB,OAAO,KAAK,IAAI;AACxC,kBAAc,cAAc,eAAe;AAC3C,QAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAC7C,oBAAc,YAAY,MAAM;AAAA,IACjC;AAEA,UAAM,gBAAgB,IAAI,wBAAwB,cAAc,MAAM,eAAe,MAAM;AAC3F,UAAM,UAAU,IAAI,mBAAuC,eAAe,KAAK,QAAQ,IAAI;AAC3F,UAAM,WAAW,wBAAmE,KAAK,QAAQ,QAAQ,OAAO;AAE1G,UAAA,kBAAkB,CAAC,WAAsB,IAAI,iBAAiB,IAAI,QAAQ,cAAc,MAAM,MAAM;AAC1G,UAAM,wBAAwB,QAAQ,cAAc,eAAe,QAAQ,eAAe;AACpF,UAAA,gBAAgB,OAAO,OAAO,QAAQ;AACxC,QAAA,cAAc,WAAW,GAAG;AAC/B,aAAO,MAAM;AAAA,IAAA,OACP;AACN,aAAO,MAAM,eAAe,KAAK,QAAQ,KAAK,wBAAwB,uBAAuB,aAAa;AAAA,IAC3G;AAAA,EACD;AAAA,EAEA,MAAa,SACZ,QACA,QACA,cACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAErE,UAAA,kBAAkB,CAAC,WAAsB,IAAI,iBAAiB,IAAI,QAAQ,cAAc,IAAI,MAAM;AACxG,cAAU,aAAa;AAEvB,WAAO,QAAQ,cAAc,eAAe,QAAQ,eAAe;AAAA,EACpE;AAAA,EAEA,aAAqB,cACpB,eACA,QACA,iBAC8B;AAC9B,UAAM,SAAS,MAAM,cAAc,QAAQ,MAAM;AACjD,QAAI,OAAO,SAAS;AACnB,aAAO,CAAC,IAAI,oBAAoB,CAAA,GAAI,kBAAkB,OAAO,CAAC;AAAA,IAC/D;AACI,QAAA,CAAC,OAAO,UAAU;AACrB,aAAO,CAAC,IAAI,oBAAoB,CAAA,GAAI,kBAAkB,MAAM,CAAC;AAAA,IAC9D;AACI,QAAA,OAAO,iBAAiB,GAAG;AAC9B,aAAO,CAAC,IAAI,sBAAsB,CAAE,CAAA,CAAC;AAAA,IACtC;AACA,WAAO,CAAC,gBAAgB,qBAAqB,OAAO,MAAM,CAAC,CAAC;AAAA,EAC7D;AACD;"}
1
+ {"version":3,"file":"Updater.js","sources":["../../../../../../packages/engine-content-api/src/mapper/update/Updater.ts"],"sourcesContent":["import { SqlUpdateInputProcessor, SqlUpdateInputProcessorResult } from './SqlUpdateInputProcessor'\nimport { UpdateInputVisitor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { PredicateFactory } from '../../acl'\nimport { UpdateBuilderFactory } from './UpdateBuilderFactory'\nimport { Mapper } from '../Mapper'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason, RowValues } from '../Result'\nimport { UpdateBuilder } from './UpdateBuilder'\nimport { rowDataToFieldValues } from '../ColumnValue'\nimport { DatabaseMetadata } from '@contember/database'\n\nexport class Updater {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t\tprivate readonly predicateFactory: PredicateFactory,\n\t\tprivate readonly updateBuilderFactory: UpdateBuilderFactory,\n\t) {}\n\n\tpublic async update(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tdata: Input.UpdateDataInput,\n\t\tfilter?: Input.OptionalWhere,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tconst predicateFields = Object.keys(data)\n\t\tupdateBuilder.addPredicates(predicateFields)\n\t\tif (filter && Object.keys(filter).length > 0) {\n\t\t\tupdateBuilder.addOldWhere(filter)\n\t\t}\n\n\t\tconst visitor = new UpdateInputVisitor<SqlUpdateInputProcessorResult>(\n\t\t\tnew SqlUpdateInputProcessor(primaryValue, data, updateBuilder, mapper),\n\t\t\tthis.schema,\n\t\t\tdata,\n\t\t)\n\t\tconst resultList: MutationResultList = []\n\t\tconst postUpdates: Exclude<SqlUpdateInputProcessorResult, MutationResultList>[] = []\n\n\t\tfor (const key of Object.keys(data)) {\n\t\t\tconst resultSet = await acceptFieldVisitor(\n\t\t\t\tthis.schema,\n\t\t\t\tentity,\n\t\t\t\tkey,\n\t\t\t\tvisitor,\n\t\t\t)\n\t\t\tfor (const result of resultSet) {\n\t\t\t\tif (typeof result === 'function') {\n\t\t\t\t\tpostUpdates.push(result)\n\t\t\t\t} else {\n\t\t\t\t\tfor (const resultItem of await result) {\n\t\t\t\t\t\tresultList.push(resultItem)\n\t\t\t\t\t\tif (resultItem.error) {\n\t\t\t\t\t\t\treturn resultList\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\tresultList.unshift(new MutationNothingToDo([], NothingToDoReason.noData))\n\t\t} else if (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t} else {\n\t\t\tconst okResult = new MutationUpdateOk([], entity, primaryValue, data, rowDataToFieldValues(result.values))\n\t\t\tresultList.unshift(okResult)\n\t\t}\n\n\t\tfor (const postUpdate of postUpdates) {\n\t\t\tconst postInsertResult = await postUpdate({ primary: primaryValue })\n\t\t\tfor (const result of postInsertResult) {\n\t\t\t\tresultList.push(result)\n\t\t\t\tif (result.error) {\n\t\t\t\t\treturn resultList\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn resultList\n\t}\n\n\tpublic async updateCb(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tprimaryValue: Input.PrimaryValue,\n\t\tbuilderCb: (builder: UpdateBuilder) => void,\n\t): Promise<MutationResultList> {\n\t\tconst updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)\n\n\t\tbuilderCb(updateBuilder)\n\n\t\tconst result = await updateBuilder.execute(mapper)\n\n\t\tif (!result.executed) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.noData)]\n\t\t}\n\t\tif (result.affectedRows !== 1) {\n\t\t\treturn [new MutationNoResultError([])]\n\t\t}\n\t\treturn [new MutationUpdateOk([], entity, primaryValue, {}, rowDataToFieldValues(result.values))]\n\t}\n}\n"],"names":["result"],"mappings":";;;;;;AAYO,MAAM,QAAQ;AAAA,EACpB,YACkB,QACA,wBACA,kBACA,sBAChB;AAJgB,SAAA,SAAA;AACA,SAAA,yBAAA;AACA,SAAA,mBAAA;AACA,SAAA,uBAAA;AAAA,EACf;AAAA,EAEH,MAAa,OACZ,QACA,QACA,cACA,MACA,QAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAErE,UAAA,kBAAkB,OAAO,KAAK,IAAI;AACxC,kBAAc,cAAc,eAAe;AAC3C,QAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAC7C,oBAAc,YAAY,MAAM;AAAA,IACjC;AAEA,UAAM,UAAU,IAAI;AAAA,MACnB,IAAI,wBAAwB,cAAc,MAAM,eAAe,MAAM;AAAA,MACrE,KAAK;AAAA,MACL;AAAA,IAAA;AAED,UAAM,aAAiC,CAAA;AACvC,UAAM,cAA4E,CAAA;AAElF,eAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AACpC,YAAM,YAAY,MAAM;AAAA,QACvB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAED,iBAAWA,WAAU,WAAW;AAC3B,YAAA,OAAOA,YAAW,YAAY;AACjC,sBAAY,KAAKA,OAAM;AAAA,QAAA,OACjB;AACK,qBAAA,cAAc,MAAMA,SAAQ;AACtC,uBAAW,KAAK,UAAU;AAC1B,gBAAI,WAAW,OAAO;AACd,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,UAAM,SAAS,MAAM,cAAc,QAAQ,MAAM;AAE7C,QAAA,CAAC,OAAO,UAAU;AACrB,iBAAW,QAAQ,IAAI,oBAAoB,CAAI,GAAA,kBAAkB,MAAM,CAAC;AAAA,IAAA,WAC9D,OAAO,iBAAiB,GAAG;AACrC,aAAO,CAAC,IAAI,sBAAsB,CAAE,CAAA,CAAC;AAAA,IAAA,OAC/B;AACA,YAAA,WAAW,IAAI,iBAAiB,CAAA,GAAI,QAAQ,cAAc,MAAM,qBAAqB,OAAO,MAAM,CAAC;AACzG,iBAAW,QAAQ,QAAQ;AAAA,IAC5B;AAEA,eAAW,cAAc,aAAa;AACrC,YAAM,mBAAmB,MAAM,WAAW,EAAE,SAAS,aAAc,CAAA;AACnE,iBAAWA,WAAU,kBAAkB;AACtC,mBAAW,KAAKA,OAAM;AACtB,YAAIA,QAAO,OAAO;AACV,iBAAA;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAEO,WAAA;AAAA,EACR;AAAA,EAEA,MAAa,SACZ,QACA,QACA,cACA,WAC8B;AAC9B,UAAM,gBAAgB,KAAK,qBAAqB,OAAO,QAAQ,YAAY;AAE3E,cAAU,aAAa;AAEvB,UAAM,SAAS,MAAM,cAAc,QAAQ,MAAM;AAE7C,QAAA,CAAC,OAAO,UAAU;AACrB,aAAO,CAAC,IAAI,oBAAoB,CAAA,GAAI,kBAAkB,MAAM,CAAC;AAAA,IAC9D;AACI,QAAA,OAAO,iBAAiB,GAAG;AAC9B,aAAO,CAAC,IAAI,sBAAsB,CAAE,CAAA,CAAC;AAAA,IACtC;AACA,WAAO,CAAC,IAAI,iBAAiB,CAAI,GAAA,QAAQ,cAAc,CAAI,GAAA,qBAAqB,OAAO,MAAM,CAAC,CAAC;AAAA,EAChG;AACD;"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Result = require("../../Result.cjs");
4
+ class ManyHasManyUpdateInputProcessor {
5
+ constructor(mapper) {
6
+ this.mapper = mapper;
7
+ }
8
+ async connect({ entity, targetEntity, relation, targetRelation, input }) {
9
+ return async ({ primary }) => {
10
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
11
+ if (!otherPrimary) {
12
+ return [new Result.MutationEntryNotFoundError([], input)];
13
+ }
14
+ return await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
15
+ };
16
+ }
17
+ async create({ entity, targetEntity, relation, input }) {
18
+ return async ({ primary }) => {
19
+ const insertResult = await this.mapper.insert(targetEntity, input);
20
+ const insertPrimary = Result.getInsertPrimary(insertResult);
21
+ if (!insertPrimary) {
22
+ return insertResult;
23
+ }
24
+ return [
25
+ ...insertResult,
26
+ ...await this.mapper.connectJunction(entity, relation, primary, insertPrimary)
27
+ ];
28
+ };
29
+ }
30
+ async connectOrCreate(context) {
31
+ return async ({ primary }) => {
32
+ let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect);
33
+ if (!otherPrimary) {
34
+ const insertResult = await this.mapper.insert(context.targetEntity, context.input.create);
35
+ otherPrimary = Result.getInsertPrimary(insertResult);
36
+ if (!otherPrimary) {
37
+ return insertResult;
38
+ }
39
+ }
40
+ return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary);
41
+ };
42
+ }
43
+ async update({ entity, targetEntity, relation, input: { where, data } }) {
44
+ return async ({ primary }) => {
45
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
46
+ if (!otherPrimary) {
47
+ return [new Result.MutationEntryNotFoundError([], where)];
48
+ }
49
+ return [
50
+ ...await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data),
51
+ ...await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
52
+ ];
53
+ };
54
+ }
55
+ async upsert({ entity, relation, targetEntity, input: { create, update, where } }) {
56
+ return async ({ primary }) => {
57
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
58
+ if (otherPrimary) {
59
+ const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update);
60
+ const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
61
+ return [...updateResult, ...connectResult];
62
+ } else {
63
+ const insertResult = await this.mapper.insert(targetEntity, create);
64
+ const primaryValue = Result.getInsertPrimary(insertResult);
65
+ if (!primaryValue) {
66
+ return insertResult;
67
+ }
68
+ const connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue);
69
+ return [...insertResult, ...connectResult];
70
+ }
71
+ };
72
+ }
73
+ async disconnect({ entity, targetEntity, relation, input }) {
74
+ return async ({ primary }) => {
75
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
76
+ if (!otherPrimary) {
77
+ return [new Result.MutationEntryNotFoundError([], input)];
78
+ }
79
+ return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary);
80
+ };
81
+ }
82
+ async delete({ entity, targetEntity, relation, targetRelation, input }) {
83
+ return async ({ primary }) => {
84
+ return await this.mapper.delete(targetEntity, input);
85
+ };
86
+ }
87
+ }
88
+ exports.ManyHasManyUpdateInputProcessor = ManyHasManyUpdateInputProcessor;
89
+ //# sourceMappingURL=ManyHasManyUpdateInputProcessor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManyHasManyUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../../update'\n\ntype Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext\n\nexport class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult> {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t\t}\n\t\t\treturn await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t}\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, relation, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (!insertPrimary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t...insertResult,\n\t\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),\n\t\t\t]\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\tcontext: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tlet otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)\n\t\t\tif (!otherPrimary) {\n\t\t\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input.create)\n\t\t\t\totherPrimary = getInsertPrimary(insertResult)\n\t\t\t\tif (!otherPrimary) {\n\t\t\t\t\treturn insertResult\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)\n\t\t}\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, relation, input: { where, data } }: Context & { input: UpdateInputProcessor.UpdateManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),\n\t\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),\n\t\t\t]\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\t\tif (otherPrimary) {\n\t\t\t\tconst updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)\n\t\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t\t\treturn [...updateResult, ...connectResult]\n\t\t\t} else {\n\t\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\n\t\t\t\tconst primaryValue = getInsertPrimary(insertResult)\n\t\t\t\tif (!primaryValue) {\n\t\t\t\t\treturn insertResult\n\t\t\t\t}\n\t\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue)\n\t\t\t\treturn [...insertResult, ...connectResult]\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t\t}\n\n\t\t\treturn await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)\n\t\t}\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.delete(targetEntity, input)\n\t\t}\n\t}\n}\n"],"names":["MutationEntryNotFoundError","getInsertPrimary"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { MutationEntryNotFoundError, getInsertPrimary } from "../../Result.js";
2
+ class ManyHasManyUpdateInputProcessor {
3
+ constructor(mapper) {
4
+ this.mapper = mapper;
5
+ }
6
+ async connect({ entity, targetEntity, relation, targetRelation, input }) {
7
+ return async ({ primary }) => {
8
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
9
+ if (!otherPrimary) {
10
+ return [new MutationEntryNotFoundError([], input)];
11
+ }
12
+ return await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
13
+ };
14
+ }
15
+ async create({ entity, targetEntity, relation, input }) {
16
+ return async ({ primary }) => {
17
+ const insertResult = await this.mapper.insert(targetEntity, input);
18
+ const insertPrimary = getInsertPrimary(insertResult);
19
+ if (!insertPrimary) {
20
+ return insertResult;
21
+ }
22
+ return [
23
+ ...insertResult,
24
+ ...await this.mapper.connectJunction(entity, relation, primary, insertPrimary)
25
+ ];
26
+ };
27
+ }
28
+ async connectOrCreate(context) {
29
+ return async ({ primary }) => {
30
+ let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect);
31
+ if (!otherPrimary) {
32
+ const insertResult = await this.mapper.insert(context.targetEntity, context.input.create);
33
+ otherPrimary = getInsertPrimary(insertResult);
34
+ if (!otherPrimary) {
35
+ return insertResult;
36
+ }
37
+ }
38
+ return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary);
39
+ };
40
+ }
41
+ async update({ entity, targetEntity, relation, input: { where, data } }) {
42
+ return async ({ primary }) => {
43
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
44
+ if (!otherPrimary) {
45
+ return [new MutationEntryNotFoundError([], where)];
46
+ }
47
+ return [
48
+ ...await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data),
49
+ ...await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
50
+ ];
51
+ };
52
+ }
53
+ async upsert({ entity, relation, targetEntity, input: { create, update, where } }) {
54
+ return async ({ primary }) => {
55
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
56
+ if (otherPrimary) {
57
+ const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update);
58
+ const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
59
+ return [...updateResult, ...connectResult];
60
+ } else {
61
+ const insertResult = await this.mapper.insert(targetEntity, create);
62
+ const primaryValue = getInsertPrimary(insertResult);
63
+ if (!primaryValue) {
64
+ return insertResult;
65
+ }
66
+ const connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue);
67
+ return [...insertResult, ...connectResult];
68
+ }
69
+ };
70
+ }
71
+ async disconnect({ entity, targetEntity, relation, input }) {
72
+ return async ({ primary }) => {
73
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
74
+ if (!otherPrimary) {
75
+ return [new MutationEntryNotFoundError([], input)];
76
+ }
77
+ return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary);
78
+ };
79
+ }
80
+ async delete({ entity, targetEntity, relation, targetRelation, input }) {
81
+ return async ({ primary }) => {
82
+ return await this.mapper.delete(targetEntity, input);
83
+ };
84
+ }
85
+ }
86
+ export {
87
+ ManyHasManyUpdateInputProcessor
88
+ };
89
+ //# sourceMappingURL=ManyHasManyUpdateInputProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManyHasManyUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../../update'\n\ntype Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext\n\nexport class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult> {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t\t}\n\t\t\treturn await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t}\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, relation, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (!insertPrimary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t...insertResult,\n\t\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),\n\t\t\t]\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\tcontext: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tlet otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)\n\t\t\tif (!otherPrimary) {\n\t\t\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input.create)\n\t\t\t\totherPrimary = getInsertPrimary(insertResult)\n\t\t\t\tif (!otherPrimary) {\n\t\t\t\t\treturn insertResult\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)\n\t\t}\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, relation, input: { where, data } }: Context & { input: UpdateInputProcessor.UpdateManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t\t}\n\t\t\treturn [\n\t\t\t\t...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),\n\t\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),\n\t\t\t]\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\t\tif (otherPrimary) {\n\t\t\t\tconst updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)\n\t\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t\t\treturn [...updateResult, ...connectResult]\n\t\t\t} else {\n\t\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\n\t\t\t\tconst primaryValue = getInsertPrimary(insertResult)\n\t\t\t\tif (!primaryValue) {\n\t\t\t\t\treturn insertResult\n\t\t\t\t}\n\t\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue)\n\t\t\t\treturn [...insertResult, ...connectResult]\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t\t}\n\n\t\t\treturn await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)\n\t\t}\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.delete(targetEntity, input)\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const schema = require("@contember/schema");
4
+ const Result = require("../../Result.cjs");
5
+ class ManyHasOneUpdateInputProcessor {
6
+ constructor(mapper, builder, primary) {
7
+ this.mapper = mapper;
8
+ this.builder = builder;
9
+ this.primary = primary;
10
+ }
11
+ async connect({ targetEntity, relation, input }) {
12
+ const value = await this.mapper.getPrimaryValue(targetEntity, input);
13
+ if (!value) {
14
+ return [new Result.MutationEntryNotFoundError([], input)];
15
+ }
16
+ this.builder.addFieldValue(relation.name, value);
17
+ return [];
18
+ }
19
+ async create({ relation, targetEntity, input }) {
20
+ const insertResult = await this.mapper.insert(targetEntity, input);
21
+ const value = Result.getInsertPrimary(insertResult);
22
+ if (!value) {
23
+ return insertResult;
24
+ }
25
+ this.builder.addFieldValue(relation.name, value);
26
+ return [];
27
+ }
28
+ async connectOrCreate({ input: { connect, create }, relation, targetEntity }) {
29
+ const value = await this.mapper.getPrimaryValue(targetEntity, connect);
30
+ if (value) {
31
+ this.builder.addFieldValue(relation.name, value);
32
+ } else {
33
+ const insertResult = await this.mapper.insert(targetEntity, create);
34
+ const primary = Result.getInsertPrimary(insertResult);
35
+ if (!primary) {
36
+ return insertResult;
37
+ }
38
+ this.builder.addFieldValue(relation.name, primary);
39
+ }
40
+ return [];
41
+ }
42
+ async update({ entity, relation, targetEntity, targetRelation, input }) {
43
+ return async ({ primary }) => {
44
+ const inversePrimary = await this.mapper.selectField(
45
+ entity,
46
+ { [entity.primary]: primary },
47
+ relation.name
48
+ );
49
+ if (!inversePrimary) {
50
+ return [new Result.MutationNothingToDo([], Result.NothingToDoReason.emptyRelation)];
51
+ }
52
+ return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input);
53
+ };
54
+ }
55
+ async upsert({ entity, relation, targetEntity, input: { create, update } }) {
56
+ const inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name);
57
+ if (!inversePrimary) {
58
+ const insertResult = await this.mapper.insert(targetEntity, create);
59
+ const insertPrimary = Result.getInsertPrimary(insertResult);
60
+ if (insertPrimary) {
61
+ this.builder.addFieldValue(relation.name, insertPrimary);
62
+ }
63
+ return insertResult;
64
+ }
65
+ return async () => await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update);
66
+ }
67
+ async disconnect({ entity, targetEntity, relation, targetRelation }) {
68
+ if (!relation.nullable) {
69
+ return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
70
+ }
71
+ this.builder.addFieldValue(relation.name, null);
72
+ return [];
73
+ }
74
+ async delete({ entity, targetEntity, relation, targetRelation }) {
75
+ if (!relation.nullable && relation.joiningColumn.onDelete !== schema.Model.OnDelete.cascade) {
76
+ return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
77
+ }
78
+ return async ({ primary }) => {
79
+ const inversePrimary = await this.mapper.selectField(
80
+ entity,
81
+ { [entity.primary]: primary },
82
+ relation.name
83
+ );
84
+ return await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary });
85
+ };
86
+ }
87
+ }
88
+ exports.ManyHasOneUpdateInputProcessor = ManyHasOneUpdateInputProcessor;
89
+ //# sourceMappingURL=ManyHasOneUpdateInputProcessor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManyHasOneUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tNothingToDoReason,\n} from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { UpdateBuilder } from '../UpdateBuilder'\n\ntype Context = Model.ManyHasOneContext\n\nexport class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly builder: UpdateBuilder,\n\t\tprivate readonly primary: Input.PrimaryValue,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!value) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async create(\n\t\t{ relation, targetEntity, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst value = getInsertPrimary(insertResult)\n\t\tif (!value) {\n\t\t\treturn insertResult\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\tif (value) {\n\t\t\tthis.builder.addFieldValue(relation.name, value)\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst primary = getInsertPrimary(insertResult)\n\t\t\tif (!primary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\n\t\t\tthis.builder.addFieldValue(relation.name, primary)\n\t\t}\n\t\treturn []\n\t}\n\n\tpublic async update(\n\t\t{ entity, relation, targetEntity, targetRelation, input }: Context & { input: Input.UpdateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\tif (!inversePrimary) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\treturn await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update } }: Context & { input: UpdateInputProcessor.UpsertInput },\n\t) {\n\t\tconst inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name)\n\t\tif (!inversePrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (insertPrimary) {\n\t\t\t\tthis.builder.addFieldValue(relation.name, insertPrimary)\n\t\t\t}\n\t\t\treturn insertResult\n\t\t}\n\n\t\treturn async () =>\n\t\t\tawait this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, null)\n\t\treturn []\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t\t}\n\t}\n}\n"],"names":["MutationEntryNotFoundError","getInsertPrimary","MutationNothingToDo","NothingToDoReason","MutationConstraintViolationError","ConstraintType","Model"],"mappings":"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"}