@contember/engine-content-api 2.0.0-alpha.36 → 2.0.0-alpha.37

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 (306) hide show
  1. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +31 -6
  2. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
  3. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +31 -6
  4. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  5. package/dist/development/src/input-validation/ColumnValueResolver.cjs.map +1 -1
  6. package/dist/development/src/input-validation/ColumnValueResolver.js.map +1 -1
  7. package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
  8. package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  9. package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  10. package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  11. package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
  12. package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  13. package/dist/development/src/inputProcessing/CreateInputVisitor.cjs +6 -7
  14. package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  15. package/dist/development/src/inputProcessing/CreateInputVisitor.js +6 -7
  16. package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  17. package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs +14 -15
  18. package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  19. package/dist/development/src/inputProcessing/UpdateInputVisitor.js +14 -15
  20. package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  21. package/dist/development/src/mapper/ColumnValue.cjs +8 -18
  22. package/dist/development/src/mapper/ColumnValue.cjs.map +1 -1
  23. package/dist/development/src/mapper/ColumnValue.js +8 -18
  24. package/dist/development/src/mapper/ColumnValue.js.map +1 -1
  25. package/dist/development/src/mapper/EventManager.cjs +1 -1
  26. package/dist/development/src/mapper/EventManager.cjs.map +1 -1
  27. package/dist/development/src/mapper/EventManager.js +1 -1
  28. package/dist/development/src/mapper/EventManager.js.map +1 -1
  29. package/dist/development/src/mapper/Mapper.cjs +8 -28
  30. package/dist/development/src/mapper/Mapper.cjs.map +1 -1
  31. package/dist/development/src/mapper/Mapper.js +8 -28
  32. package/dist/development/src/mapper/Mapper.js.map +1 -1
  33. package/dist/development/src/mapper/Result.cjs.map +1 -1
  34. package/dist/development/src/mapper/Result.js.map +1 -1
  35. package/dist/development/src/mapper/delete/DeleteExecutor.cjs +4 -8
  36. package/dist/development/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
  37. package/dist/development/src/mapper/delete/DeleteExecutor.js +5 -9
  38. package/dist/development/src/mapper/delete/DeleteExecutor.js.map +1 -1
  39. package/dist/development/src/mapper/insert/InsertBuilder.cjs +12 -8
  40. package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  41. package/dist/development/src/mapper/insert/InsertBuilder.js +13 -9
  42. package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
  43. package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
  44. package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
  45. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs +1 -3
  46. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  47. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js +1 -3
  48. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  49. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +3 -5
  50. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
  51. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +4 -6
  52. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
  53. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +3 -5
  54. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
  55. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +4 -6
  56. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
  57. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +4 -3
  58. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
  59. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +4 -3
  60. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
  61. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs +3 -5
  62. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
  63. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js +4 -6
  64. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
  65. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +4 -6
  66. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
  67. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +5 -7
  68. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
  69. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  70. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  71. package/dist/development/src/mapper/update/UpdateBuilder.cjs +12 -5
  72. package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  73. package/dist/development/src/mapper/update/UpdateBuilder.js +13 -6
  74. package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
  75. package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
  76. package/dist/development/src/mapper/update/Updater.js.map +1 -1
  77. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +11 -16
  78. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
  79. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +12 -17
  80. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
  81. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +6 -7
  82. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
  83. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +7 -8
  84. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
  85. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +5 -4
  86. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
  87. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +5 -4
  88. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
  89. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs +11 -12
  90. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
  91. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js +12 -13
  92. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
  93. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +8 -12
  94. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
  95. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +9 -13
  96. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
  97. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +31 -6
  98. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
  99. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +31 -6
  100. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  101. package/dist/production/src/input-validation/ColumnValueResolver.cjs.map +1 -1
  102. package/dist/production/src/input-validation/ColumnValueResolver.js.map +1 -1
  103. package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
  104. package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  105. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  106. package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  107. package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
  108. package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  109. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +6 -7
  110. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  111. package/dist/production/src/inputProcessing/CreateInputVisitor.js +6 -7
  112. package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  113. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +14 -15
  114. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  115. package/dist/production/src/inputProcessing/UpdateInputVisitor.js +14 -15
  116. package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  117. package/dist/production/src/mapper/ColumnValue.cjs +8 -18
  118. package/dist/production/src/mapper/ColumnValue.cjs.map +1 -1
  119. package/dist/production/src/mapper/ColumnValue.js +8 -18
  120. package/dist/production/src/mapper/ColumnValue.js.map +1 -1
  121. package/dist/production/src/mapper/EventManager.cjs +1 -1
  122. package/dist/production/src/mapper/EventManager.cjs.map +1 -1
  123. package/dist/production/src/mapper/EventManager.js +1 -1
  124. package/dist/production/src/mapper/EventManager.js.map +1 -1
  125. package/dist/production/src/mapper/Mapper.cjs +8 -28
  126. package/dist/production/src/mapper/Mapper.cjs.map +1 -1
  127. package/dist/production/src/mapper/Mapper.js +8 -28
  128. package/dist/production/src/mapper/Mapper.js.map +1 -1
  129. package/dist/production/src/mapper/Result.cjs.map +1 -1
  130. package/dist/production/src/mapper/Result.js.map +1 -1
  131. package/dist/production/src/mapper/delete/DeleteExecutor.cjs +4 -8
  132. package/dist/production/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
  133. package/dist/production/src/mapper/delete/DeleteExecutor.js +5 -9
  134. package/dist/production/src/mapper/delete/DeleteExecutor.js.map +1 -1
  135. package/dist/production/src/mapper/insert/InsertBuilder.cjs +12 -8
  136. package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  137. package/dist/production/src/mapper/insert/InsertBuilder.js +13 -9
  138. package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
  139. package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
  140. package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
  141. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs +1 -3
  142. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  143. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js +1 -3
  144. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  145. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs +3 -5
  146. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
  147. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js +4 -6
  148. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
  149. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs +3 -5
  150. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
  151. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js +4 -6
  152. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
  153. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs +4 -3
  154. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
  155. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js +4 -3
  156. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
  157. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs +3 -5
  158. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
  159. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js +4 -6
  160. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
  161. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs +4 -6
  162. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
  163. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js +5 -7
  164. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
  165. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  166. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  167. package/dist/production/src/mapper/update/UpdateBuilder.cjs +12 -5
  168. package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  169. package/dist/production/src/mapper/update/UpdateBuilder.js +13 -6
  170. package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
  171. package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
  172. package/dist/production/src/mapper/update/Updater.js.map +1 -1
  173. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs +11 -16
  174. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
  175. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js +12 -17
  176. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
  177. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs +6 -7
  178. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
  179. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js +7 -8
  180. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
  181. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs +5 -4
  182. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
  183. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js +5 -4
  184. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
  185. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs +11 -12
  186. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
  187. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js +12 -13
  188. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
  189. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs +8 -12
  190. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
  191. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js +9 -13
  192. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
  193. package/dist/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.d.ts +2 -0
  194. package/dist/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.d.ts.map +1 -0
  195. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  196. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
  197. package/dist/types/input-validation/ColumnValueResolver.d.ts +1 -1
  198. package/dist/types/input-validation/ColumnValueResolver.d.ts.map +1 -1
  199. package/dist/types/input-validation/ValidationDataSelector.d.ts +1 -1
  200. package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +3 -3
  201. package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  202. package/dist/types/input-validation/preValidation/InputPreValidator.d.ts +3 -3
  203. package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
  204. package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +4 -4
  205. package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  206. package/dist/types/inputProcessing/CreateInputProcessor.d.ts +8 -6
  207. package/dist/types/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  208. package/dist/types/inputProcessing/CreateInputVisitor.d.ts +3 -2
  209. package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  210. package/dist/types/inputProcessing/UpdateInputProcessor.d.ts +14 -12
  211. package/dist/types/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  212. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +3 -2
  213. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  214. package/dist/types/mapper/ColumnValue.d.ts +4 -8
  215. package/dist/types/mapper/ColumnValue.d.ts.map +1 -1
  216. package/dist/types/mapper/EventManager.d.ts +9 -9
  217. package/dist/types/mapper/EventManager.d.ts.map +1 -1
  218. package/dist/types/mapper/Mapper.d.ts +6 -7
  219. package/dist/types/mapper/Mapper.d.ts.map +1 -1
  220. package/dist/types/mapper/Result.d.ts +5 -4
  221. package/dist/types/mapper/Result.d.ts.map +1 -1
  222. package/dist/types/mapper/delete/DeleteExecutor.d.ts.map +1 -1
  223. package/dist/types/mapper/insert/InsertBuilder.d.ts +3 -4
  224. package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
  225. package/dist/types/mapper/insert/Inserter.d.ts +3 -2
  226. package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
  227. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  228. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +5 -3
  229. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -1
  230. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +5 -3
  231. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -1
  232. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +5 -3
  233. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -1
  234. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +5 -3
  235. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -1
  236. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +5 -3
  237. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -1
  238. package/dist/types/mapper/types.d.ts +84 -1
  239. package/dist/types/mapper/types.d.ts.map +1 -1
  240. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +2 -1
  241. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  242. package/dist/types/mapper/update/UpdateBuilder.d.ts +3 -3
  243. package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
  244. package/dist/types/mapper/update/Updater.d.ts +2 -1
  245. package/dist/types/mapper/update/Updater.d.ts.map +1 -1
  246. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +5 -3
  247. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -1
  248. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +6 -4
  249. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -1
  250. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +5 -3
  251. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -1
  252. package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts +6 -4
  253. package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -1
  254. package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts +6 -4
  255. package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -1
  256. package/dist/types/tsconfig.tsbuildinfo +1 -1
  257. package/package.json +10 -10
  258. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +35 -2
  259. package/src/input-validation/ColumnValueResolver.ts +1 -1
  260. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +2 -2
  261. package/src/input-validation/preValidation/InputPreValidator.ts +7 -7
  262. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +3 -3
  263. package/src/inputProcessing/CreateInputProcessor.ts +8 -6
  264. package/src/inputProcessing/CreateInputVisitor.ts +18 -19
  265. package/src/inputProcessing/UpdateInputProcessor.ts +13 -11
  266. package/src/inputProcessing/UpdateInputVisitor.ts +25 -24
  267. package/src/mapper/ColumnValue.ts +11 -25
  268. package/src/mapper/EventManager.ts +6 -6
  269. package/src/mapper/Mapper.ts +19 -37
  270. package/src/mapper/Result.ts +3 -2
  271. package/src/mapper/delete/DeleteExecutor.ts +4 -8
  272. package/src/mapper/insert/InsertBuilder.ts +20 -17
  273. package/src/mapper/insert/Inserter.ts +4 -3
  274. package/src/mapper/insert/SqlCreateInputProcessor.ts +1 -3
  275. package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +8 -8
  276. package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +8 -8
  277. package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +8 -6
  278. package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +8 -9
  279. package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +9 -9
  280. package/src/mapper/types.ts +115 -1
  281. package/src/mapper/update/SqlUpdateInputProcessor.ts +2 -1
  282. package/src/mapper/update/UpdateBuilder.ts +20 -12
  283. package/src/mapper/update/Updater.ts +3 -2
  284. package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +15 -19
  285. package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +11 -11
  286. package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +9 -7
  287. package/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts +18 -18
  288. package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +14 -17
  289. package/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.ts +37 -0
  290. package/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.ts +69 -0
  291. package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +0 -5
  292. package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +0 -5
  293. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +9 -0
  294. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +0 -5
  295. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +0 -5
  296. package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +5 -0
  297. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -0
  298. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +5 -0
  299. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -0
  300. package/tests/cases/integration/graphQlSchema/schema-basic.gql +11 -0
  301. package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +6 -0
  302. package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +11 -0
  303. package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +6 -0
  304. package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +12 -0
  305. package/tests/cases/unit/inputPreValidator.test.ts +1 -1
  306. package/tests/src/testGraphql.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ManyHasOneUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tNothingToDoReason,\n} from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { UpdateBuilder } from '../UpdateBuilder'\n\ntype Context = Model.ManyHasOneContext\n\nexport class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly builder: UpdateBuilder,\n\t\tprivate readonly primary: Input.PrimaryValue,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!value) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async create(\n\t\t{ relation, targetEntity, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst value = getInsertPrimary(insertResult)\n\t\tif (!value) {\n\t\t\treturn insertResult\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\tif (value) {\n\t\t\tthis.builder.addFieldValue(relation.name, value)\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst primary = getInsertPrimary(insertResult)\n\t\t\tif (!primary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\n\t\t\tthis.builder.addFieldValue(relation.name, primary)\n\t\t}\n\t\treturn []\n\t}\n\n\tpublic async update(\n\t\t{ entity, relation, targetEntity, targetRelation, input }: Context & { input: Input.UpdateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\tif (!inversePrimary) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\treturn await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update } }: Context & { input: UpdateInputProcessor.UpsertInput },\n\t) {\n\t\tconst inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name)\n\t\tif (!inversePrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (insertPrimary) {\n\t\t\t\tthis.builder.addFieldValue(relation.name, insertPrimary)\n\t\t\t}\n\t\t\treturn insertResult\n\t\t}\n\n\t\treturn async () =>\n\t\t\tawait this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, null)\n\t\treturn []\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t\t}\n\t}\n}\n"],"names":["MutationEntryNotFoundError","getInsertPrimary","MutationNothingToDo","NothingToDoReason","MutationConstraintViolationError","ConstraintType","Model"],"mappings":"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"}
