@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
@@ -2,37 +2,38 @@ import { Input, Model, Value } from '@contember/schema'
2
2
  import { Mapper } from '../Mapper'
3
3
  import { InsertBuilder } from './InsertBuilder'
4
4
  import { Providers, resolveColumnValue } from '@contember/schema-utils'
5
- import * as Context from '../../inputProcessing'
6
5
  import { CreateInputProcessor } from '../../inputProcessing'
7
6
  import { MutationResultList } from '../Result'
8
7
  import { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'
9
- import { OneHasOneInverseCreateInputProcessor } from '../relations/OneHasOneInverseCreateInputProcessor'
10
- import { OneHasOneOwningCreateInputProcessor } from '../relations/OneHasOneOwningCreateInputProcessor'
11
- import { ManyHasManyInputProcessor } from '../relations/ManyHasManyInputProcessor'
12
- import { ManyHasOneInputProcessor } from '../relations/ManyHasOneInputProcessor'
13
- import { OneHasManyInputProcessor } from '../relations/OneHasManyInputProcessor'
8
+ import { OneHasOneInverseCreateInputProcessor } from './relations/OneHasOneInverseCreateInputProcessor'
9
+ import { OneHasOneOwningCreateInputProcessor } from './relations/OneHasOneOwningCreateInputProcessor'
10
+ import { OneHasManyCreateInputProcessor } from './relations/OneHasManyCreateInputProcessor'
11
+ import { ManyHasOneCreateInputProcessor } from './relations/ManyHasOneCreateInputProcessor'
12
+ import { ManyHasManyCreateInputProcessor } from './relations/ManyHasManyCreateInputProcessor'
14
13
 
15
- export class SqlCreateInputProcessor implements CreateInputProcessor<MutationResultList> {
14
+
15
+ export type SqlCreateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue }) => Promise<MutationResultList>)
16
+ export class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateInputProcessorResult> {
16
17
 
17
18
  private oneHasOneInverseCreateInputProcessor: OneHasOneInverseCreateInputProcessor
18
19
  private oneHasOneOwningCreateInputProcessor: OneHasOneOwningCreateInputProcessor
19
- private oneHasManyCreateInputProcessor: OneHasManyInputProcessor
20
- private manyHasOneCreateInputProcessor: ManyHasOneInputProcessor
21
- private manyHasManyCreateInputProcessor: ManyHasManyInputProcessor
20
+ private oneHasManyCreateInputProcessor: OneHasManyCreateInputProcessor
21
+ private manyHasOneCreateInputProcessor: ManyHasOneCreateInputProcessor
22
+ private manyHasManyCreateInputProcessor: ManyHasManyCreateInputProcessor
22
23
 
23
24
  constructor(
24
25
  private readonly insertBuilder: InsertBuilder,
25
26
  private readonly mapper: Mapper,
26
27
  private readonly providers: Providers,
27
28
  ) {
28
- this.oneHasOneInverseCreateInputProcessor = new OneHasOneInverseCreateInputProcessor(this.insertBuilder, this.mapper)
29
- this.oneHasOneOwningCreateInputProcessor = new OneHasOneOwningCreateInputProcessor(this.insertBuilder, this.mapper)
30
- this.oneHasManyCreateInputProcessor = new OneHasManyInputProcessor(this.mapper)
31
- this.manyHasOneCreateInputProcessor = new ManyHasOneInputProcessor(this.mapper)
32
- this.manyHasManyCreateInputProcessor = new ManyHasManyInputProcessor(this.mapper)
29
+ this.oneHasOneInverseCreateInputProcessor = new OneHasOneInverseCreateInputProcessor(this.mapper)
30
+ this.oneHasOneOwningCreateInputProcessor = new OneHasOneOwningCreateInputProcessor(this.mapper, this.insertBuilder)
31
+ this.oneHasManyCreateInputProcessor = new OneHasManyCreateInputProcessor(this.mapper)
32
+ this.manyHasOneCreateInputProcessor = new ManyHasOneCreateInputProcessor(this.mapper, this.insertBuilder)
33
+ this.manyHasManyCreateInputProcessor = new ManyHasManyCreateInputProcessor(this.mapper)
33
34
  }
34
35
 
35
- public async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<MutationResultList> {
36
+ public async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {
36
37
  this.insertBuilder.addFieldValue(
37
38
  context.column.name,
38
39
  ((): Value.GenericValueLike<Value.AtomicValue | undefined> => {
@@ -42,90 +43,36 @@ export class SqlCreateInputProcessor implements CreateInputProcessor<MutationRes
42
43
  return []
43
44
  }
44
45
 
45
- manyHasManyInverse: CreateInputProcessor<MutationResultList>['manyHasManyInverse'] = {
46
- connect: hasManyProcessor(async ctx => {
47
- const primary = await this.insertBuilder.insert
48
- if (!primary) {
49
- return []
50
- }
51
- return this.manyHasManyCreateInputProcessor.connect(ctx, primary)
52
- }),
53
- create: hasManyProcessor(async ctx => {
54
- const primary = await this.insertBuilder.insert
55
- if (!primary) {
56
- return []
57
- }
58
- return this.manyHasManyCreateInputProcessor.create(ctx, primary)
59
- }),
60
- connectOrCreate: hasManyProcessor(async ctx => {
61
- const primary = await this.insertBuilder.insert
62
- if (!primary) {
63
- return []
64
- }
65
- return this.manyHasManyCreateInputProcessor.connectOrCreate(ctx, primary)
66
- }),
46
+ manyHasManyInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyInverse'] = {
47
+ connect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),
48
+ create: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),
49
+ connectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),
67
50
  }
68
51
 
69
- manyHasManyOwning: CreateInputProcessor<MutationResultList>['manyHasManyOwning'] = {
70
- connect: hasManyProcessor(async ctx => {
71
- const primary = await this.insertBuilder.insert
72
- if (!primary) {
73
- return []
74
- }
75
- return this.manyHasManyCreateInputProcessor.connect(ctx, primary)
76
- }),
77
- create: hasManyProcessor(async ctx => {
78
- const primary = await this.insertBuilder.insert
79
- if (!primary) {
80
- return []
81
- }
82
- return this.manyHasManyCreateInputProcessor.create(ctx, primary)
83
- }),
84
- connectOrCreate: hasManyProcessor(async ctx => {
85
- const primary = await this.insertBuilder.insert
86
- if (!primary) {
87
- return []
88
- }
89
- return this.manyHasManyCreateInputProcessor.connectOrCreate(ctx, primary)
90
- }),
52
+ manyHasManyOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasManyOwning'] = {
53
+ connect: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connect(ctx)),
54
+ create: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.create(ctx)),
55
+ connectOrCreate: hasManyProcessor(ctx => this.manyHasManyCreateInputProcessor.connectOrCreate(ctx)),
91
56
  }
