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

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,158 +0,0 @@
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
- NothingToDoReason,
11
- } from '../Result'
12
- import { Mapper } from '../Mapper'
13
- import { AbortDataManipulation, DataManipulationBuilder } from '../DataManipulationBuilder'
14
- import { UpdateBuilder } from '../update'
15
-
16
- export class ManyHasOneInputProcessor {
17
-
18
- constructor(
19
- private readonly mapper: Mapper,
20
- ) {
21
- }
22
-
23
- public async connect(
24
- { targetEntity, relation, input }: Model.ManyHasOneContext & { input: Input.UniqueWhere },
25
- builder: DataManipulationBuilder,
26
- ) {
27
- const result: MutationResultList = []
28
- await builder.addFieldValue(relation.name, async () => {
29
- const value = await this.mapper.getPrimaryValue(targetEntity, input)
30
- if (!value) {
31
- result.push(new MutationEntryNotFoundError([], input))
32
- return AbortDataManipulation
33
- }
34
- return value
35
- })
36
- return result
37
- }
38
-
39
- public async create(
40
- { relation, targetEntity, input }: Model.ManyHasOneContext & { input: Input.CreateDataInput },
41
- builder: DataManipulationBuilder,
42
- ) {
43
- const result: MutationResultList = []
44
- await builder.addFieldValue(relation.name, async () => {
45
- const insertResult = await this.mapper.insert(targetEntity, input)
46
- const value = getInsertPrimary(insertResult)
47
- if (!value) {
48
- result.push(...insertResult)
49
- return AbortDataManipulation
50
- }
51
- return value
52
- })
53
- return result
54
- }
55
-
56
- public async connectOrCreate(
57
- { input: { connect, create }, relation, targetEntity }: Model.ManyHasOneContext & { input: Input.ConnectOrCreateInput },
58
- builder: DataManipulationBuilder,
59
- ) {
60
- const result: MutationResultList = []
61
- await builder.addFieldValue(relation.name, async () => {
62
- const value = await this.mapper.getPrimaryValue(targetEntity, connect)
63
- if (value) {
64
- return value
65
- }
66
- const insertPromise = this.mapper.insert(targetEntity, create)
67
- const insertResult = await insertPromise
68
- const primary = getInsertPrimary(insertResult)
69
- if (!primary) {
70
- result.push(...insertResult)
71
- return AbortDataManipulation
72
- }
73
- return primary
74
- })
75
- return result
76
- }
77
-
78
- public async update(
79
- { entity, relation, targetEntity, targetRelation, input }: Model.ManyHasOneContext & { input: Input.UpdateDataInput },
80
- primary: Input.PrimaryValue,
81
- ) {
82
- const inversePrimary = await this.mapper.selectField(
83
- entity,
84
- { [entity.primary]: primary },
85
- relation.name,
86
- )
87
- if (!inversePrimary) {
88
- return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
89
- }
90
- return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)
91
- }
92
-
93
- public async upsert(
94
- { entity, relation, targetEntity, input: { create, update } }: Model.ManyHasOneContext & { input: UpdateInputProcessor.UpsertInput },
95
- builder: DataManipulationBuilder,
96
- primary: Input.PrimaryValue,
97
- ) {
98
- const select = this.mapper.selectField(entity, { [entity.primary]: primary }, relation.name)
99
-
100
- const result: MutationResultList = []
101
- // addFieldValue has to be called immediately
102
- await builder.addFieldValue(relation.name, async () => {
103
- const primary = await select
104
- if (primary) {
105
- return undefined
106
- }
107
- const insertResult = await this.mapper.insert(targetEntity, create)
108
- const insertPrimary = getInsertPrimary(insertResult)
109
- if (insertPrimary) {
110
- return insertPrimary
111
- }
112
- result.push(...insertResult)
113
- return AbortDataManipulation
114
- })
115
-
116
- const inversePrimary = await select
117
- if (inversePrimary) {
118
- return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)
119
- } else {
120
- return result
121
- }
122
- }
123
-
124
- public async disconnect(
125
- { entity, targetEntity, relation, targetRelation }: Model.ManyHasOneContext & { input: undefined },
126
- builder: DataManipulationBuilder,
127
- ) {
128
- if (!relation.nullable) {
129
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
130
- }
131
- builder.addFieldValue(relation.name, null)
132
- return []
133
- }
134
-
135
- public async delete(
136
- { entity, targetEntity, relation, targetRelation }: Model.ManyHasOneContext & { input: undefined },
137
- builder: UpdateBuilder,
138
- primary: Input.PrimaryValue,
139
- ) {
140
- if (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {
141
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
142
- }
143
- if (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {
144
- // eslint-disable-next-line no-console
145
- console.error(
146
- '[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version.',
147
- )
148
- builder.addFieldValue(relation.name, null)
149
- }
150
- const inversePrimary = await this.mapper.selectField(
151
- entity,
152
- { [entity.primary]: primary },
153
- relation.name,
154
- )
155
- await builder.update
156
- return await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })
157
- }
158
- }
@@ -1,101 +0,0 @@
1
- import { UpdateInputProcessor } from '../../inputProcessing'
2
- import { Input, Model } from '@contember/schema'
3
- import { Mapper } from '../Mapper'
4
- import { MutationResultType } from '../Result'
5
-
6
- export class OneHasManyInputProcessor {
7
- constructor(
8
- private readonly mapper: Mapper,
9
- ) {
10
- }
11
-
12
- public async connect(
13
- { entity, targetEntity, targetRelation, input }: Model.OneHasManyContext & { input: Input.UniqueWhere },
14
- primary: Input.PrimaryValue,
15
- ) {
16
- return await this.mapper.update(targetEntity, input, {
17
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
18
- })
19
- }
20
-
21
- public async create(
22
- { entity, targetEntity, targetRelation, input }: Model.OneHasManyContext & { input: Input.CreateDataInput },
23
- primary: Input.PrimaryValue,
24
- ) {
25
- return await this.mapper.insert(targetEntity, {
26
- ...input,
27
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
28
- })
29
- }
30
-
31
- public async connectOrCreate(
32
- { entity, targetRelation, targetEntity, input: { connect, create } }: Model.OneHasManyContext & { input: Input.ConnectOrCreateInput },
33
- primary: Input.PrimaryValue,
34
- ) {
35
- const connectData = {
36
- [targetRelation.name]: {
37
- connect: { [entity.primary]: primary },
38
- },
39
- }
40
- return await this.mapper.upsert(targetEntity, connect, connectData, {
41
- ...create,
42
- ...connectData,
43
- })
44
- }
45
-
46
- public async update(
47
- { entity, targetEntity, targetRelation, input: { data, where } }: Model.OneHasManyContext & { input: UpdateInputProcessor.UpdateManyInput },
48
- primary: Input.PrimaryValue,
49
- ) {
50
- return await this.mapper.update(
51
- targetEntity,
52
- { ...where, [targetRelation.name]: { [entity.primary]: primary } },
53
- {
54
- ...data,
55
- // [targetRelation.name]: {connect: thisPrimary}
56
- },
57
- )
58
- }
59
-
60
- public async upsert(
61
- { entity, targetEntity, targetRelation, input: { create, update, where } }: Model.OneHasManyContext & { input: UpdateInputProcessor.UpsertManyInput },
62
- primary: Input.PrimaryValue,
63
- ) {
64
- const result = await this.mapper.update(
65
- targetEntity,
66
- { ...where, [targetRelation.name]: { [entity.primary]: primary } },
67
- {
68
- ...update,
69
- // [targetRelation.name]: {connect: thisPrimary}
70
- },
71
- )
72
- if (result[0].result === MutationResultType.notFoundError) {
73
- return await this.mapper.insert(targetEntity, {
74
- ...create,
75
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
76
- })
77
- }
78
- return result
79
- }
80
-
81
- public async disconnect(
82
- { entity, targetEntity, relation, targetRelation, input }: Model.OneHasManyContext & { input: Input.UniqueWhere },
83
- primary: Input.PrimaryValue,
84
- ) {
85
- return await this.mapper.update(
86
- targetEntity,
87
- { ...input, [targetRelation.name]: { [entity.primary]: primary } },
88
- { [targetRelation.name]: { disconnect: true } },
89
- )
90
- }
91
-
92
- public async delete(
93
- { entity, targetEntity, relation, targetRelation, input }: Model.OneHasManyContext & { input: Input.UniqueWhere },
94
- primary: Input.PrimaryValue,
95
- ) {
96
- return await this.mapper.delete(targetEntity, {
97
- ...input,
98
- [targetRelation.name]: { [entity.primary]: primary },
99
- })
100
- }
101
- }
@@ -1,99 +0,0 @@
1
- import { InsertBuilder } from '../insert'
2
- import { Mapper } from '../Mapper'
3
- import {
4
- ConstraintType,
5
- MutationConstraintViolationError,
6
- MutationEntryNotFoundError,
7
- MutationResultList,
8
- } from '../Result'
9
- import { CheckedPrimary } from '../CheckedPrimary'
10
- import { Input, Model } from '@contember/schema'
11
-
12
- export class OneHasOneInverseCreateInputProcessor {
13
- constructor(
14
- private readonly insertBuilder: InsertBuilder,
15
- private readonly mapper: Mapper,
16
- ) {
17
- }
18
-
19
- public async connect(context: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {
20
- const { targetEntity, input } = context
21
- const primary = await this.insertBuilder.insert
22
- if (!primary) {
23
- return []
24
- }
25
- const owner = await this.mapper.getPrimaryValue(targetEntity, input)
26
- if (!owner) {
27
- return [new MutationEntryNotFoundError([], input)]
28
- }
29
-
30
- return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
31
- }
32
-
33
-
34
- public async create(
35
- context: Model.OneHasOneInverseContext & { input: Input.CreateDataInput },
36
- ) {
37
- const primary = await this.insertBuilder.insert
38
- if (!primary) {
39
- return []
40
- }
41
- return await this.mapper.insert(context.targetEntity, context.input, builder => {
42
- builder.addPredicates([context.targetRelation.name])
43
- builder.addFieldValue(context.targetRelation.name, primary)
44
- })
45
- }
46
-
47
- public async connectOrCreate(
48
- { input, ...context }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },
49
- ) {
50
- const primary = await this.insertBuilder.insert
51
- if (!primary) {
52
- return []
53
- }
54
- const owner = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
55
- if (owner) {
56
- return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
57
- }
58
-
59
- return await this.createInternal({ input: input.create, ...context }, primary)
60
- }
61
-
62
- private async connectInternal(
63
- { entity, targetEntity, targetRelation, relation, input }: Model.OneHasOneInverseContext & { input: CheckedPrimary },
64
- primary: Input.PrimaryValue,
65
- ) {
66
-
67
- const currentInverseSideOfOwner = await this.mapper.selectField(targetEntity, input, targetRelation.name)
68
- const orphanResult: MutationResultList = []
69
- if (currentInverseSideOfOwner) {
70
- if (targetRelation.orphanRemoval) {
71
- const orphanUnique = { [entity.primary]: currentInverseSideOfOwner }
72
- const orphanDelete = await this.mapper.delete(entity, orphanUnique)
73
- orphanResult.push(...orphanDelete)
74
- } else if (!relation.nullable) {
75
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
76
- }
77
- }
78
-
79
- const connectResult = await this.mapper.updateInternal(targetEntity, input, update => {
80
- update.addPredicates([targetRelation.name])
81
- update.addFieldValue(targetRelation.name, primary)
82
- })
83
-
84
- return [
85
- ...connectResult,
86
- ...orphanResult,
87
- ]
88
- }
89
-
90
- private async createInternal(
91
- context: Model.OneHasOneInverseContext & { input: Input.CreateDataInput },
92
- primary: Input.PrimaryValue,
93
- ) {
94
- return await this.mapper.insert(context.targetEntity, context.input, builder => {
95
- builder.addPredicates([context.targetRelation.name])
96
- builder.addFieldValue(context.targetRelation.name, primary)
97
- })
98
- }
99
- }
@@ -1,92 +0,0 @@
1
- import {
2
- ConstraintType,
3
- getInsertPrimary,
4
- MutationConstraintViolationError,
5
- MutationEntryNotFoundError,
6
- MutationResultList,
7
- } from '../Result'
8
- import { InsertBuilder } from '../insert'
9
- import { Mapper } from '../Mapper'
10
- import { Input, Model } from '@contember/schema'
11
- import { AbortDataManipulation } from '../DataManipulationBuilder'
12
-
13
- export class OneHasOneOwningCreateInputProcessor {
14
- constructor(
15
- private readonly insertBuilder: InsertBuilder,
16
- private readonly mapper: Mapper,
17
- ) {
18
- }
19
-
20
- public async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {
21
- const { input, relation, targetEntity } = context
22
- const result: MutationResultList = []
23
- await this.insertBuilder.addFieldValue(relation.name, async () => {
24
- const inverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
25
- if (!inverseSide) {
26
- result.push(new MutationEntryNotFoundError([], input))
27
- return AbortDataManipulation
28
- }
29
- return this.connectInternal({ ...context, input: inverseSide }, result)
30
- })
31
- return result
32
- }
33
-
34
- public async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {
35
- const result: MutationResultList = []
36
- await this.insertBuilder.addFieldValue(context.relation.name, async () => {
37
- return await this.createInternal(context, result)
38
- })
39
- return result
40
- }
41
-
42
- public async connectOrCreate({ input, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {
43
- const result: MutationResultList = []
44
- await this.insertBuilder.addFieldValue(context.relation.name, async () => {
45
- const inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
46
- if (inverseSide) {
47
- return await this.connectInternal({ ...context, input: inverseSide }, result)
48
- }
49
- return await this.createInternal({ ...context, input: input.create }, result)
50
- })
51
- return result
52
- }
53
-
54
- private async createInternal(
55
- context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },
56
- result: MutationResultList,
57
- ) {
58
- const insertResult = await this.mapper.insert(context.targetEntity, context.input)
59
- result.push(...insertResult)
60
- const primary = getInsertPrimary(insertResult)
61
- if (!primary) {
62
- return AbortDataManipulation
63
- }
64
- return primary
65
- }
66
-
67
- private async connectInternal(
68
- { entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.PrimaryValue },
69
- result: MutationResultList,
70
- ) {
71
- const currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {
72
- [relation.name]: { [targetEntity.primary]: input },
73
- })
74
- if (!currentOwnerOfInverseSide) {
75
- return input
76
- }
77
-
78
- if (!relation.nullable) {
79
- result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
80
- return AbortDataManipulation
81
- }
82
-
83
- const currentOwnerUnique = { [entity.primary]: currentOwnerOfInverseSide }
84
- const currentOwnerDisconnectResult = await this.mapper.updateInternal(entity, currentOwnerUnique, builder => {
85
- builder.addPredicates([relation.name])
86
- builder.addFieldValue(relation.name, null)
87
- })
88
- result.push(...currentOwnerDisconnectResult)
89
-
90
- return input
91
- }
92
- }
@@ -1,253 +0,0 @@
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
- NothingToDoReason,
11
- } from '../Result'
12
- import { Mapper } from '../Mapper'
13
- import { UpdateBuilder } from '../update/UpdateBuilder'
14
- import { CheckedPrimary } from '../CheckedPrimary'
15
- import { AbortDataManipulation } from '../DataManipulationBuilder'
16
-
17
- export class OneHasOneOwningUpdateInputProcessor {
18
- constructor(
19
- private readonly primaryValue: Input.PrimaryValue,
20
- private readonly mapper: Mapper,
21
- private readonly updateBuilder: UpdateBuilder,
22
- ) {
23
- }
24
-
25
- public async connect(context: Model.OneHasOneOwningContext & { input: Input.UniqueWhere }) {
26
- const result: MutationResultList = []
27
- let currentInverseSide: Input.PrimaryValue | undefined
28
-
29
- const { entity, relation, targetEntity, targetRelation, input } = context
30
- const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
31
- const newInverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
32
- if (!newInverseSide) {
33
- result.push(new MutationEntryNotFoundError([], input))
34
- return AbortDataManipulation
35
- }
36
- currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
37
- return await this.connectInternal(context, currentInverseSide, newInverseSide, result)
38
- })
39
-
40
- if (newInverseSide) {
41
- result.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))
42
- }
43
-
44
- return result
45
- }
46
-
47
- public async create(context: Model.OneHasOneOwningContext & { input: Input.CreateDataInput }) {
48
- const result: MutationResultList = []
49
- let currentInverseSide: Input.PrimaryValue | undefined
50
- const { entity, relation, targetEntity, targetRelation } = context
51
- await this.updateBuilder.addFieldValue(relation.name, async () => {
52
- currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
53
- // orphan removal handled bellow
54
- return await this.createInternal(context, currentInverseSide, result)
55
- })
56
-
57
- result.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))
58
- return result
59
- }
60
-
61
- public async connectOrCreate({ input: { connect, create }, ...context }: Model.OneHasOneOwningContext & { input: Input.ConnectOrCreateInput }) {
62
- const result: MutationResultList = []
63
- let currentInverseSide: Input.PrimaryValue | undefined
64
-
65
- const { relation, targetRelation, targetEntity, entity } = context
66
- const newInverseSide = await this.updateBuilder.addFieldValue(relation.name, async () => {
67
- const newInverseSide = await this.mapper.getPrimaryValue(targetEntity, connect)
68
- currentInverseSide = await this.getCurrentInverseSide(targetRelation, relation, entity)
69
- if (newInverseSide) {
70
- return await this.connectInternal(context, currentInverseSide, newInverseSide, result)
71
- }
72
- return await this.createInternal({ ...context, input: create }, currentInverseSide, result)
73
- })
74
-
75
- if (newInverseSide) {
76
- result.push(...(await this.cleanupOrphan(relation, targetEntity, currentInverseSide)))
77
- }
78
-
79
- return result
80
- }
81
-
82
- private async createInternal(
83
- { targetEntity, targetRelation, relation, input }: Model.OneHasOneOwningContext & { input: Input.CreateDataInput },
84
- currentInverseSide: Input.PrimaryValue | undefined,
85
- result: MutationResultList,
86
- ) {
87
- if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
88
- result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
89
- return AbortDataManipulation
90
- }
91
-
92
- const insertResult = await this.mapper.insert(targetEntity, input)
93
- result.push(...insertResult)
94
- const newInverseSide = getInsertPrimary(insertResult)
95
- if (newInverseSide) {
96
- return newInverseSide
97
- }
98
- return AbortDataManipulation
99
- }
100
-
101
- private async connectInternal(
102
- { targetEntity, targetRelation, relation, entity }: Model.OneHasOneOwningContext,
103
- currentInverseSide: Input.PrimaryValue | undefined,
104
- newInverseSide: Input.PrimaryValue,
105
- result: MutationResultList,
106
- ) {
107
-
108
- if (currentInverseSide === newInverseSide) {
109
- result.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists))
110
- return undefined
111
- }
112
-
113
- const currentOwnerOfNewInverseSide = await this.mapper.getPrimaryValue(entity, {
114
- [relation.name]: { [targetEntity.primary]: newInverseSide },
115
- })
116
-
117
- if (currentOwnerOfNewInverseSide === this.primaryValue) {
118
- result.push(new MutationNothingToDo([], NothingToDoReason.alreadyExists))
119
- return undefined
120
- }
121
-
122
- // orphan removal handled bellow
123
- if (targetRelation && !targetRelation.nullable && !relation.orphanRemoval && currentInverseSide) {
124
- result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
125
- return AbortDataManipulation
126
- }
127
-
128
- if (currentOwnerOfNewInverseSide) {
129
- if (!relation.nullable) {
130
- result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
131
- return AbortDataManipulation
132
- }
133
-
134
- const currentOwnerDisconnect = await this.mapper.updateInternal(
135
- entity,
136
- {
137
- [entity.primary]: currentOwnerOfNewInverseSide,
138
- },
139
- builder => {
140
- builder.addPredicates([relation.name])
141
- builder.addFieldValue(relation.name, null)
142
- },
143
- )
144
- result.push(...currentOwnerDisconnect)
145
- }
146
- return newInverseSide
147
- }
148
-
149
- private async getCurrentInverseSide(targetRelation: Model.OneHasOneInverseRelation | null, relation: Model.OneHasOneOwningRelation, entity: Model.Entity) {
150
- if ((targetRelation && !targetRelation.nullable) || relation.orphanRemoval) {
151
- return this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
152
- }
153
- return undefined
154
- }
155
-
156
- private async cleanupOrphan(relation: Model.OneHasOneOwningRelation, targetEntity: Model.Entity, currentInverseSide: Input.PrimaryValue | undefined) {
157
- if (relation.orphanRemoval && currentInverseSide) {
158
- await this.updateBuilder.update
159
- return await this.mapper.delete(targetEntity, { [targetEntity.primary]: currentInverseSide })
160
- }
161
- return []
162
- }
163
-
164
- public async update({ entity, relation, targetEntity, input }: Model.OneHasOneOwningContext & { input: Input.UpdateDataInput }) {
165
- const inversePrimary = await this.mapper.selectField(
166
- entity,
167
- { [entity.primary]: this.primaryValue },
168
- relation.name,
169
- )
170
- if (!inversePrimary) {
171
- return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
172
- }
173
- return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)
174
- }
175
-
176
- public async upsert({ entity, relation, targetEntity, input: { create, update } }: Model.OneHasOneOwningContext & { input: UpdateInputProcessor.UpsertInput }) {
177
- const select = this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
178
-
179
- const result: MutationResultList = []
180
- //addColumnData has to be called synchronously
181
- await this.updateBuilder.addFieldValue(relation.name, async () => {
182
- const primary = await select
183
- if (primary) {
184
- return undefined
185
- }
186
- const insertResult = await this.mapper.insert(targetEntity, create)
187
- const insertPrimary = getInsertPrimary(insertResult)
188
- if (insertPrimary) {
189
- return insertPrimary
190
- }
191
- result.push(...insertResult)
192
- return AbortDataManipulation
193
- })
194
-
195
- const inversePrimary = await select
196
- if (inversePrimary) {
197
- return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)
198
- }
199
- return result
200
- }
201
-
202
- public async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {
203
- if (!relation.nullable) {
204
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
205
- }
206
- const result: MutationResultList = []
207
-
208
- const currentInverseSide = (targetRelation && !targetRelation.nullable) || relation.orphanRemoval
209
- ? this.mapper.selectField(entity, { [entity.primary]: this.primaryValue }, relation.name)
210
- : Promise.resolve(undefined)
211
-
212
- this.updateBuilder.addFieldValue(relation.name, async () => {
213
- const inversePrimary = await currentInverseSide
214
- if (inversePrimary && targetRelation && !targetRelation.nullable && !relation.orphanRemoval) {
215
- result.push(new MutationConstraintViolationError([], ConstraintType.notNull))
216
- return AbortDataManipulation
217
- }
218
- return null
219
- })
220
- if (relation.orphanRemoval) {
221
- const inversePrimary = await currentInverseSide
222
- if (inversePrimary) {
223
- await this.updateBuilder.update
224
- const deleteOrphanedInverseSide = await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })
225
- result.push(...deleteOrphanedInverseSide)
226
- }
227
- }
228
- return result
229
- }
230
-
231
- public async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneOwningContext & { input: undefined }) {
232
- if (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {
233
- return [new MutationConstraintViolationError([], ConstraintType.notNull)]
234
- }
235
- if (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {
236
- // eslint-disable-next-line no-console
237
- console.error(
238
- '[DEPRECATED] You are deleting an entity over the relation where onDelete behaviour is set to restrict. This will fail in next version.',
239
- )
240
- this.updateBuilder.addFieldValue(relation.name, null)
241
- }
242
- const targetPrimary = await this.mapper.selectField(
243
- entity,
244
- { [entity.primary]: this.primaryValue },
245
- relation.name,
246
- )
247
- if (!targetPrimary) {
248
- return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
249
- }
250
- await this.updateBuilder.update
251
- return await this.mapper.delete(targetEntity, new CheckedPrimary(targetPrimary))
252
- }
253
- }