@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
@@ -6,12 +6,15 @@ import {
6
6
  MutationResultList,
7
7
  MutationResultType,
8
8
  NothingToDoReason,
9
- } from '../Result'
10
- import { UpdateInputProcessor } from '../../inputProcessing'
9
+ } from '../../Result'
10
+ import { UpdateInputProcessor } from '../../../inputProcessing'
11
11
  import { Input, Model } from '@contember/schema'
12
- import { Mapper } from '../Mapper'
12
+ import { Mapper } from '../../Mapper'
13
+ import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
13
14
 
14
- export class OneHasOneInverseUpdateInputProcessor {
15
+ type Context = Model.OneHasOneInverseContext
16
+
17
+ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{
15
18
  constructor(
16
19
  private readonly primaryValue: Input.PrimaryValue,
17
20
  private readonly mapper: Mapper,
@@ -19,24 +22,101 @@ export class OneHasOneInverseUpdateInputProcessor {
19
22
  }
20
23
 
21
24
  public async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {
22
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)
23
- if (!newOwner) {
24
- return [new MutationEntryNotFoundError([], input)]
25
+ return async () => {
26
+ const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)
27
+ if (!newOwner) {
28
+ return [new MutationEntryNotFoundError([], input)]
29
+ }
30
+ return await this.connectInternal(ctx, newOwner)
25
31
  }
26
- return await this.connectInternal(ctx, newOwner)
27
32
  }
28
33
 
29
34
  public async connectOrCreate(
30
35
  { input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },
31
36
  ) {
32
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)
33
- if (newOwner) {
34
- return await this.connectInternal(ctx, newOwner)
37
+ return async () => {
38
+ const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)
39
+ if (newOwner) {
40
+ return await this.connectInternal(ctx, newOwner)
41
+ }
42
+ return await this.createInternal({ ...ctx, input: input.create })
35
43
  }
36
- return await this.create({ ...ctx, input: input.create })
37
44
  }
38
45
 
39
46
 
47
+ public async create(ctx: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {
48
+ return async () => {
49
+ return await this.createInternal(ctx)
50
+ }
51
+ }
52
+
53
+ public async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {
54
+ return async () => {
55
+ return await this.mapper.update(
56
+ targetEntity,
57
+ { [targetRelation.name]: { [entity.primary]: this.primaryValue } },
58
+ input,
59
+ )
60
+ }
61
+ }
62
+ public async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {
63
+ return async () => {
64
+ const { targetEntity, targetRelation, entity, input: { update, create } } = context
65
+ const result = await this.mapper.update(
66
+ targetEntity,
67
+ { [targetRelation.name]: { [entity.primary]: this.primaryValue } },
68
+ update,
69
+ )
70
+ if (result[0].result === MutationResultType.notFoundError) {
71
+ return await this.createInternal({
72
+ ...context,
73
+ input: create,
74
+ })
75
+ }
76
+ return result
77
+ }
78
+ }
79
+
80
+ public async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {
81
+ return async () => {
82
+ if (!relation.nullable && !targetRelation.orphanRemoval) {
83
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
84
+ }
85
+ const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
86
+ [targetRelation.name]: { [entity.primary]: this.primaryValue },
87
+ })
88
+ if (!currentOwner) {
89
+ return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
90
+ }
91
+ if (currentOwner && !targetRelation.nullable) {
92
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
93
+ }
94
+
95
+ const result = await this.mapper.updateInternal(
96
+ targetEntity,
97
+ { [targetEntity.primary]: currentOwner },
98
+ builder => {
99
+ builder.addPredicates([targetRelation.name])
100
+ builder.addFieldValue(targetRelation.name, null)
101
+ },
102
+ )
103
+ if (targetRelation.orphanRemoval) {
104
+ result.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))
105
+ }
106
+ return result
107
+ }
108
+ }
109
+
110
+ public async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {
111
+ return async () => {
112
+ if (!relation.nullable && !targetRelation.orphanRemoval) {
113
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
114
+ }
115
+ // orphan removal is handled in mapper.delete
116
+ return await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })
117
+ }
118
+ }
119
+
40
120
  private async connectInternal(
41
121
  { entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,
42
122
  newOwner: Input.PrimaryValue,
@@ -76,7 +156,7 @@ export class OneHasOneInverseUpdateInputProcessor {
76
156
  return result
77
157
  }
78
158
 
79
- public async create({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {
159
+ private async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {
80
160
  const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
81
161
  [targetRelation.name]: { [entity.primary]: this.primaryValue },
82
162
  })
@@ -101,64 +181,4 @@ export class OneHasOneInverseUpdateInputProcessor {
101
181
 
102
182
  return result
103
183
  }
104
-
105
- public async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {
106
- return await this.mapper.update(
107
- targetEntity,
108
- { [targetRelation.name]: { [entity.primary]: this.primaryValue } },
109
- input,
110
- )
111
- }
112
-
113
- public async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {
114
- const { targetEntity, targetRelation, entity, input: { update, create } } = context
115
- const result = await this.mapper.update(
116
- targetEntity,
117
- { [targetRelation.name]: { [entity.primary]: this.primaryValue } },
118
- update,
119
- )
120
- if (result[0].result === MutationResultType.notFoundError) {
121
- return await this.create({
122
- ...context,
123
- input: create,
124
- })
125
- }
126
- return result
127
- }
128
-
129
- public async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {
130
- if (!relation.nullable && !targetRelation.orphanRemoval) {
131
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
132
- }
133
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
134
- [targetRelation.name]: { [entity.primary]: this.primaryValue },
135
- })
136
- if (!currentOwner) {
137
- return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
138
- }
139
- if (currentOwner && !targetRelation.nullable) {
140
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
141
- }
142
-
143
- const result = await this.mapper.updateInternal(
144
- targetEntity,
145
- { [targetEntity.primary]: currentOwner },
146
- builder => {
147
- builder.addPredicates([targetRelation.name])
148
- builder.addFieldValue(targetRelation.name, null)
149
- },
150
- )
151
- if (targetRelation.orphanRemoval) {
152
- result.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))
153
- }
154
- return result
155
- }
156
-
157
- public async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {
158
- if (!relation.nullable && !targetRelation.orphanRemoval) {
159
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
160
- }
161
- // orphan removal is handled in mapper.delete
162
- return await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })
163
- }
164
184
  }