92
57
 
93
- manyHasOne: CreateInputProcessor<MutationResultList>['manyHasOne'] = {
58
+ manyHasOne: CreateInputProcessor<SqlCreateInputProcessorResult>['manyHasOne'] = {
94
59
  nothing: async ctx => {
95
60
  this.insertBuilder.addFieldValue(ctx.relation.name, null)
96
61
  return []
97
62
  },
98
- connect: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connect(ctx, this.insertBuilder)),
99
- create: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.create(ctx, this.insertBuilder)),
100
- connectOrCreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connectOrCreate(ctx, this.insertBuilder)),
63
+ connect: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connect(ctx)),
64
+ create: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.create(ctx)),
65
+ connectOrCreate: hasOneProcessor(ctx => this.manyHasOneCreateInputProcessor.connectOrCreate(ctx)),
101
66
  }
102
67
 
103
- oneHasMany: CreateInputProcessor<MutationResultList>['oneHasMany'] = {
104
- connect: hasManyProcessor(async ctx => {
105
- const primary = await this.insertBuilder.insert
106
- if (!primary) {
107
- return []
108
- }
109
- return this.oneHasManyCreateInputProcessor.connect(ctx, primary)
110
- }),
111
- create: hasManyProcessor(async ctx => {
112
- const primary = await this.insertBuilder.insert
113
- if (!primary) {
114
- return []
115
- }
116
- return this.oneHasManyCreateInputProcessor.create(ctx, primary)
117
- }),
118
- connectOrCreate: hasManyProcessor(async ctx => {
119
- const primary = await this.insertBuilder.insert
120
- if (!primary) {
121
- return []
122
- }
123
- return this.oneHasManyCreateInputProcessor.connectOrCreate(ctx, primary)
124
- }),
68
+ oneHasMany: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasMany'] = {
69
+ connect: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connect(ctx)),
70
+ create: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.create(ctx)),
71
+ connectOrCreate: hasManyProcessor(ctx => this.oneHasManyCreateInputProcessor.connectOrCreate(ctx)),
125
72
  }