1
+ {"version":3,"file":"ManyHasOneUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tNothingToDoReason,\n} from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { UpdateBuilder } from '../UpdateBuilder'\nimport { CheckedPrimary } from '../../CheckedPrimary'\nimport { MapperInput } from '../../types'\n\ntype Context = Model.ManyHasOneContext\n\nexport class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly builder: UpdateBuilder,\n\t\tprivate readonly primary: Input.PrimaryValue,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },\n\t) {\n\t\tconst [value, err] = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (err) return [err]\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async create(\n\t\t{ relation, targetEntity, input }: Context & { input: MapperInput.CreateDataInput },\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst value = getInsertPrimary(insertResult)\n\t\tif (!value) {\n\t\t\treturn insertResult\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input: { connect, create }, relation, targetEntity }: Context & { input: MapperInput.ConnectOrCreateInput },\n\t) {\n\t\tconst [value] = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\tif (value) {\n\t\t\tthis.builder.addFieldValue(relation.name, value)\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst primary = getInsertPrimary(insertResult)\n\t\t\tif (!primary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\n\t\t\tthis.builder.addFieldValue(relation.name, primary)\n\t\t}\n\t\treturn []\n\t}\n\n\tpublic async update(\n\t\t{ entity, relation, targetEntity, targetRelation, input }: Context & { input: MapperInput.UpdateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\tif (!inversePrimary) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\treturn await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), input)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update } }: Context & { input: UpdateInputProcessor.UpsertInput },\n\t) {\n\t\tconst inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name)\n\t\tif (!inversePrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (insertPrimary) {\n\t\t\t\tthis.builder.addFieldValue(relation.name, insertPrimary)\n\t\t\t}\n\t\t\treturn insertResult\n\t\t}\n\n\t\treturn async () =>\n\t\t\tawait this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), update)\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, null)\n\t\treturn []\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t\t}\n\t}\n}\n"],"names":["getInsertPrimary","MutationNothingToDo","NothingToDoReason","CheckedPrimary","MutationConstraintViolationError","ConstraintType","Model"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Model } from "@contember/schema";
2
- import { MutationEntryNotFoundError, getInsertPrimary, MutationNothingToDo, NothingToDoReason, MutationConstraintViolationError, ConstraintType } from "../../Result.js";
2
+ import { getInsertPrimary, MutationNothingToDo, NothingToDoReason, MutationConstraintViolationError, ConstraintType } from "../../Result.js";
3
+ import { CheckedPrimary } from "../../CheckedPrimary.js";
3
4
  class ManyHasOneUpdateInputProcessor {
4
5
  constructor(mapper, builder, primary) {
5
6
  this.mapper = mapper;
@@ -7,10 +8,8 @@ class ManyHasOneUpdateInputProcessor {
7
8
  this.primary = primary;
8
9
  }
9
10
  async connect({ targetEntity, relation, input }) {
10
- const value = await this.mapper.getPrimaryValue(targetEntity, input);
11
- if (!value) {
12
- return [new MutationEntryNotFoundError([], input)];
13
- }
11
+ const [value, err] = await this.mapper.getPrimaryValue(targetEntity, input);
12
+ if (err) return [err];
14
13
  this.builder.addFieldValue(relation.name, value);
15
14
  return [];
16
15
  }
@@ -24,7 +23,7 @@ class ManyHasOneUpdateInputProcessor {
24
23
  return [];
25
24
  }
26
25
  async connectOrCreate({ input: { connect, create }, relation, targetEntity }) {
27
- const value = await this.mapper.getPrimaryValue(targetEntity, connect);
26
+ const [value] = await this.mapper.getPrimaryValue(targetEntity, connect);
28
27
  if (value) {
29
28
  this.builder.addFieldValue(relation.name, value);
30
29
  } else {
@@ -47,7 +46,7 @@ class ManyHasOneUpdateInputProcessor {
47
46
  if (!inversePrimary) {
48
47
  return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)];
49
48
  }
50
- return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input);
49
+ return await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), input);
51
50
  };