@@ -0,0 +1,243 @@
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
+ MutationResultList,
10
+ MutationResultType,
11
+ NothingToDoReason,
12
+ } from '../../Result'
13
+ import { Mapper } from '../../Mapper'
14
+ import { UpdateBuilder } from '../../update/UpdateBuilder'
15
+ import { CheckedPrimary } from '../../CheckedPrimary'
16
+ import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
17
+
18
+ type Context = Model.OneHasOneOwningContext
19
+
20
+ export class OneHasOneOwningUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{
21
+ constructor(
22
+ private readonly primaryValue: Input.PrimaryValue,
23
+ private readonly mapper: Mapper,
24
+ private readonly updateBuilder: UpdateBuilder,
25
+ ) {
26
+ }
27
+
28
+ public async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {
29
+ const { entity, relation, targetEntity, targetRelation, input } = context
30
+ const newInverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
31
+ if (!newInverseSide) {
32
+ return [new MutationEntryNotFoundError([], input)]
33
+ }
34
+ const currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
35
+ const currentOwnerResult = await this.handleStateBeforeConnect(context, currentInverseSide, newInverseSide)
36
+ if (currentOwnerResult.some(it => it.error)
37
+ || (currentOwnerResult.length === 1 && currentOwnerResult[0].result === MutationResultType.nothingToDo)
38
+ ) {
39
+ return currentOwnerResult
40
+ }
41
+
42
+ this.updateBuilder.addFieldValue(relation.name, newInverseSide)
43
+
44
+ return async () => {
45
+ return [
46
+ ...currentOwnerResult,
47
+ ...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)),
48
+ ]
49
+ }
50
+ }
51
+
52
+ public async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {
53
+ const { entity, relation, targetEntity, targetRelation } = context
54
+ const currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
55
+ const createResult = await this.createInternal(context, currentInverseSide)
56
+ const newInverseSide = getInsertPrimary(createResult)
57
+ if (!newInverseSide) {
58
+ return createResult
59
+ }
60
+ this.updateBuilder.addFieldValue(relation.name, newInverseSide)
61
+
62
+ return async () => {
63
+ return [
64
+ ...createResult,
65
+ ...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)),
66
+ ]
67
+ }
68
+ }
69
+
70
+ public async connectOrCreate({ input: { connect, create }, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {
71
+ const { relation, targetRelation, targetEntity, entity } = context
72
+ const currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
73
+ const newInverseSide = await this.mapper.getPrimaryValue(targetEntity, connect)
74
+
75
+ if (newInverseSide) {
76
+ const currentOwnerResult = await this.handleStateBeforeConnect(context, currentInverseSide, newInverseSide)
77
+ if (currentOwnerResult.some(it => it.error)
78
+ || (currentOwnerResult.length === 1 && currentOwnerResult[0].result === MutationResultType.nothingToDo)
79
+ ) {
80
+ return currentOwnerResult
81
+ }
82
+ this.updateBuilder.addFieldValue(relation.name, newInverseSide)
83
+ return async () => {
84
+ return [
85
+ ...currentOwnerResult,
86
+ ...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)),
87
+ ]
88
+ }
89
+
90
+ }
91
+
92
+ const createResult = await this.createInternal({ ...context, input: create }, currentInverseSide)
93
+ const newInverseSideCreate = getInsertPrimary(createResult)
94
+ if (!newInverseSideCreate) {
95
+ return createResult
96
+ }
97
+ this.updateBuilder.addFieldValue(relation.name, newInverseSideCreate)
98
+ return async () => {
99
+ return [
100
+ ...createResult,
101
+ ...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)),
102
+ ]
103
+ }
104
+ }
105
+
106
+ public async update({ entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.UpdateDataInput }) {
107
+ return async () => {
108
+ const inversePrimary = await this.mapper.selectField(
109
+ entity,
110
+ { [entity.primary]: this.primaryValue },
111
+ relation.name,
112
+ )
113
+ if (!inversePrimary) {
114
+ return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
115
+ }
116
+ return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)
117
+ }
118
+ }
119
+
120
+ public async upsert({ entity, relation, targetEntity, input: { create, update } }: Model.OneHasOneOwningContext & { input: UpdateInputProcessor.UpsertInput }) {
121
+ const primary = await this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
122
+ if (!primary) {
123
+ const insertResult = await this.mapper.insert(targetEntity, create)
124
+ const insertPrimary = getInsertPrimary(insertResult)
125
+ if (!insertPrimary) {
126
+ return insertResult
127
+ }
128
+ this.updateBuilder.addFieldValue(relation.name, insertPrimary)
129
+ return []
130
+ }
131
+
132
+ return async () => {
133
+ return await this.mapper.update(targetEntity, { [targetEntity.primary]: primary }, update)
134
+ }
135
+ }
136
+
137
+ public async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {
138
+ if (!relation.nullable) {
139
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
140
+ }
141
+
142
+ const inversePrimary = (targetRelation && !targetRelation.nullable) || relation.orphanRemoval
143
+ ? await this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
144
+ : undefined
145
+ if (inversePrimary && targetRelation && !targetRelation.nullable && !relation.orphanRemoval) {
146
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
147
+ }
148
+ this.updateBuilder.addFieldValue(relation.name, null)
149
+
150
+ if (relation.orphanRemoval && inversePrimary) {
151
+ return async () => {
152
+ return await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })
153
+ }
154
+ }
155
+
156
+ return []
157
+ }
158
+
159
+ public async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {
160
+ if (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {
161
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
162
+ }
163
+
164
+ return async () => {
165
+ const targetPrimary = await this.mapper.selectField(
166
+ entity,
167
+ { [entity.primary]: this.primaryValue },
168
+ relation.name,
169
+ )
170
+ if (!targetPrimary) {
171
+ return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
172
+ }
173
+ return await this.mapper.delete(targetEntity, new CheckedPrimary(targetPrimary))
174
+ }
175
+ }
176
+
177
+ private async createInternal(
178
+ { targetEntity, targetRelation, relation, input }: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },
179
+ currentInverseSide: Input.PrimaryValue | undefined,
180
+ ): Promise<MutationResultList> {
181
+ if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
182
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
183
+ }
184
+
185
+ return await this.mapper.insert(targetEntity, input)
186
+ }
187
+
188
+ private async getCurrentInverseSide(targetRelation: Model.OneHasOneInverseRelation | null, relation: Model.OneHasOneOwningRelation, entity: Model.Entity) {
189
+ if ((targetRelation && !targetRelation.nullable) || relation.orphanRemoval) {
190
+ return this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
191
+ }
192
+ return undefined
193
+ }
194
+
195
+ private async cleanupOrphan(relation: Model.OneHasOneOwningRelation, targetEntity: Model.Entity, currentInverseSide: Input.PrimaryValue | undefined) {
196
+ if (relation.orphanRemoval && currentInverseSide) {
197
+ return await this.mapper.delete(targetEntity, { [targetEntity.primary]: currentInverseSide })
198
+ }
199
+ return []
200
+ }
201
+
202
+ private async handleStateBeforeConnect(
203
+ { targetEntity, targetRelation, relation, entity }: Model.OneHasOneOwningContext,
204
+ currentInverseSide: Input.PrimaryValue | undefined,
205
+ newInverseSide: Input.PrimaryValue,
206
+ ): Promise<MutationResultList> {
207
+
208
+ if (currentInverseSide === newInverseSide) {
209
+ return [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]
210
+ }
211
+
212
+ const currentOwnerOfNewInverseSide = await this.mapper.getPrimaryValue(entity, {
213
+ [relation.name]: { [targetEntity.primary]: newInverseSide },
214
+ })
215
+
216
+ if (currentOwnerOfNewInverseSide === this.primaryValue) {
217
+ return [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]
218
+ }
219
+
220
+ // orphan removal handled bellow
221
+ if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
222
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
223
+ }
224
+
225
+ if (currentOwnerOfNewInverseSide) {
226
+ if (!relation.nullable) {
227
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
228
+ }
229
+
230
+ return await this.mapper.updateInternal(
231
+ entity,
232
+ {
233
+ [entity.primary]: currentOwnerOfNewInverseSide,
234
+ },
235
+ builder => {
236
+ builder.addPredicates([relation.name])
237
+ builder.addFieldValue(relation.name, null)
238
+ },
239
+ )
240
+ }
241
+ return []
242
+ }
243
+ }
@@ -49,22 +49,22 @@ test('insert posts with locales (one has many)', async () => {
49
49
  },
50
50
  {
51
51
  sql: SQL`with "root_" as
52
- (select ? :: uuid as "post_id", ? :: uuid as "id", ? :: text as "locale", ? :: text as "title")
53
- insert into "public"."post_locale" ("post_id", "id", "locale", "title")
54
- select "root_"."post_id", "root_"."id", "root_"."locale", "root_"."title"
52
+ (select ? :: uuid as "id", ? :: text as "locale", ? :: text as "title", ? :: uuid as "post_id")
53
+ insert into "public"."post_locale" ("id", "locale", "title", "post_id")
54
+ select "root_"."id", "root_"."locale", "root_"."title", "root_"."post_id"
55
55
  from "root_"
56
56
  returning "id"`,
57
- parameters: [testUuid(1), testUuid(2), 'cs', 'Ahoj svete'],
57
+ parameters: [testUuid(2), 'cs', 'Ahoj svete', testUuid(1)],
58
58
  response: { rows: [{ id: testUuid(2) }] },
59
59
  },
60
60
  {
61
61
  sql: SQL`with "root_" as
62
- (select ? :: uuid as "post_id", ? :: uuid as "id", ? :: text as "locale", ? :: text as "title")
63
- insert into "public"."post_locale" ("post_id", "id", "locale", "title")
64
- select "root_"."post_id", "root_"."id", "root_"."locale", "root_"."title"
62
+ (select ? :: uuid as "id", ? :: text as "locale", ? :: text as "title", ? :: uuid as "post_id")
63
+ insert into "public"."post_locale" ("id", "locale", "title", "post_id")
64
+ select "root_"."id", "root_"."locale", "root_"."title", "root_"."post_id"
65
65
  from "root_"
66
66
  returning "id"`,
67
- parameters: [testUuid(1), testUuid(3), 'en', 'Hello world'],
67
+ parameters: [testUuid(3), 'en', 'Hello world', testUuid(1)],
68
68
  response: { rows: [{ id: testUuid(3) }] },
69
69
  },
70
70
  {
@@ -68,12 +68,12 @@ test('upsert - not exists (composed unique)', async () => {
68
68
  },
69
69
  {
70
70
  sql: SQL`with "root_" as
71
- (select ? :: uuid as "id", ? :: text as "title", ? :: text as "locale", ? :: uuid as "post_id")
72
- insert into "public"."post_locale" ("id", "title", "locale", "post_id")
73
- select "root_"."id", "root_"."title", "root_"."locale", "root_"."post_id"
71
+ (select ? :: uuid as "id", ? :: text as "title", ? :: uuid as "post_id", ? :: text as "locale")
72
+ insert into "public"."post_locale" ("id", "title", "post_id", "locale")
73
+ select "root_"."id", "root_"."title", "root_"."post_id", "root_"."locale"
74
74
  from "root_"
75
75
  returning "id"`,
76
- parameters: [testUuid(1), 'World', null, testUuid(2)],
76
+ parameters: [testUuid(1), 'World', testUuid(2), null],
77
77
  response: { rows: [{ id: testUuid(1) }] },
78
78
  },
79
79
  ]),
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const AbortDataManipulation = Symbol("AbortDataManipulation");
4
- exports.AbortDataManipulation = AbortDataManipulation;
5
- //# sourceMappingURL=DataManipulationBuilder.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataManipulationBuilder.cjs","sources":["../../../../../packages/engine-content-api/src/mapper/DataManipulationBuilder.ts"],"sourcesContent":["import { Value } from '@contember/schema'\n\nexport interface DataManipulationBuilder {\n\taddFieldValue(\n\t\tfieldName: string,\n\t\tvalue: Value.GenericValueLike<Value.AtomicValue<AbortDataManipulation | undefined>>,\n\t): Promise<Value.AtomicValue<AbortDataManipulation | undefined>>\n}\n\n\nexport const AbortDataManipulation = Symbol('AbortDataManipulation')\nexport type AbortDataManipulation = typeof AbortDataManipulation\n"],"names":[],"mappings":";;AAUa,MAAA,wBAAwB,OAAO,uBAAuB;;"}
@@ -1,5 +0,0 @@
1
- const AbortDataManipulation = Symbol("AbortDataManipulation");
2
- export {
3
- AbortDataManipulation
4
- };
5
- //# sourceMappingURL=DataManipulationBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataManipulationBuilder.js","sources":["../../../../../packages/engine-content-api/src/mapper/DataManipulationBuilder.ts"],"sourcesContent":["import { Value } from '@contember/schema'\n\nexport interface DataManipulationBuilder {\n\taddFieldValue(\n\t\tfieldName: string,\n\t\tvalue: Value.GenericValueLike<Value.AtomicValue<AbortDataManipulation | undefined>>,\n\t): Promise<Value.AtomicValue<AbortDataManipulation | undefined>>\n}\n\n\nexport const AbortDataManipulation = Symbol('AbortDataManipulation')\nexport type AbortDataManipulation = typeof AbortDataManipulation\n"],"names":[],"mappings":"AAUa,MAAA,wBAAwB,OAAO,uBAAuB;"}
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Result = require("../Result.cjs");
4
- class ManyHasManyInputProcessor {
5
- constructor(mapper) {
6
- this.mapper = mapper;
7
- }
8
- async connect({ entity, targetEntity, relation, targetRelation, input }, primary) {
9
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
10
- if (!otherPrimary) {
11
- return [new Result.MutationEntryNotFoundError([], input)];
12
- }
13
- return await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
14
- }
15
- async create({ entity, targetEntity, relation, input }, primary) {
16
- const insertResult = await this.mapper.insert(targetEntity, input);
17
- const insertPrimary = Result.getInsertPrimary(insertResult);
18
- if (!insertPrimary) {
19
- return insertResult;
20
- }
21
- return [
22
- ...insertResult,
23
- ...await this.mapper.connectJunction(entity, relation, primary, insertPrimary)
24
- ];
25
- }
26
- async connectOrCreate(context, primary) {
27
- let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect);
28
- if (!otherPrimary) {
29
- const insertResult = await this.mapper.insert(context.targetEntity, context.input.create);
30
- otherPrimary = Result.getInsertPrimary(insertResult);
31
- if (!otherPrimary) {
32
- return insertResult;
33
- }
34
- }
35
- return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary);
36
- }
37
- async update({ entity, targetEntity, relation, input: { where, data } }, primary) {
38
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
39
- if (!otherPrimary) {
40
- return [new Result.MutationEntryNotFoundError([], where)];
41
- }
42
- return [
43
- ...await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data),
44
- ...await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
45
- ];
46
- }
47
- async upsert({ entity, relation, targetEntity, input: { create, update, where } }, primary) {
48
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where);
49
- if (otherPrimary) {
50
- const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update);
51
- const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary);
52
- return [...updateResult, ...connectResult];
53
- } else {
54
- const insertResult = await this.mapper.insert(targetEntity, create);
55
- const primaryValue = Result.getInsertPrimary(insertResult);
56
- if (!primaryValue) {
57
- return insertResult;
58
- }
59
- const connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue);
60
- return [...insertResult, ...connectResult];
61
- }
62
- }
63
- async disconnect({ entity, targetEntity, relation, input }, primary) {
64
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input);
65
- if (!otherPrimary) {
66
- return [new Result.MutationEntryNotFoundError([], input)];
67
- }
68
- return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary);
69
- }
70
- async delete({ entity, targetEntity, relation, targetRelation, input }, primary) {
71
- return await this.mapper.delete(targetEntity, input);
72
- }
73
- }
74
- exports.ManyHasManyInputProcessor = ManyHasManyInputProcessor;
75
- //# sourceMappingURL=ManyHasManyInputProcessor.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManyHasManyInputProcessor.cjs","sources":["../../../../../../packages/engine-content-api/src/mapper/relations/ManyHasManyInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { getInsertPrimary, MutationEntryNotFoundError, MutationResultList } from '../Result'\nimport { Mapper } from '../Mapper'\n\ntype RelationContext = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext\n\nexport class ManyHasManyInputProcessor {\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 }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\treturn await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, relation, input }: RelationContext & { input: Input.CreateDataInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\tif (!insertPrimary) {\n\t\t\treturn insertResult\n\t\t}\n\t\treturn [\n\t\t\t...insertResult,\n\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),\n\t\t]\n\t}\n\n\tpublic async connectOrCreate(\n\t\tcontext: RelationContext & { input: Input.ConnectOrCreateInput },\n\t\tprimary: Input.PrimaryValue,\n\t): Promise<MutationResultList> {\n\t\tlet otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)\n\t\tif (!otherPrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(context.targetEntity, context.input.create)\n\t\t\totherPrimary = getInsertPrimary(insertResult)\n\t\t\tif (!otherPrimary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t}\n\t\treturn await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, relation, input: { where, data } }: RelationContext & { input: UpdateInputProcessor.UpdateManyInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], where)]\n\t\t}\n\t\treturn [\n\t\t\t...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),\n\t\t\t...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),\n\t\t]\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update, where } }: RelationContext & { input: UpdateInputProcessor.UpsertManyInput },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)\n\t\tif (otherPrimary) {\n\t\t\tconst updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)\n\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)\n\t\t\treturn [...updateResult, ...connectResult]\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\n\t\t\tconst primaryValue = getInsertPrimary(insertResult)\n\t\t\tif (!primaryValue) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\t\t\tconst connectResult = await this.mapper.connectJunction(entity, relation, primary, primaryValue)\n\t\t\treturn [...insertResult, ...connectResult]\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\tconst otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!otherPrimary) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\n\t\treturn await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: RelationContext & { input: Input.UniqueWhere },\n\t\tprimary: Input.PrimaryValue,\n\t) {\n\t\treturn await this.mapper.delete(targetEntity, input)\n\t}\n}\n"],"names":["MutationEntryNotFoundError","getInsertPrimary"],"mappings":";;;AAOO,MAAM,0BAA0B;AAAA,EACtC,YACkB,QAChB;AADgB,SAAA,SAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QACZ,EAAE,QAAQ,cAAc,UAAU,gBAAgB,MAAM,GACxD,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAIA,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AACA,WAAO,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAAA,EACjF;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,SAClC,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,KAAK;AAC3D,UAAA,gBAAgBC,wBAAiB,YAAY;AACnD,QAAI,CAAC,eAAe;AACZ,aAAA;AAAA,IACR;AACO,WAAA;AAAA,MACN,GAAG;AAAA,MACH,GAAI,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,aAAa;AAAA,IAAA;AAAA,EAEhF;AAAA,EAEA,MAAa,gBACZ,SACA,SAC8B;AAC1B,QAAA,eAAe,MAAM,KAAK,OAAO,gBAAgB,QAAQ,cAAc,QAAQ,MAAM,OAAO;AAChG,QAAI,CAAC,cAAc;AACZ,YAAA,eAAe,MAAM,KAAK,OAAO,OAAO,QAAQ,cAAc,QAAQ,MAAM,MAAM;AACxF,qBAAeA,OAAAA,iBAAiB,YAAY;AAC5C,UAAI,CAAC,cAAc;AACX,eAAA;AAAA,MACR;AAAA,IACD;AACO,WAAA,MAAM,KAAK,OAAO,gBAAgB,QAAQ,QAAQ,QAAQ,UAAU,SAAS,YAAY;AAAA,EACjG;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,OAAO,EAAE,OAAO,OAAO,GACzD,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAID,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AACO,WAAA;AAAA,MACN,GAAI,MAAM,KAAK,OAAO,OAAO,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB,IAAI;AAAA,MACzF,GAAI,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAAA,IAAA;AAAA,EAE/E;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,UAAU,cAAc,OAAO,EAAE,QAAQ,QAAQ,MAAM,EAAA,GACjE,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,cAAc;AACjB,YAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB,MAAM;AACtG,YAAA,gBAAgB,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAC/F,aAAO,CAAC,GAAG,cAAc,GAAG,aAAa;AAAA,IAAA,OACnC;AACN,YAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,MAAM;AAE5D,YAAA,eAAeC,wBAAiB,YAAY;AAClD,UAAI,CAAC,cAAc;AACX,eAAA;AAAA,MACR;AACM,YAAA,gBAAgB,MAAM,KAAK,OAAO,gBAAgB,QAAQ,UAAU,SAAS,YAAY;AAC/F,aAAO,CAAC,GAAG,cAAc,GAAG,aAAa;AAAA,IAC1C;AAAA,EACD;AAAA,EAEA,MAAa,WACZ,EAAE,QAAQ,cAAc,UAAU,SAClC,SACC;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AAC1E,QAAI,CAAC,cAAc;AAClB,aAAO,CAAC,IAAID,OAAA,2BAA2B,IAAI,KAAK,CAAC;AAAA,IAClD;AAEA,WAAO,MAAM,KAAK,OAAO,mBAAmB,QAAQ,UAAU,SAAS,YAAY;AAAA,EACpF;AAAA,EAEA,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,gBAAgB,MAAM,GACxD,SACC;AACD,WAAO,MAAM,KAAK,OAAO,OAAO,cAAc,KAAK;AAAA,EACpD;AACD;;"}