126
73
 
127
74
 
128
- oneHasOneOwning: CreateInputProcessor<MutationResultList>['oneHasOneOwning'] = {
75
+ oneHasOneOwning: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneOwning'] = {
129
76
  nothing: async ctx => {
130
77
  this.insertBuilder.addFieldValue(ctx.relation.name, null)
131
78
  return []
@@ -135,7 +82,7 @@ export class SqlCreateInputProcessor implements CreateInputProcessor<MutationRes
135
82
  connectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningCreateInputProcessor.connectOrCreate(ctx)),
136
83
  }
137
84
 
138
- oneHasOneInverse: CreateInputProcessor<MutationResultList>['oneHasOneInverse'] = {
85
+ oneHasOneInverse: CreateInputProcessor<SqlCreateInputProcessorResult>['oneHasOneInverse'] = {
139
86
  connect: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connect(ctx)),
140
87
  create: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.create(ctx)),
141
88
  connectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseCreateInputProcessor.connectOrCreate(ctx)),
@@ -0,0 +1,59 @@
1
+ import { Input, Model } from '@contember/schema'
2
+ import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
3
+ import { Mapper } from '../../Mapper'
4
+ import { CreateInputProcessor } from '../../../inputProcessing'
5
+ import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
6
+
7
+ type Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext
8
+
9
+ export class ManyHasManyCreateInputProcessor implements CreateInputProcessor.HasManyRelationProcessor<Context, SqlCreateInputProcessorResult> {
10
+
11
+ constructor(
12
+ private readonly mapper: Mapper,
13
+ ) {
14
+ }
15
+
16
+ public async connect(
17
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
18
+ ): Promise<SqlCreateInputProcessorResult> {
19
+ return async ({ primary }) => {
20
+ const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
21
+ if (!otherPrimary) {
22
+ return [new MutationEntryNotFoundError([], input)]
23
+ }
24
+ return await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
25
+ }
26
+ }
27
+
28
+ public async create(
29
+ { entity, targetEntity, relation, input }: Context & { input: Input.CreateDataInput },
30
+ ) {
31
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
32
+ const insertResult = await this.mapper.insert(targetEntity, input)
33
+ const insertPrimary = getInsertPrimary(insertResult)
34
+ if (!insertPrimary) {
35
+ return insertResult
36
+ }
37
+ return [
38
+ ...insertResult,
39
+ ...(await this.mapper.connectJunction(entity, relation, primary, insertPrimary)),
40
+ ]
41
+ }
42
+ }
43
+
44
+ public async connectOrCreate(
45
+ context: Context & { input: Input.ConnectOrCreateInput },
46
+ ) {
47
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
48
+ let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
49
+ if (!otherPrimary) {
50
+ const insertResult = await this.mapper.insert(context.targetEntity, context.input.create)
51
+ otherPrimary = getInsertPrimary(insertResult)
52
+ if (!otherPrimary) {
53
+ return insertResult
54
+ }
55
+ }
56
+ return await this.mapper.connectJunction(context.entity, context.relation, primary, otherPrimary)
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,57 @@
1
+ import { Input, Model } from '@contember/schema'
2
+ import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
3
+ import { Mapper } from '../../Mapper'
4
+ import { CreateInputProcessor } from '../../../inputProcessing'
5
+ import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
6
+ import { InsertBuilder } from '../InsertBuilder'
7
+
8
+ type Context = Model.ManyHasOneContext
9
+
10
+ export class ManyHasOneCreateInputProcessor implements CreateInputProcessor.HasManyRelationProcessor<Context, SqlCreateInputProcessorResult> {
11
+
12
+ constructor(
13
+ private readonly mapper: Mapper,
14
+ private readonly insertBuilder: InsertBuilder,
15
+ ) {
16
+ }
17
+ public async connect(
18
+ { targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
19
+ ) {
20
+ const value = await this.mapper.getPrimaryValue(targetEntity, input)
21
+ if (!value) {
22
+ return [new MutationEntryNotFoundError([], input)]
23
+ }
24
+ this.insertBuilder.addFieldValue(relation.name, value)
25
+ return []
26
+ }
27
+
28
+ public async create(
29
+ { relation, targetEntity, input }: Context & { input: Input.CreateDataInput },
30
+ ) {
31
+ const insertResult = await this.mapper.insert(targetEntity, input)
32
+ const value = getInsertPrimary(insertResult)
33
+ if (!value) {
34
+ return insertResult
35
+ }
36
+ this.insertBuilder.addFieldValue(relation.name, value)
37
+ return []
38
+ }
39
+
40
+ public async connectOrCreate(
41
+ { input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },
42
+ ) {
43
+ const value = await this.mapper.getPrimaryValue(targetEntity, connect)
44
+ if (value) {
45
+ this.insertBuilder.addFieldValue(relation.name, value)
46
+ } else {
47
+ const insertResult = await this.mapper.insert(targetEntity, create)
48
+ const primary = getInsertPrimary(insertResult)
49
+ if (!primary) {
50
+ return insertResult
51
+ }
52
+
53
+ this.insertBuilder.addFieldValue(relation.name, primary)
54
+ }
55
+ return []
56
+ }
57
+ }
@@ -0,0 +1,50 @@
1
+ import { Input, Model } from '@contember/schema'
2
+ import { Mapper } from '../../Mapper'
3
+ import { CreateInputProcessor } from '../../../inputProcessing'
4
+ import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
5
+
6
+ type Context = Model.OneHasManyContext
7
+
8
+ export class OneHasManyCreateInputProcessor implements CreateInputProcessor.HasManyRelationProcessor<Context, SqlCreateInputProcessorResult> {
9
+
10
+ constructor(
11
+ private readonly mapper: Mapper,
12
+ ) {
13
+ }
14
+ public async connect(
15
+ { entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },
16
+ ) {
17
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
18
+ return await this.mapper.update(targetEntity, input, {
19
+ [targetRelation.name]: { connect: { [entity.primary]: primary } },
20
+ })
21
+ }
22
+ }
23
+
24
+ public async create(
25
+ { entity, targetEntity, targetRelation, input }: Context & { input: Input.CreateDataInput },
26
+ ) {
27
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
28
+ return await this.mapper.insert(targetEntity, {
29
+ ...input,
30
+ [targetRelation.name]: { connect: { [entity.primary]: primary } },
31
+ })
32
+ }
33
+ }
34
+
35
+ public async connectOrCreate(
36
+ { entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: Input.ConnectOrCreateInput },
37
+ ) {
38
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
39
+ const connectData = {
40
+ [targetRelation.name]: {
41
+ connect: { [entity.primary]: primary },
42
+ },
43
+ }
44
+ return await this.mapper.upsert(targetEntity, connect, connectData, {
45
+ ...create,
46
+ ...connectData,
47
+ })
48
+ }
49
+ }
50
+ }
@@ -0,0 +1,91 @@
1
+ import { Mapper } from '../../Mapper'
2
+ import { ConstraintType, MutationConstraintViolationError, MutationEntryNotFoundError, MutationResultList } from '../../Result'
3
+ import { CheckedPrimary } from '../../CheckedPrimary'
4
+ import { Input, Model } from '@contember/schema'
5
+ import { CreateInputProcessor } from '../../../inputProcessing'
6
+ import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
7
+
8
+ type Context = Model.OneHasOneInverseContext
9
+
10
+ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcessor.HasOneRelationProcessor<Context, SqlCreateInputProcessorResult> {
11
+
12
+ constructor(
13
+ private readonly mapper: Mapper,
14
+ ) {
15
+ }
16
+
17
+ public async connect(context: Context & { input: Input.UniqueWhere }) {
18
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
19
+ const { targetEntity, input } = context
20
+ const owner = await this.mapper.getPrimaryValue(targetEntity, input)
21
+ if (!owner) {
22
+ return [new MutationEntryNotFoundError([], input)]
23
+ }
24
+
25
+ return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
26
+ }
27
+ }
28
+
29
+
30
+ public async create(
31
+ { input, targetRelation, targetEntity }: Context & { input: Input.CreateDataInput },
32
+ ) {
33
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
34
+ return await this.mapper.insert(targetEntity, input, builder => {
35
+ builder.addPredicates([targetRelation.name])
36
+ builder.addFieldValue(targetRelation.name, primary)
37
+ })
38
+ }
39
+ }
40
+
41
+ public async connectOrCreate(
42
+ { input, ...context }: Context & { input: Input.ConnectOrCreateInput },
43
+ ) {
44
+ return async ({ primary }: { primary: Input.PrimaryValue }) => {
45
+ const owner = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
46
+ if (owner) {
47
+ return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
48
+ }
49
+
50
+ return await this.createInternal({ input: input.create, ...context }, primary)
51
+ }
52
+ }
53
+
54
+ private async connectInternal(
55
+ { entity, targetEntity, targetRelation, relation, input }: Context & { input: CheckedPrimary },
56
+ primary: Input.PrimaryValue,
57
+ ) {
58
+
59
+ const currentInverseSideOfOwner = await this.mapper.selectField(targetEntity, input, targetRelation.name)
60
+ const orphanResult: MutationResultList = []
61
+ if (currentInverseSideOfOwner) {
62
+ if (targetRelation.orphanRemoval) {
63
+ const orphanUnique = { [entity.primary]: currentInverseSideOfOwner }
64
+ const orphanDelete = await this.mapper.delete(entity, orphanUnique)
65
+ orphanResult.push(...orphanDelete)
66
+ } else if (!relation.nullable) {
67
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
68
+ }
69
+ }
70
+
71
+ const connectResult = await this.mapper.updateInternal(targetEntity, input, update => {
72
+ update.addPredicates([targetRelation.name])
73
+ update.addFieldValue(targetRelation.name, primary)
74
+ })
75
+
76
+ return [
77
+ ...connectResult,
78
+ ...orphanResult,
79
+ ]
80
+ }
81
+
82
+ private async createInternal(
83
+ context: Context & { input: Input.CreateDataInput },
84
+ primary: Input.PrimaryValue,
85
+ ) {
86
+ return await this.mapper.insert(context.targetEntity, context.input, builder => {
87
+ builder.addPredicates([context.targetRelation.name])
88
+ builder.addFieldValue(context.targetRelation.name, primary)
89
+ })
90
+ }
91
+ }
@@ -0,0 +1,87 @@
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 { CreateInputProcessor } from '../../../inputProcessing'
12
+ import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
13
+
14
+ type Context = Model.OneHasOneOwningContext
15
+
16
+ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor.HasOneRelationProcessor<Context, SqlCreateInputProcessorResult>{
17
+ constructor(
18
+ private readonly mapper: Mapper,
19
+ private readonly insertBuilder: InsertBuilder,
20
+ ) {
21
+ }
22
+
23
+ public async connect(context: Context & { input: Input.UniqueWhere }) {
24
+ const { input, relation, targetEntity } = context
25
+ const inverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
26
+ if (!inverseSide) {
27
+ return [new MutationEntryNotFoundError([], input)]
28
+ }
29
+ const disconnectResult = await this.disconnectCurrentOwner({ ...context, input: inverseSide })
30
+ if (disconnectResult.some(it => it.error)) {
31
+ return disconnectResult
32
+ }
33
+ this.insertBuilder.addFieldValue(relation.name, inverseSide)
34
+ return disconnectResult
35
+ }
36
+
37
+ public async create(context: Context & { input: Input.CreateDataInput }) {
38
+ const insertResult = await this.mapper.insert(context.targetEntity, context.input)
39
+ const primary = getInsertPrimary(insertResult)
40
+ if (!primary) {
41
+ return insertResult
42
+ }
43
+ this.insertBuilder.addFieldValue(context.relation.name, primary)
44
+ return []
45
+ }
46
+
47
+ public async connectOrCreate({ input, ...context }: Context & { input: Input.ConnectOrCreateInput }) {
48
+ const inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
49
+ if (inverseSide) {
50
+ this.insertBuilder.addFieldValue(context.relation.name, inverseSide)
51
+ const disconnectResult = await this.disconnectCurrentOwner({ ...context, input: inverseSide })
52
+ if (disconnectResult.some(it => it.error)) {
53
+ return disconnectResult
54
+ }
55
+ return []
56
+
57
+ } else {
58
+ const insertResult = await this.mapper.insert(context.targetEntity, input.create)
59
+ const primary = getInsertPrimary(insertResult)
60
+ if (primary) {
61
+ this.insertBuilder.addFieldValue(context.relation.name, primary)
62
+ }
63
+ return insertResult
64
+ }
65
+ }
66
+
67
+ private async disconnectCurrentOwner(
68
+ { entity, relation, targetEntity, input }: Context & { input: Input.PrimaryValue },
69
+ ): Promise<MutationResultList> {
70
+ const currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {
71
+ [relation.name]: { [targetEntity.primary]: input },
72
+ })
73
+ if (!currentOwnerOfInverseSide) {
74
+ return []
75
+ }
76
+
77
+ if (!relation.nullable) {
78
+ return [new MutationConstraintViolationError([], ConstraintType.notNull)]
79
+ }
80
+
81
+ const currentOwnerUnique = { [entity.primary]: currentOwnerOfInverseSide }
82
+ return await this.mapper.updateInternal(entity, currentOwnerUnique, builder => {
83
+ builder.addPredicates([relation.name])
84
+ builder.addFieldValue(relation.name, null)
85
+ })
86
+ }
87
+ }
@@ -2,20 +2,22 @@ import { Input, Model, Value } from '@contember/schema'
2
2
  import { Mapper } from '../Mapper'