52
51
  }
53
52
  async upsert({ entity, relation, targetEntity, input: { create, update } }) {
@@ -60,7 +59,7 @@ class ManyHasOneUpdateInputProcessor {
60
59
  }
61
60
  return insertResult;
62
61
  }
63
- return async () => await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update);
62
+ return async () => await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), update);
64
63
  }
65
64
  async disconnect({ entity, targetEntity, relation, targetRelation }) {
66
65
  if (!relation.nullable) {
@@ -1 +1 @@
1
- {"version":3,"file":"ManyHasOneUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tNothingToDoReason,\n} from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { UpdateBuilder } from '../UpdateBuilder'\n\ntype Context = Model.ManyHasOneContext\n\nexport class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly builder: UpdateBuilder,\n\t\tprivate readonly primary: Input.PrimaryValue,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (!value) {\n\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async create(\n\t\t{ relation, targetEntity, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst value = getInsertPrimary(insertResult)\n\t\tif (!value) {\n\t\t\treturn insertResult\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\tconst value = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\tif (value) {\n\t\t\tthis.builder.addFieldValue(relation.name, value)\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst primary = getInsertPrimary(insertResult)\n\t\t\tif (!primary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\n\t\t\tthis.builder.addFieldValue(relation.name, primary)\n\t\t}\n\t\treturn []\n\t}\n\n\tpublic async update(\n\t\t{ entity, relation, targetEntity, targetRelation, input }: Context & { input: Input.UpdateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\tif (!inversePrimary) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\treturn await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update } }: Context & { input: UpdateInputProcessor.UpsertInput },\n\t) {\n\t\tconst inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name)\n\t\tif (!inversePrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (insertPrimary) {\n\t\t\t\tthis.builder.addFieldValue(relation.name, insertPrimary)\n\t\t\t}\n\t\t\treturn insertResult\n\t\t}\n\n\t\treturn async () =>\n\t\t\tawait this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, null)\n\t\treturn []\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManyHasOneUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport {\n\tConstraintType,\n\tgetInsertPrimary,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tNothingToDoReason,\n} from '../../Result'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { UpdateBuilder } from '../UpdateBuilder'\nimport { CheckedPrimary } from '../../CheckedPrimary'\nimport { MapperInput } from '../../types'\n\ntype Context = Model.ManyHasOneContext\n\nexport class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly builder: UpdateBuilder,\n\t\tprivate readonly primary: Input.PrimaryValue,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ targetEntity, relation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },\n\t) {\n\t\tconst [value, err] = await this.mapper.getPrimaryValue(targetEntity, input)\n\t\tif (err) return [err]\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async create(\n\t\t{ relation, targetEntity, input }: Context & { input: MapperInput.CreateDataInput },\n\t) {\n\t\tconst insertResult = await this.mapper.insert(targetEntity, input)\n\t\tconst value = getInsertPrimary(insertResult)\n\t\tif (!value) {\n\t\t\treturn insertResult\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, value)\n\t\treturn []\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input: { connect, create }, relation, targetEntity }: Context & { input: MapperInput.ConnectOrCreateInput },\n\t) {\n\t\tconst [value] = await this.mapper.getPrimaryValue(targetEntity, connect)\n\t\tif (value) {\n\t\t\tthis.builder.addFieldValue(relation.name, value)\n\t\t} else {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst primary = getInsertPrimary(insertResult)\n\t\t\tif (!primary) {\n\t\t\t\treturn insertResult\n\t\t\t}\n\n\t\t\tthis.builder.addFieldValue(relation.name, primary)\n\t\t}\n\t\treturn []\n\t}\n\n\tpublic async update(\n\t\t{ entity, relation, targetEntity, targetRelation, input }: Context & { input: MapperInput.UpdateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\tif (!inversePrimary) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\treturn await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), input)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, relation, targetEntity, input: { create, update } }: Context & { input: UpdateInputProcessor.UpsertInput },\n\t) {\n\t\tconst inversePrimary = await this.mapper.selectField(entity, { [entity.primary]: this.primary }, relation.name)\n\t\tif (!inversePrimary) {\n\t\t\tconst insertResult = await this.mapper.insert(targetEntity, create)\n\t\t\tconst insertPrimary = getInsertPrimary(insertResult)\n\t\t\tif (insertPrimary) {\n\t\t\t\tthis.builder.addFieldValue(relation.name, insertPrimary)\n\t\t\t}\n\t\t\treturn insertResult\n\t\t}\n\n\t\treturn async () =>\n\t\t\tawait this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), update)\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tthis.builder.addFieldValue(relation.name, null)\n\t\treturn []\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation }: Context & { input: undefined },\n\t) {\n\t\tif (!relation.nullable && relation.joiningColumn.onDelete !== Model.OnDelete.cascade) {\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst inversePrimary = await this.mapper.selectField(\n\t\t\t\tentity,\n\t\t\t\t{ [entity.primary]: primary },\n\t\t\t\trelation.name,\n\t\t\t)\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetEntity.primary]: inversePrimary })\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;AAkBO,MAAM,+BAAmI;AAAA,EAE/I,YACkB,QACA,SACA,SAChB;AAHgB,SAAA,SAAA;AACA,SAAA,UAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QACZ,EAAE,cAAc,UAAU,SACzB;AACK,UAAA,CAAC,OAAO,GAAG,IAAI,MAAM,KAAK,OAAO,gBAAgB,cAAc,KAAK;AACtE,QAAA,IAAY,QAAA,CAAC,GAAG;AACpB,SAAK,QAAQ,cAAc,SAAS,MAAM,KAAK;AAC/C,WAAO,CAAC;AAAA,EAAA;AAAA,EAGT,MAAa,OACZ,EAAE,UAAU,cAAc,SACzB;AACD,UAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,KAAK;AAC3D,UAAA,QAAQ,iBAAiB,YAAY;AAC3C,QAAI,CAAC,OAAO;AACJ,aAAA;AAAA,IAAA;AAER,SAAK,QAAQ,cAAc,SAAS,MAAM,KAAK;AAC/C,WAAO,CAAC;AAAA,EAAA;AAAA,EAGT,MAAa,gBACZ,EAAE,OAAO,EAAE,SAAS,UAAU,UAAU,gBACvC;AACK,UAAA,CAAC,KAAK,IAAI,MAAM,KAAK,OAAO,gBAAgB,cAAc,OAAO;AACvE,QAAI,OAAO;AACV,WAAK,QAAQ,cAAc,SAAS,MAAM,KAAK;AAAA,IAAA,OACzC;AACN,YAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,MAAM;AAC5D,YAAA,UAAU,iBAAiB,YAAY;AAC7C,UAAI,CAAC,SAAS;AACN,eAAA;AAAA,MAAA;AAGR,WAAK,QAAQ,cAAc,SAAS,MAAM,OAAO;AAAA,IAAA;AAElD,WAAO,CAAC;AAAA,EAAA;AAAA,EAGT,MAAa,OACZ,EAAE,QAAQ,UAAU,cAAc,gBAAgB,SACjD;AACM,WAAA,OAAO,EAAE,cAA+C;AACxD,YAAA,iBAAiB,MAAM,KAAK,OAAO;AAAA,QACxC;AAAA,QACA,EAAE,CAAC,OAAO,OAAO,GAAG,QAAQ;AAAA,QAC5B,SAAS;AAAA,MACV;AACA,UAAI,CAAC,gBAAgB;AACpB,eAAO,CAAC,IAAI,oBAAoB,CAAI,GAAA,kBAAkB,aAAa,CAAC;AAAA,MAAA;AAE9D,aAAA,MAAM,KAAK,OAAO,OAAO,cAAc,IAAI,eAAe,cAAc,GAAG,KAAK;AAAA,IACxF;AAAA,EAAA;AAAA,EAGD,MAAa,OACZ,EAAE,QAAQ,UAAU,cAAc,OAAO,EAAE,QAAQ,OAAO,KACzD;AACD,UAAM,iBAAiB,MAAM,KAAK,OAAO,YAAY,QAAQ,EAAE,CAAC,OAAO,OAAO,GAAG,KAAK,QAAQ,GAAG,SAAS,IAAI;AAC9G,QAAI,CAAC,gBAAgB;AACpB,YAAM,eAAe,MAAM,KAAK,OAAO,OAAO,cAAc,MAAM;AAC5D,YAAA,gBAAgB,iBAAiB,YAAY;AACnD,UAAI,eAAe;AAClB,aAAK,QAAQ,cAAc,SAAS,MAAM,aAAa;AAAA,MAAA;AAEjD,aAAA;AAAA,IAAA;AAGD,WAAA,YACN,MAAM,KAAK,OAAO,OAAO,cAAc,IAAI,eAAe,cAAc,GAAG,MAAM;AAAA,EAAA;AAAA,EAGnF,MAAa,WACZ,EAAE,QAAQ,cAAc,UAAU,kBACjC;AACG,QAAA,CAAC,SAAS,UAAU;AACvB,aAAO,CAAC,IAAI,iCAAiC,CAAI,GAAA,eAAe,OAAO,CAAC;AAAA,IAAA;AAEzE,SAAK,QAAQ,cAAc,SAAS,MAAM,IAAI;AAC9C,WAAO,CAAC;AAAA,EAAA;AAAA,EAGT,MAAa,OACZ,EAAE,QAAQ,cAAc,UAAU,kBACjC;AACG,QAAA,CAAC,SAAS,YAAY,SAAS,cAAc,aAAa,MAAM,SAAS,SAAS;AACrF,aAAO,CAAC,IAAI,iCAAiC,CAAI,GAAA,eAAe,OAAO,CAAC;AAAA,IAAA;AAElE,WAAA,OAAO,EAAE,cAA+C;AACxD,YAAA,iBAAiB,MAAM,KAAK,OAAO;AAAA,QACxC;AAAA,QACA,EAAE,CAAC,OAAO,OAAO,GAAG,QAAQ;AAAA,QAC5B,SAAS;AAAA,MACV;AACO,aAAA,MAAM,KAAK,OAAO,OAAO,cAAc,EAAE,CAAC,aAAa,OAAO,GAAG,gBAAgB;AAAA,IACzF;AAAA,EAAA;AAEF;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Result = require("../../Result.cjs");
4
+ const CheckedPrimary = require("../../CheckedPrimary.cjs");
4
5
  class OneHasManyUpdateInputProcessor {
5
6
  constructor(mapper) {
6
7
  this.mapper = mapper;
@@ -8,7 +9,7 @@ class OneHasManyUpdateInputProcessor {
8
9
  async connect({ entity, targetEntity, targetRelation, input }) {
9
10
  return async ({ primary }) => {
10
11
  return await this.mapper.update(targetEntity, input, {
11
- [targetRelation.name]: { connect: { [entity.primary]: primary } }
12
+ [targetRelation.name]: { connect: new CheckedPrimary.CheckedPrimary(primary) }
12
13
  });
13
14
  };
14
15
  }
@@ -16,7 +17,7 @@ class OneHasManyUpdateInputProcessor {
16
17
  return async ({ primary }) => {
17
18
  return await this.mapper.insert(targetEntity, {
18
19
  ...input,
19
- [targetRelation.name]: { connect: { [entity.primary]: primary } }
20
+ [targetRelation.name]: { connect: new CheckedPrimary.CheckedPrimary(primary) }
20
21
  });
21
22
  };
22
23
  }
@@ -24,7 +25,7 @@ class OneHasManyUpdateInputProcessor {
24
25
  return async ({ primary }) => {
25
26
  const connectData = {
26
27
  [targetRelation.name]: {
27
- connect: { [entity.primary]: primary }
28
+ connect: new CheckedPrimary.CheckedPrimary(primary)
28
29
  }
29
30
  };
30
31
  return await this.mapper.upsert(targetEntity, connect, connectData, {
@@ -58,7 +59,7 @@ class OneHasManyUpdateInputProcessor {
58
59
  if (result[0].result === Result.MutationResultType.notFoundError) {
59
60
  return await this.mapper.insert(targetEntity, {
60
61
  ...create,
61
- [targetRelation.name]: { connect: { [entity.primary]: primary } }
62
+ [targetRelation.name]: { connect: new CheckedPrimary.CheckedPrimary(primary) }
62
63
  });
63
64
  }
64
65
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"OneHasManyUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { MutationResultType } from '../../Result'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\n\ntype Context = Model.OneHasManyContext\n\nexport class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(targetEntity, input, {\n\t\t\t\t[targetRelation.name]: { connect: { [entity.primary]: primary } },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { connect: { [entity.primary]: primary } },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst connectData = {\n\t\t\t\t[targetRelation.name]: {\n\t\t\t\t\tconnect: { [entity.primary]: primary },\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn await this.mapper.upsert(targetEntity, connect, connectData, {\n\t\t\t\t...create,\n\t\t\t\t...connectData,\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, targetRelation, input: { data, where } }: Context & { input: UpdateInputProcessor.UpdateManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...data,\n\t\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, targetEntity, targetRelation, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...update,\n\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t\t...create,\n\t\t\t\t\t[targetRelation.name]: { connect: { [entity.primary]: primary } },\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...input, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{ [targetRelation.name]: { disconnect: true } },\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.delete(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { [entity.primary]: primary },\n\t\t\t})\n\t\t}\n\t}\n}\n"],"names":["MutationResultType"],"mappings":"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"}
1
+ {"version":3,"file":"OneHasManyUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { MutationResultType } from '../../Result'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { CheckedPrimary } from '../../CheckedPrimary'\nimport { MapperInput } from '../../types'\n\ntype Context = Model.OneHasManyContext\n\nexport class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(targetEntity, input, {\n\t\t\t\t[targetRelation.name]: { connect: new CheckedPrimary(primary) },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: MapperInput.CreateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { connect: new CheckedPrimary(primary) },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: MapperInput.ConnectOrCreateInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst connectData = {\n\t\t\t\t[targetRelation.name]: {\n\t\t\t\t\tconnect: new CheckedPrimary(primary),\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn await this.mapper.upsert(targetEntity, connect, connectData, {\n\t\t\t\t...create,\n\t\t\t\t...connectData,\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, targetRelation, input: { data, where } }: Context & { input: UpdateInputProcessor.UpdateManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...data,\n\t\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, targetEntity, targetRelation, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...update,\n\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t\t...create,\n\t\t\t\t\t[targetRelation.name]: { connect: new CheckedPrimary(primary) },\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...input, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{ [targetRelation.name]: { disconnect: true } },\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.delete(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { [entity.primary]: primary },\n\t\t\t})\n\t\t}\n\t}\n}\n"],"names":["CheckedPrimary","MutationResultType"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { MutationResultType } from "../../Result.js";
2
+ import { CheckedPrimary } from "../../CheckedPrimary.js";
2
3
  class OneHasManyUpdateInputProcessor {
3
4
  constructor(mapper) {
4
5
  this.mapper = mapper;
@@ -6,7 +7,7 @@ class OneHasManyUpdateInputProcessor {
6
7
  async connect({ entity, targetEntity, targetRelation, input }) {
7
8
  return async ({ primary }) => {
8
9
  return await this.mapper.update(targetEntity, input, {
9
- [targetRelation.name]: { connect: { [entity.primary]: primary } }
10
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) }
10
11
  });
11
12
  };
12
13
  }
@@ -14,7 +15,7 @@ class OneHasManyUpdateInputProcessor {
14
15
  return async ({ primary }) => {
15
16
  return await this.mapper.insert(targetEntity, {
16
17
  ...input,
17
- [targetRelation.name]: { connect: { [entity.primary]: primary } }
18
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) }
18
19
  });
19
20
  };
20
21
  }
@@ -22,7 +23,7 @@ class OneHasManyUpdateInputProcessor {
22
23
  return async ({ primary }) => {
23
24
  const connectData = {
24
25
  [targetRelation.name]: {
25
- connect: { [entity.primary]: primary }
26
+ connect: new CheckedPrimary(primary)
26
27
  }
27
28
  };
28
29
  return await this.mapper.upsert(targetEntity, connect, connectData, {
@@ -56,7 +57,7 @@ class OneHasManyUpdateInputProcessor {
56
57
  if (result[0].result === MutationResultType.notFoundError) {
57
58
  return await this.mapper.insert(targetEntity, {
58
59
  ...create,
59
- [targetRelation.name]: { connect: { [entity.primary]: primary } }
60
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) }
60
61
  });
61
62
  }
62
63
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"OneHasManyUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { MutationResultType } from '../../Result'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\n\ntype Context = Model.OneHasManyContext\n\nexport class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(targetEntity, input, {\n\t\t\t\t[targetRelation.name]: { connect: { [entity.primary]: primary } },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: Input.CreateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { connect: { [entity.primary]: primary } },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst connectData = {\n\t\t\t\t[targetRelation.name]: {\n\t\t\t\t\tconnect: { [entity.primary]: primary },\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn await this.mapper.upsert(targetEntity, connect, connectData, {\n\t\t\t\t...create,\n\t\t\t\t...connectData,\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, targetRelation, input: { data, where } }: Context & { input: UpdateInputProcessor.UpdateManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...data,\n\t\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, targetEntity, targetRelation, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...update,\n\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t\t...create,\n\t\t\t\t\t[targetRelation.name]: { connect: { [entity.primary]: primary } },\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...input, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{ [targetRelation.name]: { disconnect: true } },\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.delete(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { [entity.primary]: primary },\n\t\t\t})\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OneHasManyUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts"],"sourcesContent":["import { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { MutationResultType } from '../../Result'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { CheckedPrimary } from '../../CheckedPrimary'\nimport { MapperInput } from '../../types'\n\ntype Context = Model.OneHasManyContext\n\nexport class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasManyRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(targetEntity, input, {\n\t\t\t\t[targetRelation.name]: { connect: new CheckedPrimary(primary) },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async create(\n\t\t{ entity, targetEntity, targetRelation, input }: Context & { input: MapperInput.CreateDataInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { connect: new CheckedPrimary(primary) },\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: MapperInput.ConnectOrCreateInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst connectData = {\n\t\t\t\t[targetRelation.name]: {\n\t\t\t\t\tconnect: new CheckedPrimary(primary),\n\t\t\t\t},\n\t\t\t}\n\t\t\treturn await this.mapper.upsert(targetEntity, connect, connectData, {\n\t\t\t\t...create,\n\t\t\t\t...connectData,\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async update(\n\t\t{ entity, targetEntity, targetRelation, input: { data, where } }: Context & { input: UpdateInputProcessor.UpdateManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...data,\n\t\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async upsert(\n\t\t{ entity, targetEntity, targetRelation, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...where, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{\n\t\t\t\t\t...update,\n\t\t\t\t// [targetRelation.name]: {connect: thisPrimary}\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.mapper.insert(targetEntity, {\n\t\t\t\t\t...create,\n\t\t\t\t\t[targetRelation.name]: { connect: new CheckedPrimary(primary) },\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ ...input, [targetRelation.name]: { [entity.primary]: primary } },\n\t\t\t\t{ [targetRelation.name]: { disconnect: true } },\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async delete(\n\t\t{ entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },\n\t) {\n\t\treturn async ({ primary }: { primary: Input.PrimaryValue }) => {\n\t\t\treturn await this.mapper.delete(targetEntity, {\n\t\t\t\t...input,\n\t\t\t\t[targetRelation.name]: { [entity.primary]: primary },\n\t\t\t})\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Result = require("../../Result.cjs");
4
+ const CheckedPrimary = require("../../CheckedPrimary.cjs");
4
5
  class OneHasOneInverseUpdateInputProcessor {
5
6
  constructor(primaryValue, mapper) {
6
7
  this.primaryValue = primaryValue;
@@ -8,16 +9,14 @@ class OneHasOneInverseUpdateInputProcessor {
8
9
  }
9
10
  async connect({ input, ...ctx }) {
10
11
  return async () => {
11
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input);
12
- if (!newOwner) {
13
- return [new Result.MutationEntryNotFoundError([], input)];
14
- }
12
+ const [newOwner, err] = await this.mapper.getPrimaryValue(ctx.targetEntity, input);
13
+ if (err) return [err];
15
14
  return await this.connectInternal(ctx, newOwner);
16
15
  };
17
16
  }
18
17
  async connectOrCreate({ input, ...ctx }) {
19
18
  return async () => {
20
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect);
19
+ const [newOwner] = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect);
21
20
  if (newOwner) {
22
21
  return await this.connectInternal(ctx, newOwner);
23
22
  }
@@ -60,7 +59,7 @@ class OneHasOneInverseUpdateInputProcessor {
60
59
  if (!relation.nullable && !targetRelation.orphanRemoval) {
61
60
  return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
62
61
  }
63
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
62
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
64
63
  [targetRelation.name]: { [entity.primary]: this.primaryValue }
65
64
  });
66
65
  if (!currentOwner) {
@@ -71,7 +70,7 @@ class OneHasOneInverseUpdateInputProcessor {
71
70
  }
72
71
  const result = await this.mapper.updateInternal(
73
72
  targetEntity,
74
- { [targetEntity.primary]: currentOwner },
73
+ new CheckedPrimary.CheckedPrimary(currentOwner),
75
74
  (builder) => {
76
75
  builder.addPredicates([targetRelation.name]);
77
76
  builder.addFieldValue(targetRelation.name, null);
@@ -92,7 +91,7 @@ class OneHasOneInverseUpdateInputProcessor {
92
91
  };
93
92
  }
94
93
  async connectInternal({ entity, targetEntity, targetRelation }, newOwner) {
95
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
94
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
96
95
  [targetRelation.name]: { [entity.primary]: this.primaryValue }
97
96
  });
98
97
  if (newOwner === currentOwner) {
@@ -103,14 +102,14 @@ class OneHasOneInverseUpdateInputProcessor {
103
102
  if (!targetRelation.nullable) {
104
103
  return [new Result.MutationConstraintViolationError([], Result.ConstraintType.notNull)];
105
104
  }
106
- const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, (builder) => {
105
+ const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary.CheckedPrimary(currentOwner), (builder) => {
107
106
  builder.addPredicates([targetRelation.name]);
108
107
  builder.addFieldValue(targetRelation.name, null);
109
108
  });
110
109
  result.push(...disconnectFromCurrentOwner);
111
110
  }
112
111
  const orphanedInverseSide = targetRelation.orphanRemoval ? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name) : null;
113
- const connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, (builder) => {
112
+ const connectToNewOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary.CheckedPrimary(newOwner), (builder) => {
114
113
  builder.addPredicates([targetRelation.name]);
115
114
  builder.addFieldValue(targetRelation.name, this.primaryValue);
116
115
  });
@@ -122,7 +121,7 @@ class OneHasOneInverseUpdateInputProcessor {
122
121
  return result;
123
122
  }
124
123
  async createInternal({ entity, targetEntity, targetRelation, input }) {
125
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
124
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
126
125
  [targetRelation.name]: { [entity.primary]: this.primaryValue }
127
126
  });
128
127
  if (currentOwner && !targetRelation.nullable) {
@@ -130,7 +129,7 @@ class OneHasOneInverseUpdateInputProcessor {
130
129
  }
131
130
  const result = [];
132
131
  if (currentOwner) {
133
- const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, (builder) => {
132
+ const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary.CheckedPrimary(currentOwner), (builder) => {
134
133
  builder.addPredicates([targetRelation.name]);
135
134
  builder.addFieldValue(targetRelation.name, null);
136
135
  });
@@ -1 +1 @@
1
- {"version":3,"file":"OneHasOneInverseUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationResultType,\n\tNothingToDoReason,\n} from '../../Result'\nimport { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\n\ntype Context = Model.OneHasOneInverseContext\n\nexport class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {\n\t\treturn async () => {\n\t\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)\n\t\t\tif (!newOwner) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t\t}\n\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\treturn async () => {\n\t\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)\n\t\t\tif (newOwner) {\n\t\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...ctx, input: input.create })\n\t\t}\n\t}\n\n\n\tpublic async create(ctx: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.createInternal(ctx)\n\t\t}\n\t}\n\n\tpublic async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tinput,\n\t\t\t)\n\t\t}\n\t}\n\tpublic async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\treturn async () => {\n\t\t\tconst { targetEntity, targetRelation, entity, input: { update, create } } = context\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tupdate,\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.createInternal({\n\t\t\t\t\t...context,\n\t\t\t\t\tinput: create,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t\t})\n\t\t\tif (!currentOwner) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\n\t\t\tconst result = await this.mapper.updateInternal(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetEntity.primary]: currentOwner },\n\t\t\t\tbuilder => {\n\t\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (targetRelation.orphanRemoval) {\n\t\t\t\tresult.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\t// orphan removal is handled in mapper.delete\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })\n\t\t}\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,\n\t\tnewOwner: Input.PrimaryValue,\n\t) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (newOwner === currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tif (!targetRelation.nullable) {\n\t\t\t\t// todo cascade delete support?\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\t\tconst orphanedInverseSide = targetRelation.orphanRemoval\n\t\t\t? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)\n\t\t\t: null\n\n\t\tconst connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, builder => {\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t})\n\t\tresult.push(...connectToNewOwner)\n\n\t\tif (orphanedInverseSide) {\n\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(entity, { [entity.primary]: orphanedInverseSide })\n\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t}\n\t\treturn result\n\t}\n\n\tprivate async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t// todo cascade delete support?\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\n\t\tconst connectToNewlyCreatedOwner = await this.mapper.insert(targetEntity, input, builder => {\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t})\n\t\tresult.push(...connectToNewlyCreatedOwner)\n\n\t\treturn result\n\t}\n}\n"],"names":["MutationEntryNotFoundError","MutationResultType","MutationConstraintViolationError","ConstraintType","MutationNothingToDo","NothingToDoReason"],"mappings":"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"}
1
+ {"version":3,"file":"OneHasOneInverseUpdateInputProcessor.cjs","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationResultType,\n\tNothingToDoReason,\n} from '../../Result'\nimport { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { CheckedPrimary } from '../../CheckedPrimary'\nimport { MapperInput } from '../../types'\n\ntype Context = Model.OneHasOneInverseContext\n\nexport class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere | CheckedPrimary }) {\n\t\treturn async () => {\n\t\t\tconst [newOwner, err] = await this.mapper.getPrimaryValue(ctx.targetEntity, input)\n\t\t\tif (err) return [err]\n\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...ctx }: Model.OneHasOneInverseContext & { input: MapperInput.ConnectOrCreateInput },\n\t) {\n\t\treturn async () => {\n\t\t\tconst [newOwner] = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)\n\t\t\tif (newOwner) {\n\t\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...ctx, input: input.create })\n\t\t}\n\t}\n\n\n\tpublic async create(ctx: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.createInternal(ctx)\n\t\t}\n\t}\n\n\tpublic async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.UpdateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tinput,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\treturn async () => {\n\t\t\tconst { targetEntity, targetRelation, entity, input: { update, create } } = context\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tupdate,\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.createInternal({\n\t\t\t\t\t...context,\n\t\t\t\t\tinput: create,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t\t})\n\t\t\tif (!currentOwner) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\n\t\t\tconst result = await this.mapper.updateInternal(\n\t\t\t\ttargetEntity,\n\t\t\t\tnew CheckedPrimary(currentOwner),\n\t\t\t\tbuilder => {\n\t\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (targetRelation.orphanRemoval) {\n\t\t\t\tresult.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\t// orphan removal is handled in mapper.delete\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })\n\t\t}\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,\n\t\tnewOwner: Input.PrimaryValue,\n\t) {\n\t\tconst [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (newOwner === currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tif (!targetRelation.nullable) {\n\t\t\t\t// todo cascade delete support?\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\t\tconst orphanedInverseSide = targetRelation.orphanRemoval\n\t\t\t? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)\n\t\t\t: null\n\n\t\tconst connectToNewOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(newOwner), builder => {\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t})\n\t\tresult.push(...connectToNewOwner)\n\n\t\tif (orphanedInverseSide) {\n\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(entity, { [entity.primary]: orphanedInverseSide })\n\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t}\n\t\treturn result\n\t}\n\n\tprivate async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {\n\t\tconst [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t// todo cascade delete support?\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\n\t\tconst connectToNewlyCreatedOwner = await this.mapper.insert(targetEntity, input, builder => {\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t})\n\t\tresult.push(...connectToNewlyCreatedOwner)\n\n\t\treturn result\n\t}\n}\n"],"names":["MutationResultType","MutationConstraintViolationError","ConstraintType","MutationNothingToDo","NothingToDoReason","CheckedPrimary"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { MutationEntryNotFoundError, MutationResultType, MutationConstraintViolationError, ConstraintType, MutationNothingToDo, NothingToDoReason } from "../../Result.js";
1
+ import { MutationResultType, MutationConstraintViolationError, ConstraintType, MutationNothingToDo, NothingToDoReason } from "../../Result.js";
2
+ import { CheckedPrimary } from "../../CheckedPrimary.js";
2
3
  class OneHasOneInverseUpdateInputProcessor {
3
4
  constructor(primaryValue, mapper) {
4
5
  this.primaryValue = primaryValue;
@@ -6,16 +7,14 @@ class OneHasOneInverseUpdateInputProcessor {
6
7
  }
7
8
  async connect({ input, ...ctx }) {
8
9
  return async () => {
9
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input);
10
- if (!newOwner) {
11
- return [new MutationEntryNotFoundError([], input)];
12
- }
10
+ const [newOwner, err] = await this.mapper.getPrimaryValue(ctx.targetEntity, input);
11
+ if (err) return [err];
13
12
  return await this.connectInternal(ctx, newOwner);
14
13
  };
15
14
  }
16
15
  async connectOrCreate({ input, ...ctx }) {
17
16
  return async () => {
18
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect);
17
+ const [newOwner] = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect);
19
18
  if (newOwner) {
20
19
  return await this.connectInternal(ctx, newOwner);
21
20
  }
@@ -58,7 +57,7 @@ class OneHasOneInverseUpdateInputProcessor {
58
57
  if (!relation.nullable && !targetRelation.orphanRemoval) {
59
58
  return [new MutationConstraintViolationError([], ConstraintType.notNull)];
60
59
  }
61
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
60
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
62
61
  [targetRelation.name]: { [entity.primary]: this.primaryValue }
63
62
  });
64
63
  if (!currentOwner) {
@@ -69,7 +68,7 @@ class OneHasOneInverseUpdateInputProcessor {
69
68
  }
70
69
  const result = await this.mapper.updateInternal(
71
70
  targetEntity,
72
- { [targetEntity.primary]: currentOwner },
71
+ new CheckedPrimary(currentOwner),
73
72
  (builder) => {
74
73
  builder.addPredicates([targetRelation.name]);
75
74
  builder.addFieldValue(targetRelation.name, null);
@@ -90,7 +89,7 @@ class OneHasOneInverseUpdateInputProcessor {
90
89
  };
91
90
  }
92
91
  async connectInternal({ entity, targetEntity, targetRelation }, newOwner) {
93
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
92
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
94
93
  [targetRelation.name]: { [entity.primary]: this.primaryValue }
95
94
  });
96
95
  if (newOwner === currentOwner) {
@@ -101,14 +100,14 @@ class OneHasOneInverseUpdateInputProcessor {
101
100
  if (!targetRelation.nullable) {
102
101
  return [new MutationConstraintViolationError([], ConstraintType.notNull)];
103
102
  }
104
- const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, (builder) => {
103
+ const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), (builder) => {
105
104
  builder.addPredicates([targetRelation.name]);
106
105
  builder.addFieldValue(targetRelation.name, null);
107
106
  });
108
107
  result.push(...disconnectFromCurrentOwner);
109
108
  }
110
109
  const orphanedInverseSide = targetRelation.orphanRemoval ? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name) : null;
111
- const connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, (builder) => {
110
+ const connectToNewOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(newOwner), (builder) => {
112
111
  builder.addPredicates([targetRelation.name]);
113
112
  builder.addFieldValue(targetRelation.name, this.primaryValue);
114
113
  });
@@ -120,7 +119,7 @@ class OneHasOneInverseUpdateInputProcessor {
120
119
  return result;
121
120
  }
122
121
  async createInternal({ entity, targetEntity, targetRelation, input }) {
123
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
122
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
124
123
  [targetRelation.name]: { [entity.primary]: this.primaryValue }
125
124
  });
126
125
  if (currentOwner && !targetRelation.nullable) {
@@ -128,7 +127,7 @@ class OneHasOneInverseUpdateInputProcessor {
128
127
  }
129
128
  const result = [];
130
129
  if (currentOwner) {
131
- const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, (builder) => {
130
+ const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), (builder) => {
132
131
  builder.addPredicates([targetRelation.name]);
133
132
  builder.addFieldValue(targetRelation.name, null);
134
133
  });
@@ -1 +1 @@
1
- {"version":3,"file":"OneHasOneInverseUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationEntryNotFoundError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationResultType,\n\tNothingToDoReason,\n} from '../../Result'\nimport { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\n\ntype Context = Model.OneHasOneInverseContext\n\nexport class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {\n\t\treturn async () => {\n\t\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)\n\t\t\tif (!newOwner) {\n\t\t\t\treturn [new MutationEntryNotFoundError([], input)]\n\t\t\t}\n\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },\n\t) {\n\t\treturn async () => {\n\t\t\tconst newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)\n\t\t\tif (newOwner) {\n\t\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...ctx, input: input.create })\n\t\t}\n\t}\n\n\n\tpublic async create(ctx: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.createInternal(ctx)\n\t\t}\n\t}\n\n\tpublic async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tinput,\n\t\t\t)\n\t\t}\n\t}\n\tpublic async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\treturn async () => {\n\t\t\tconst { targetEntity, targetRelation, entity, input: { update, create } } = context\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tupdate,\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.createInternal({\n\t\t\t\t\t...context,\n\t\t\t\t\tinput: create,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t\t})\n\t\t\tif (!currentOwner) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\n\t\t\tconst result = await this.mapper.updateInternal(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetEntity.primary]: currentOwner },\n\t\t\t\tbuilder => {\n\t\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (targetRelation.orphanRemoval) {\n\t\t\t\tresult.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\t// orphan removal is handled in mapper.delete\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })\n\t\t}\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,\n\t\tnewOwner: Input.PrimaryValue,\n\t) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (newOwner === currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tif (!targetRelation.nullable) {\n\t\t\t\t// todo cascade delete support?\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\t\tconst orphanedInverseSide = targetRelation.orphanRemoval\n\t\t\t? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)\n\t\t\t: null\n\n\t\tconst connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, builder => {\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t})\n\t\tresult.push(...connectToNewOwner)\n\n\t\tif (orphanedInverseSide) {\n\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(entity, { [entity.primary]: orphanedInverseSide })\n\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t}\n\t\treturn result\n\t}\n\n\tprivate async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {\n\t\tconst currentOwner = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t// todo cascade delete support?\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\n\t\tconst connectToNewlyCreatedOwner = await this.mapper.insert(targetEntity, input, builder => {\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t})\n\t\tresult.push(...connectToNewlyCreatedOwner)\n\n\t\treturn result\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OneHasOneInverseUpdateInputProcessor.js","sources":["../../../../../../../packages/engine-content-api/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts"],"sourcesContent":["import {\n\tConstraintType,\n\tMutationConstraintViolationError,\n\tMutationNothingToDo,\n\tMutationResultList,\n\tMutationResultType,\n\tNothingToDoReason,\n} from '../../Result'\nimport { UpdateInputProcessor } from '../../../inputProcessing'\nimport { Input, Model } from '@contember/schema'\nimport { Mapper } from '../../Mapper'\nimport { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'\nimport { CheckedPrimary } from '../../CheckedPrimary'\nimport { MapperInput } from '../../types'\n\ntype Context = Model.OneHasOneInverseContext\n\nexport class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcessor.HasOneRelationInputProcessor<Context, SqlUpdateInputProcessorResult>{\n\tconstructor(\n\t\tprivate readonly primaryValue: Input.PrimaryValue,\n\t\tprivate readonly mapper: Mapper,\n\t) {\n\t}\n\n\tpublic async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere | CheckedPrimary }) {\n\t\treturn async () => {\n\t\t\tconst [newOwner, err] = await this.mapper.getPrimaryValue(ctx.targetEntity, input)\n\t\t\tif (err) return [err]\n\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t}\n\t}\n\n\tpublic async connectOrCreate(\n\t\t{ input, ...ctx }: Model.OneHasOneInverseContext & { input: MapperInput.ConnectOrCreateInput },\n\t) {\n\t\treturn async () => {\n\t\t\tconst [newOwner] = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)\n\t\t\tif (newOwner) {\n\t\t\t\treturn await this.connectInternal(ctx, newOwner)\n\t\t\t}\n\t\t\treturn await this.createInternal({ ...ctx, input: input.create })\n\t\t}\n\t}\n\n\n\tpublic async create(ctx: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.createInternal(ctx)\n\t\t}\n\t}\n\n\tpublic async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.UpdateDataInput }) {\n\t\treturn async () => {\n\t\t\treturn await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tinput,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {\n\t\treturn async () => {\n\t\t\tconst { targetEntity, targetRelation, entity, input: { update, create } } = context\n\t\t\tconst result = await this.mapper.update(\n\t\t\t\ttargetEntity,\n\t\t\t\t{ [targetRelation.name]: { [entity.primary]: this.primaryValue } },\n\t\t\t\tupdate,\n\t\t\t)\n\t\t\tif (result[0].result === MutationResultType.notFoundError) {\n\t\t\t\treturn await this.createInternal({\n\t\t\t\t\t...context,\n\t\t\t\t\tinput: create,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async disconnect({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t\t})\n\t\t\tif (!currentOwner) {\n\t\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]\n\t\t\t}\n\t\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\n\t\t\tconst result = await this.mapper.updateInternal(\n\t\t\t\ttargetEntity,\n\t\t\t\tnew CheckedPrimary(currentOwner),\n\t\t\t\tbuilder => {\n\t\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t\t},\n\t\t\t)\n\t\t\tif (targetRelation.orphanRemoval) {\n\t\t\t\tresult.push(...(await this.mapper.delete(entity, { [entity.primary]: this.primaryValue })))\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t}\n\n\tpublic async delete({ entity, targetEntity, relation, targetRelation }: Model.OneHasOneInverseContext & { input: undefined }) {\n\t\treturn async () => {\n\t\t\tif (!relation.nullable && !targetRelation.orphanRemoval) {\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\t// orphan removal is handled in mapper.delete\n\t\t\treturn await this.mapper.delete(targetEntity, { [targetRelation.name]: { [entity.primary]: this.primaryValue } })\n\t\t}\n\t}\n\n\tprivate async connectInternal(\n\t\t{ entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,\n\t\tnewOwner: Input.PrimaryValue,\n\t) {\n\t\tconst [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (newOwner === currentOwner) {\n\t\t\treturn [new MutationNothingToDo([], NothingToDoReason.alreadyExists)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tif (!targetRelation.nullable) {\n\t\t\t\t// todo cascade delete support?\n\t\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t\t}\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\t\tconst orphanedInverseSide = targetRelation.orphanRemoval\n\t\t\t? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)\n\t\t\t: null\n\n\t\tconst connectToNewOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(newOwner), builder => {\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t})\n\t\tresult.push(...connectToNewOwner)\n\n\t\tif (orphanedInverseSide) {\n\t\t\tconst deleteOrphanedInverseSide = await this.mapper.delete(entity, { [entity.primary]: orphanedInverseSide })\n\t\t\tresult.push(...deleteOrphanedInverseSide)\n\t\t}\n\t\treturn result\n\t}\n\n\tprivate async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {\n\t\tconst [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {\n\t\t\t[targetRelation.name]: { [entity.primary]: this.primaryValue },\n\t\t})\n\t\tif (currentOwner && !targetRelation.nullable) {\n\t\t\t// todo cascade delete support?\n\t\t\treturn [new MutationConstraintViolationError([], ConstraintType.notNull)]\n\t\t}\n\t\tconst result: MutationResultList = []\n\t\tif (currentOwner) {\n\t\t\tconst disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {\n\t\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t\t\tbuilder.addFieldValue(targetRelation.name, null)\n\t\t\t})\n\t\t\tresult.push(...disconnectFromCurrentOwner)\n\t\t}\n\n\t\tconst connectToNewlyCreatedOwner = await this.mapper.insert(targetEntity, input, builder => {\n\t\t\tbuilder.addFieldValue(targetRelation.name, this.primaryValue)\n\t\t\tbuilder.addPredicates([targetRelation.name])\n\t\t})\n\t\tresult.push(...connectToNewlyCreatedOwner)\n\n\t\treturn result\n\t}\n}\n"],"names":[],"mappings":"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"}