@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
@@ -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
+ }
@@ -0,0 +1,111 @@
1
+ import { UpdateInputProcessor } from '../../../inputProcessing'
2
+ import { Input, Model } from '@contember/schema'
3
+ import { Mapper } from '../../Mapper'
4
+ import { MutationResultType } from '../../Result'
5
+ import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
6
+
7
+ type Context = Model.OneHasManyContext
8
+
9
+ export class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{
10
+ constructor(
11
+ private readonly mapper: Mapper,
12
+ ) {
13
+ }
14
+
15
+ public async connect(
16
+ { entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },
17
+ ) {
18
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
19
+ return await this.mapper.update(targetEntity, input, {
20
+ [targetRelation.name]: { connect: { [entity.primary]: primary } },
21
+ })
22
+ }
23
+ }
24
+
25
+ public async create(
26
+ { entity, targetEntity, targetRelation, input }: Context & { input: Input.CreateDataInput },
27
+ ) {
28
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
29
+ return await this.mapper.insert(targetEntity, {
30
+ ...input,
31
+ [targetRelation.name]: { connect: { [entity.primary]: primary } },
32
+ })
33
+ }
34
+ }
35
+
36
+ public async connectOrCreate(
37
+ { entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: Input.ConnectOrCreateInput },
38
+ ) {
39
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
40
+ const connectData = {
41
+ [targetRelation.name]: {
42
+ connect: { [entity.primary]: primary },
43
+ },
44
+ }
45
+ return await this.mapper.upsert(targetEntity, connect, connectData, {
46
+ ...create,
47
+ ...connectData,
48
+ })
49
+ }
50
+ }
51
+
52
+ public async update(
53
+ { entity, targetEntity, targetRelation, input: { data, where } }: Context & { input: UpdateInputProcessor.UpdateManyInput },
54
+ ) {
55
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
56
+ return await this.mapper.update(
57
+ targetEntity,
58
+ { ...where, [targetRelation.name]: { [entity.primary]: primary } },
59
+ {
60
+ ...data,
61
+ // [targetRelation.name]: {connect: thisPrimary}
62
+ },
63
+ )
64
+ }
65
+ }
66
+
67
+ public async upsert(
68
+ { entity, targetEntity, targetRelation, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },
69
+ ) {
70
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
71
+ const result = await this.mapper.update(
72
+ targetEntity,
73
+ { ...where, [targetRelation.name]: { [entity.primary]: primary } },
74
+ {
75
+ ...update,
76
+ // [targetRelation.name]: {connect: thisPrimary}
77
+ },
78
+ )
79
+ if (result[0].result === MutationResultType.notFoundError) {
80
+ return await this.mapper.insert(targetEntity, {
81
+ ...create,
82
+ [targetRelation.name]: { connect: { [entity.primary]: primary } },
83
+ })
84
+ }
85
+ return result
86
+ }
87
+ }
88
+
89
+ public async disconnect(
90
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
91
+ ) {
92
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
93
+ return await this.mapper.update(
94
+ targetEntity,
95
+ { ...input, [targetRelation.name]: { [entity.primary]: primary } },
96
+ { [targetRelation.name]: { disconnect: true } },
97
+ )
98
+ }
99
+ }
100
+
101
+ public async delete(
102
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
103
+ ) {
104
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
105
+ return await this.mapper.delete(targetEntity, {
106
+ ...input,
107
+ [targetRelation.name]: { [entity.primary]: primary },
108
+ })
109
+ }
110
+ }
111
+ }