3
3
  import { UpdateBuilder } from './UpdateBuilder'
4
4
  import { hasManyProcessor, hasOneProcessor } from '../MutationProcessorHelper'
5
- import { OneHasOneInverseUpdateInputProcessor } from '../relations/OneHasOneInverseUpdateInputProcessor'
6
- import { OneHasOneOwningUpdateInputProcessor } from '../relations/OneHasOneOwningUpdateInputProcessor'
7
- import { OneHasManyInputProcessor } from '../relations/OneHasManyInputProcessor'
8
- import { ManyHasOneInputProcessor } from '../relations/ManyHasOneInputProcessor'
9
- import { ManyHasManyInputProcessor } from '../relations/ManyHasManyInputProcessor'
5
+ import { OneHasOneInverseUpdateInputProcessor } from './relations/OneHasOneInverseUpdateInputProcessor'
6
+ import { OneHasOneOwningUpdateInputProcessor } from './relations/OneHasOneOwningUpdateInputProcessor'
7
+ import { OneHasManyUpdateInputProcessor } from './relations/OneHasManyUpdateInputProcessor'
8
+ import { ManyHasManyUpdateInputProcessor } from './relations/ManyHasManyUpdateInputProcessor'
10
9
  import { UpdateInputProcessor } from '../../inputProcessing'
11
10
  import { MutationResultList } from '../Result'
11
+ import { ManyHasOneUpdateInputProcessor } from './relations/ManyHasOneUpdateInputProcessor'
12
12
 
13
- export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationResultList> {
13
+ export type SqlUpdateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue}) => Promise<MutationResultList>)
14
+
15
+ export class SqlUpdateInputProcessor implements UpdateInputProcessor<SqlUpdateInputProcessorResult> {
14
16
  private oneHasOneInverseUpdateInputProcessor: OneHasOneInverseUpdateInputProcessor
15
17
  private oneHasOneOwningUpdateInputProcessor: OneHasOneOwningUpdateInputProcessor
16
- private oneHasManyUpdateInputProcessor: OneHasManyInputProcessor
17
- private manyHasOneUpdateInputProcessor: ManyHasOneInputProcessor
18
- private manyHasManyUpdateInputProcessor: ManyHasManyInputProcessor
18
+ private oneHasManyUpdateInputProcessor: OneHasManyUpdateInputProcessor
19
+ private manyHasOneUpdateInputProcessor: ManyHasOneUpdateInputProcessor
20
+ private manyHasManyUpdateInputProcessor: ManyHasManyUpdateInputProcessor
19
21
 
20
22
  constructor(
21
23
  private readonly primaryValue: Input.PrimaryValue,
@@ -25,9 +27,9 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationRes
25
27
  ) {
26
28
  this.oneHasOneInverseUpdateInputProcessor = new OneHasOneInverseUpdateInputProcessor(this.primaryValue, this.mapper)
27
29
  this.oneHasOneOwningUpdateInputProcessor = new OneHasOneOwningUpdateInputProcessor(this.primaryValue, this.mapper, this.updateBuilder)
28
- this.oneHasManyUpdateInputProcessor = new OneHasManyInputProcessor(this.mapper)
29
- this.manyHasOneUpdateInputProcessor = new ManyHasOneInputProcessor(this.mapper)
30
- this.manyHasManyUpdateInputProcessor = new ManyHasManyInputProcessor(this.mapper)
30
+ this.oneHasManyUpdateInputProcessor = new OneHasManyUpdateInputProcessor(this.mapper)
31
+ this.manyHasOneUpdateInputProcessor = new ManyHasOneUpdateInputProcessor(this.mapper, this.updateBuilder, this.primaryValue)
32
+ this.manyHasManyUpdateInputProcessor = new ManyHasManyUpdateInputProcessor(this.mapper)
31
33
  }
32
34
 
33
35
  public column({ entity, column }: Model.ColumnContext) {
@@ -37,47 +39,47 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationRes
37
39
  return Promise.resolve([])
38
40
  }
39
41
 
40
- manyHasManyInverse: UpdateInputProcessor<MutationResultList>['manyHasManyInverse'] = {
41
- connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx, this.primaryValue)),
42
- create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx, this.primaryValue)),
43
- connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx, this.primaryValue)),
44
- update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx, this.primaryValue)),
45
- upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx, this.primaryValue)),
46
- delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx, this.primaryValue)),
47
- disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx, this.primaryValue)),
42
+ manyHasManyInverse: UpdateInputProcessor<SqlUpdateInputProcessorResult>['manyHasManyInverse'] = {
43
+ connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx)),
44
+ create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx)),
45
+ connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx)),
46
+ update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx)),
47
+ upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx)),
48
+ delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx)),
49
+ disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx)),
48
50
  }
49
51
 
50
- manyHasManyOwning: UpdateInputProcessor<MutationResultList>['manyHasManyOwning'] = {
51
- connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx, this.primaryValue)),
52
- create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx, this.primaryValue)),
53
- connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx, this.primaryValue)),
54
- update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx, this.primaryValue)),
55
- upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx, this.primaryValue)),
56
- delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx, this.primaryValue)),
57
- disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx, this.primaryValue)),
52
+ manyHasManyOwning: UpdateInputProcessor<SqlUpdateInputProcessorResult>['manyHasManyOwning'] = {
53
+ connect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connect(ctx)),
54
+ create: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.create(ctx)),
55
+ connectOrCreate: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.connectOrCreate(ctx)),
56
+ update: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.update(ctx)),
57
+ upsert: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.upsert(ctx)),
58
+ delete: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.delete(ctx)),
59
+ disconnect: hasManyProcessor(ctx => this.manyHasManyUpdateInputProcessor.disconnect(ctx)),
58
60
  }
59
61
 
60
- manyHasOne: UpdateInputProcessor<MutationResultList>['manyHasOne'] = {
61
- connect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connect(ctx, this.updateBuilder)),
62
- create: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.create(ctx, this.updateBuilder)),
63
- connectOrCreate: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connectOrCreate(ctx, this.updateBuilder)),
64
- update: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.update(ctx, this.primaryValue)),
65
- upsert: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.upsert(ctx, this.updateBuilder, this.primaryValue)),
66
- delete: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.delete(ctx, this.updateBuilder, this.primaryValue)),
67
- disconnect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.disconnect(ctx, this.updateBuilder)),
62
+ manyHasOne: UpdateInputProcessor<SqlUpdateInputProcessorResult>['manyHasOne'] = {
63
+ connect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connect(ctx)),
64
+ create: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.create(ctx)),
65
+ connectOrCreate: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.connectOrCreate(ctx)),
66
+ update: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.update(ctx)),
67
+ upsert: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.upsert(ctx)),
68
+ delete: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.delete(ctx)),
69
+ disconnect: hasOneProcessor(ctx => this.manyHasOneUpdateInputProcessor.disconnect(ctx)),
68
70
  }
69
71
 
70
- oneHasMany: UpdateInputProcessor<MutationResultList>['oneHasMany'] = {
71
- connect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connect(ctx, this.primaryValue)),
72
- create: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.create(ctx, this.primaryValue)),
73
- connectOrCreate: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connectOrCreate(ctx, this.primaryValue)),
74
- update: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.update(ctx, this.primaryValue)),
75
- upsert: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.upsert(ctx, this.primaryValue)),
76
- delete: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.delete(ctx, this.primaryValue)),
77
- disconnect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.disconnect(ctx, this.primaryValue)),
72
+ oneHasMany: UpdateInputProcessor<SqlUpdateInputProcessorResult>['oneHasMany'] = {
73
+ connect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connect(ctx)),
74
+ create: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.create(ctx)),
75
+ connectOrCreate: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.connectOrCreate(ctx)),
76
+ update: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.update(ctx)),
77
+ upsert: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.upsert(ctx)),
78
+ delete: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.delete(ctx)),
79
+ disconnect: hasManyProcessor(ctx => this.oneHasManyUpdateInputProcessor.disconnect(ctx)),
78
80
  }
79
81
 
80
- oneHasOneInverse: UpdateInputProcessor<MutationResultList>['oneHasOneInverse'] = {
82
+ oneHasOneInverse: UpdateInputProcessor<SqlUpdateInputProcessorResult>['oneHasOneInverse'] = {
81
83
  connect: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.connect(ctx)),
82
84
  create: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.create(ctx)),
83
85
  connectOrCreate: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.connectOrCreate(ctx)),
@@ -87,7 +89,7 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<MutationRes
87
89
  disconnect: hasOneProcessor(ctx => this.oneHasOneInverseUpdateInputProcessor.disconnect(ctx)),
88
90
  }
89
91
 
90
- oneHasOneOwning: UpdateInputProcessor<MutationResultList>['oneHasOneOwning'] = {
92
+ oneHasOneOwning: UpdateInputProcessor<SqlUpdateInputProcessorResult>['oneHasOneOwning'] = {
91
93
  connect: hasOneProcessor(ctx => this.oneHasOneOwningUpdateInputProcessor.connect(ctx)),
92
94
  create: hasOneProcessor(ctx => this.oneHasOneOwningUpdateInputProcessor.create(ctx)),
93
95
  connectOrCreate: hasOneProcessor(ctx => this.oneHasOneOwningUpdateInputProcessor.connectOrCreate(ctx)),