@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,3 +1,117 @@
1
- import { Model } from '@contember/schema'
1
+ import { Model, Input, Value } from '@contember/schema'
2
+ import { CheckedPrimary } from './CheckedPrimary'
2
3
 
3
4
  export type JoiningColumns = { sourceColumn: Model.JoiningColumn; targetColumn: Model.JoiningColumn }
5
+
6
+ export namespace MapperInput {
7
+
8
+ export interface ConnectRelationInput {
9
+ connect: Input.UniqueWhere | CheckedPrimary
10
+ }
11
+
12
+ export interface CreateRelationInput {
13
+ create: CreateDataInput
14
+ }
15
+
16
+ export interface ConnectOrCreateInput {
17
+ connect: Input.UniqueWhere | CheckedPrimary
18
+ create: CreateDataInput
19
+ }
20
+
21
+ export interface ConnectOrCreateRelationInput {
22
+ connectOrCreate: ConnectOrCreateInput
23
+ }
24
+
25
+ export interface DisconnectSpecifiedRelationInput {
26
+ disconnect: Input.UniqueWhere
27
+ }
28
+
29
+ export interface DeleteSpecifiedRelationInput {
30
+ delete: Input.UniqueWhere
31
+ }
32
+
33
+ export interface UpdateSpecifiedRelationInput {
34
+ update: { by: Input.UniqueWhere; data: UpdateDataInput }
35
+ }
36
+
37
+ export interface UpsertSpecifiedRelationInput {
38
+ upsert: { by: Input.UniqueWhere; update: UpdateDataInput; create: CreateDataInput }
39
+ }
40
+
41
+ export interface DisconnectRelationInput {
42
+ disconnect: true
43
+ }
44
+
45
+ export interface UpdateRelationInput {
46
+ update: UpdateDataInput
47
+ }
48
+
49
+ export interface DeleteRelationInput {
50
+ delete: true
51
+ }
52
+
53
+ export interface UpsertRelationInput {
54
+ upsert: { update: UpdateDataInput; create: CreateDataInput }
55
+ }
56
+
57
+ export interface CreateDataInput {
58
+ [column: string]: Value.FieldValue | CreateOneRelationInput | CreateManyRelationInput
59
+ }
60
+
61
+ export type CreateOneRelationInput = { alias?: string } & (
62
+ | ConnectRelationInput
63
+ | CreateRelationInput
64
+ | ConnectOrCreateRelationInput
65
+ )
66
+
67
+ export type CreateManyRelationInput = Array<CreateOneRelationInput>
68
+
69
+ export interface UpdateDataInput {
70
+ [column: string]: Value.FieldValue | UpdateOneRelationInput | UpdateManyRelationInput
71
+ }
72
+
73
+ export interface UpdateInput {
74
+ by: Input.UniqueWhere
75
+ filter?: Input.OptionalWhere
76
+ data: UpdateDataInput
77
+ }
78
+
79
+ export interface UpsertInput {
80
+ by: Input.UniqueWhere
81
+ filter?: Input.OptionalWhere
82
+ update: UpdateDataInput
83
+ create: CreateDataInput
84
+ }
85
+
86
+ export interface CreateInput {
87
+ data: CreateDataInput
88
+ }
89
+
90
+ export interface DeleteInput {
91
+ by: Input.UniqueWhere
92
+ filter?: Input.OptionalWhere
93
+ }
94
+
95
+
96
+ export type UpdateOneRelationInput =
97
+ | CreateRelationInput
98
+ | ConnectRelationInput
99
+ | ConnectOrCreateRelationInput
100
+ | DeleteRelationInput
101
+ | DisconnectRelationInput
102
+ | UpdateRelationInput
103
+ | UpsertRelationInput
104
+
105
+ export type UpdateManyRelationInputItem = { alias?: string } & (
106
+ | CreateRelationInput
107
+ | ConnectRelationInput
108
+ | ConnectOrCreateRelationInput
109
+ | DeleteSpecifiedRelationInput
110
+ | DisconnectSpecifiedRelationInput
111
+ | UpdateSpecifiedRelationInput
112
+ | UpsertSpecifiedRelationInput
113
+ )
114
+
115
+ export type UpdateManyRelationInput = Array<UpdateManyRelationInputItem>
116
+
117
+ }
@@ -9,6 +9,7 @@ import { ManyHasManyUpdateInputProcessor } from './relations/ManyHasManyUpdateIn
9
9
  import { UpdateInputProcessor } from '../../inputProcessing'
10
10
  import { MutationResultList } from '../Result'
11
11
  import { ManyHasOneUpdateInputProcessor } from './relations/ManyHasOneUpdateInputProcessor'
12
+ import { MapperInput } from '../types'
12
13
 
13
14
  export type SqlUpdateInputProcessorResult = MutationResultList | ((ctx: { primary: Input.PrimaryValue}) => Promise<MutationResultList>)
14
15
 
@@ -21,7 +22,7 @@ export class SqlUpdateInputProcessor implements UpdateInputProcessor<SqlUpdateIn
21
22
 
22
23
  constructor(
23
24
  private readonly primaryValue: Input.PrimaryValue,
24
- private readonly data: Input.UpdateDataInput,
25
+ private readonly data: MapperInput.UpdateDataInput,
25
26
  private readonly updateBuilder: UpdateBuilder,
26
27
  private readonly mapper: Mapper,
27
28
  ) {
@@ -3,13 +3,13 @@ import { Acl, Input, Model, Value } from '@contember/schema'
3
3
  import { acceptEveryFieldVisitor, getColumnName, getColumnType } from '@contember/schema-utils'
4
4
  import { Operator, QueryBuilder, UpdateBuilder as DbUpdateBuilder, Value as DbValue } from '@contember/database'
5
5
  import { PathFactory, WhereBuilder } from '../select'
6
- import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
6
+ import { ColumnValue, normalizeDbValue } from '../ColumnValue'
7
7
  import { PredicateFactory } from '../../acl'
8
8
  import { AfterUpdateEvent, BeforeUpdateEvent } from '../EventManager'
9
9
  import { Mapper } from '../Mapper'
10
10
 
11
11
  export interface UpdateResult {
12
- values: ResolvedColumnValue[]
12
+ values: ColumnValue[]
13
13
  executed: boolean
14
14
  affectedRows: number | null
15
15
  }
@@ -31,13 +31,15 @@ export class UpdateBuilder {
31
31
 
32
32
  public addFieldValue(
33
33
  fieldName: string,
34
- value: Value.GenericValueLike<Value.AtomicValue<undefined>>,
35
- ): Promise<Value.AtomicValue<undefined>> {
34
+ value: Value.FieldValue | undefined,
35
+ ): void {
36
+ if (value === undefined) {
37
+ return
38
+ }
36
39
  const columnName = getColumnName(this.schema, this.entity, fieldName)
37
40
  const columnType = getColumnType(this.schema, this.entity, fieldName)
38
- const resolvedValue = resolveGenericValue(value)
39
- this.rowData.set(columnName, { columnName, value: resolvedValue, columnType, fieldName })
40
- return resolvedValue
41
+
42
+ this.rowData.set(columnName, { columnName, value, columnType, fieldName })
41
43
  }
42
44
 
43
45
  public addNewWhere(where: Input.OptionalWhere): void {
@@ -56,7 +58,7 @@ export class UpdateBuilder {
56
58
 
57
59
  public async execute(mapper: Mapper): Promise<UpdateResult> {
58
60
  try {
59
- const resolvedData = await resolveRowData([...this.rowData.values()])
61
+ const resolvedData = [...this.rowData.values()]
60
62
  if (Object.keys(resolvedData).length === 0) {
61
63
  return { values: [], affectedRows: null, executed: false }
62
64
  }
@@ -67,7 +69,13 @@ export class UpdateBuilder {
67
69
  qb = resolvedData.reduce(
68
70
  (qb, value) =>
69
71
  qb
70
- .select(expr => expr.selectValue(value.resolvedValue as DbValue, value.columnType), value.columnName)
72
+ .select(
73
+ expr => expr.selectValue(
74
+ normalizeDbValue(value.value, value.columnType),
75
+ value.columnType,
76
+ ),
77
+ value.columnName,
78
+ )
71
79
  .select(['root_', value.columnName], value.columnName + oldColSuffix),
72
80
  qb,
73
81
  )
@@ -118,13 +126,13 @@ export class UpdateBuilder {
118
126
  })
119
127
 
120
128
 
121
- const beforeEvent = new BeforeUpdateEvent(this.entity, resolvedData as ResolvedColumnValue[], this.primary)
129
+ const beforeEvent = new BeforeUpdateEvent(this.entity, resolvedData, this.primary)
122
130
  await mapper.eventManager.fire(beforeEvent)
123
131
 
124
132
  const result = await qb.execute(mapper.db)
125
133
 
126
134
  if (result.length === 1) {
127
- const eventData = (resolvedData as ResolvedColumnValue[]).map(it => ({
135
+ const eventData = (resolvedData).map(it => ({
128
136
  ...it,
129
137
  old: result[0][it.columnName + oldColSuffix],
130
138
  }))
@@ -133,7 +141,7 @@ export class UpdateBuilder {
133
141
  await mapper.eventManager.fire(afterUpdateEvent)
134
142
  }
135
143
 
136
- return { values: resolvedData as ResolvedColumnValue[], affectedRows: result.length, executed: true }
144
+ return { values: resolvedData, affectedRows: result.length, executed: true }
137
145
  } catch (e) {
138
146
  throw e
139
147
  }
@@ -5,10 +5,11 @@ import { PredicateFactory } from '../../acl'
5
5
  import { UpdateBuilderFactory } from './UpdateBuilderFactory'
6
6
  import { Mapper } from '../Mapper'
7
7
  import { acceptFieldVisitor } from '@contember/schema-utils'
8
- import { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason, RowValues } from '../Result'
8
+ import { MutationNoResultError, MutationNothingToDo, MutationResultList, MutationUpdateOk, NothingToDoReason } from '../Result'
9
9
  import { UpdateBuilder } from './UpdateBuilder'
10
10
  import { rowDataToFieldValues } from '../ColumnValue'
11
11
  import { DatabaseMetadata } from '@contember/database'
12
+ import { MapperInput } from '../types'
12
13
 
13
14
  export class Updater {
14
15
  constructor(
@@ -22,7 +23,7 @@ export class Updater {
22
23
  mapper: Mapper,
23
24
  entity: Model.Entity,
24
25
  primaryValue: Input.PrimaryValue,
25
- data: Input.UpdateDataInput,
26
+ data: MapperInput.UpdateDataInput,
26
27
  filter?: Input.OptionalWhere,
27
28
  ): Promise<MutationResultList> {
28
29
  const updateBuilder = this.updateBuilderFactory.create(entity, primaryValue)
@@ -3,6 +3,8 @@ import { Input, Model } from '@contember/schema'
3
3
  import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
4
4
  import { Mapper } from '../../Mapper'
5
5
  import { SqlUpdateInputProcessorResult } from '../../update'
6
+ import { CheckedPrimary } from '../../CheckedPrimary'
7
+ import { MapperInput } from '../../types'
6
8
 
7
9
  type Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext
8
10
 
@@ -13,19 +15,17 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
13
15
  }
14
16
 
15
17
  public async connect(
16
- { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
18
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
17
19
  ) {
18
20
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
19
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
20
- if (!otherPrimary) {
21
- return [new MutationEntryNotFoundError([], input)]
22
- }
21
+ const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, input)
22
+ if (err) return [err]
23
23
  return await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
24
24
  }
25
25
  }
26
26
 
27
27
  public async create(
28
- { entity, targetEntity, relation, input }: Context & { input: Input.CreateDataInput },
28
+ { entity, targetEntity, relation, input }: Context & { input: MapperInput.CreateDataInput },
29
29
  ) {
30
30
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
31
31
  const insertResult = await this.mapper.insert(targetEntity, input)
@@ -41,10 +41,10 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
41
41
  }
42
42
 
43
43
  public async connectOrCreate(
44
- context: Context & { input: Input.ConnectOrCreateInput },
44
+ context: Context & { input: MapperInput.ConnectOrCreateInput },
45
45
  ) {
46
46
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
47
- let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
47
+ let [otherPrimary] = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
48
48
  if (!otherPrimary) {
49
49
  const insertResult = await this.mapper.insert(context.targetEntity, context.input.create)
50
50
  otherPrimary = getInsertPrimary(insertResult)
@@ -60,12 +60,10 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
60
60
  { entity, targetEntity, relation, input: { where, data } }: Context & { input: UpdateInputProcessor.UpdateManyInput },
61
61
  ) {
62
62
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
63
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)
64
- if (!otherPrimary) {
65
- return [new MutationEntryNotFoundError([], where)]
66
- }
63
+ const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, where)
64
+ if (err) return [err]
67
65
  return [
68
- ...(await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, data)),
66
+ ...(await this.mapper.update(targetEntity, new CheckedPrimary(otherPrimary), data)),
69
67
  ...(await this.mapper.connectJunction(entity, relation, primary, otherPrimary)),
70
68
  ]
71
69
  }
@@ -75,9 +73,9 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
75
73
  { entity, relation, targetEntity, input: { create, update, where } }: Context & { input: UpdateInputProcessor.UpsertManyInput },
76
74
  ) {
77
75
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
78
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, where)
76
+ const [otherPrimary] = await this.mapper.getPrimaryValue(targetEntity, where)
79
77
  if (otherPrimary) {
80
- const updateResult = await this.mapper.update(targetEntity, { [targetEntity.primary]: otherPrimary }, update)
78
+ const updateResult = await this.mapper.update(targetEntity, new CheckedPrimary(otherPrimary), update)
81
79
  const connectResult = await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
82
80
  return [...updateResult, ...connectResult]
83
81
  } else {
@@ -97,10 +95,8 @@ export class ManyHasManyUpdateInputProcessor implements UpdateInputProcessor.Has
97
95
  { entity, targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
98
96
  ) {
99
97
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
100
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
101
- if (!otherPrimary) {
102
- return [new MutationEntryNotFoundError([], input)]
103
- }
98
+ const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, input)
99
+ if (err) return [err]
104
100
 
105
101
  return await this.mapper.disconnectJunction(entity, relation, primary, otherPrimary)
106
102
  }
@@ -11,6 +11,8 @@ import {
11
11
  import { Mapper } from '../../Mapper'
12
12
  import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
13
13
  import { UpdateBuilder } from '../UpdateBuilder'
14
+ import { CheckedPrimary } from '../../CheckedPrimary'
15
+ import { MapperInput } from '../../types'
14
16
 
15
17
  type Context = Model.ManyHasOneContext
16
18
 
@@ -24,18 +26,16 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
24
26
  }
25
27
 
26
28
  public async connect(
27
- { targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
29
+ { targetEntity, relation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
28
30
  ) {
29
- const value = await this.mapper.getPrimaryValue(targetEntity, input)
30
- if (!value) {
31
- return [new MutationEntryNotFoundError([], input)]
32
- }
31
+ const [value, err] = await this.mapper.getPrimaryValue(targetEntity, input)
32
+ if (err) return [err]
33
33
  this.builder.addFieldValue(relation.name, value)
34
34
  return []
35
35
  }
36
36
 
37
37
  public async create(
38
- { relation, targetEntity, input }: Context & { input: Input.CreateDataInput },
38
+ { relation, targetEntity, input }: Context & { input: MapperInput.CreateDataInput },
39
39
  ) {
40
40
  const insertResult = await this.mapper.insert(targetEntity, input)
41
41
  const value = getInsertPrimary(insertResult)
@@ -47,9 +47,9 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
47
47
  }
48
48
 
49
49
  public async connectOrCreate(
50
- { input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },
50
+ { input: { connect, create }, relation, targetEntity }: Context & { input: MapperInput.ConnectOrCreateInput },
51
51
  ) {
52
- const value = await this.mapper.getPrimaryValue(targetEntity, connect)
52
+ const [value] = await this.mapper.getPrimaryValue(targetEntity, connect)
53
53
  if (value) {
54
54
  this.builder.addFieldValue(relation.name, value)
55
55
  } else {
@@ -65,7 +65,7 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
65
65
  }
66
66
 
67
67
  public async update(
68
- { entity, relation, targetEntity, targetRelation, input }: Context & { input: Input.UpdateDataInput },
68
+ { entity, relation, targetEntity, targetRelation, input }: Context & { input: MapperInput.UpdateDataInput },
69
69
  ) {
70
70
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
71
71
  const inversePrimary = await this.mapper.selectField(
@@ -76,7 +76,7 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
76
76
  if (!inversePrimary) {
77
77
  return [new MutationNothingToDo([], NothingToDoReason.emptyRelation)]
78
78
  }
79
- return await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, input)
79
+ return await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), input)
80
80
  }
81
81
  }
82
82
 
@@ -94,7 +94,7 @@ export class ManyHasOneUpdateInputProcessor implements UpdateInputProcessor.HasO
94
94
  }
95
95
 
96
96
  return async () =>
97
- await this.mapper.update(targetEntity, { [targetEntity.primary]: inversePrimary }, update)
97
+ await this.mapper.update(targetEntity, new CheckedPrimary(inversePrimary), update)
98
98
  }
99
99
 
100
100
  public async disconnect(
@@ -3,6 +3,8 @@ import { Input, Model } from '@contember/schema'
3
3
  import { Mapper } from '../../Mapper'
4
4
  import { MutationResultType } from '../../Result'
5
5
  import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
6
+ import { CheckedPrimary } from '../../CheckedPrimary'
7
+ import { MapperInput } from '../../types'
6
8
 
7
9
  type Context = Model.OneHasManyContext
8
10
 
@@ -13,33 +15,33 @@ export class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasM
13
15
  }
14
16
 
15
17
  public async connect(
16
- { entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },
18
+ { entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
17
19
  ) {
18
20
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
19
21
  return await this.mapper.update(targetEntity, input, {
20
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
22
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) },
21
23
  })
22
24
  }
23
25
  }
24
26
 
25
27
  public async create(
26
- { entity, targetEntity, targetRelation, input }: Context & { input: Input.CreateDataInput },
28
+ { entity, targetEntity, targetRelation, input }: Context & { input: MapperInput.CreateDataInput },
27
29
  ) {
28
30
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
29
31
  return await this.mapper.insert(targetEntity, {
30
32
  ...input,
31
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
33
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) },
32
34
  })
33
35
  }
34
36
  }
35
37
 
36
38
  public async connectOrCreate(
37
- { entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: Input.ConnectOrCreateInput },
39
+ { entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: MapperInput.ConnectOrCreateInput },
38
40
  ) {
39
41
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
40
42
  const connectData = {
41
43
  [targetRelation.name]: {
42
- connect: { [entity.primary]: primary },
44
+ connect: new CheckedPrimary(primary),
43
45
  },
44
46
  }
45
47
  return await this.mapper.upsert(targetEntity, connect, connectData, {
@@ -79,7 +81,7 @@ export class OneHasManyUpdateInputProcessor implements UpdateInputProcessor.HasM
79
81
  if (result[0].result === MutationResultType.notFoundError) {
80
82
  return await this.mapper.insert(targetEntity, {
81
83
  ...create,
82
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
84
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) },
83
85
  })
84
86
  }
85
87
  return result
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  ConstraintType,
3
3
  MutationConstraintViolationError,
4
- MutationEntryNotFoundError,
5
4
  MutationNothingToDo,
6
5
  MutationResultList,
7
6
  MutationResultType,
@@ -11,6 +10,8 @@ import { UpdateInputProcessor } from '../../../inputProcessing'
11
10
  import { Input, Model } from '@contember/schema'
12
11
  import { Mapper } from '../../Mapper'
13
12
  import { SqlUpdateInputProcessorResult } from '../SqlUpdateInputProcessor'
13
+ import { CheckedPrimary } from '../../CheckedPrimary'
14
+ import { MapperInput } from '../../types'
14
15
 
15
16
  type Context = Model.OneHasOneInverseContext
16
17
 
@@ -21,21 +22,19 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
21
22
  ) {
22
23
  }
23
24
 
24
- public async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere }) {
25
+ public async connect({ input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.UniqueWhere | CheckedPrimary }) {
25
26
  return async () => {
26
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input)
27
- if (!newOwner) {
28
- return [new MutationEntryNotFoundError([], input)]
29
- }
27
+ const [newOwner, err] = await this.mapper.getPrimaryValue(ctx.targetEntity, input)
28
+ if (err) return [err]
30
29
  return await this.connectInternal(ctx, newOwner)
31
30
  }
32
31
  }
33
32
 
34
33
  public async connectOrCreate(
35
- { input, ...ctx }: Model.OneHasOneInverseContext & { input: Input.ConnectOrCreateInput },
34
+ { input, ...ctx }: Model.OneHasOneInverseContext & { input: MapperInput.ConnectOrCreateInput },
36
35
  ) {
37
36
  return async () => {
38
- const newOwner = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)
37
+ const [newOwner] = await this.mapper.getPrimaryValue(ctx.targetEntity, input.connect)
39
38
  if (newOwner) {
40
39
  return await this.connectInternal(ctx, newOwner)
41
40
  }
@@ -44,13 +43,13 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
44
43
  }
45
44
 
46
45
 
47
- public async create(ctx: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {
46
+ public async create(ctx: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {
48
47
  return async () => {
49
48
  return await this.createInternal(ctx)
50
49
  }
51
50
  }
52
51
 
53
- public async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.UpdateDataInput }) {
52
+ public async update({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.UpdateDataInput }) {
54
53
  return async () => {
55
54
  return await this.mapper.update(
56
55
  targetEntity,
@@ -59,6 +58,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
59
58
  )
60
59
  }
61
60
  }
61
+
62
62
  public async upsert(context: Model.OneHasOneInverseContext & { input: UpdateInputProcessor.UpsertInput }) {
63
63
  return async () => {
64
64
  const { targetEntity, targetRelation, entity, input: { update, create } } = context
@@ -82,7 +82,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
82
82
  if (!relation.nullable && !targetRelation.orphanRemoval) {
83
83
  return [new MutationConstraintViolationError([], ConstraintType.notNull)]
84
84
  }
85
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
85
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
86
86
  [targetRelation.name]: { [entity.primary]: this.primaryValue },
87
87
  })
88
88
  if (!currentOwner) {
@@ -94,7 +94,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
94
94
 
95
95
  const result = await this.mapper.updateInternal(
96
96
  targetEntity,
97
- { [targetEntity.primary]: currentOwner },
97
+ new CheckedPrimary(currentOwner),
98
98
  builder => {
99
99
  builder.addPredicates([targetRelation.name])
100
100
  builder.addFieldValue(targetRelation.name, null)
@@ -121,7 +121,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
121
121
  { entity, targetEntity, targetRelation }: Model.OneHasOneInverseContext,
122
122
  newOwner: Input.PrimaryValue,
123
123
  ) {
124
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
124
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
125
125
  [targetRelation.name]: { [entity.primary]: this.primaryValue },
126
126
  })
127
127
  if (newOwner === currentOwner) {
@@ -133,7 +133,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
133
133
  // todo cascade delete support?
134
134
  return [new MutationConstraintViolationError([], ConstraintType.notNull)]
135
135
  }
136
- const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {
136
+ const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {
137
137
  builder.addPredicates([targetRelation.name])
138
138
  builder.addFieldValue(targetRelation.name, null)
139
139
  })
@@ -143,7 +143,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
143
143
  ? await this.mapper.selectField(targetEntity, { [targetEntity.primary]: newOwner }, targetRelation.name)
144
144
  : null
145
145
 
146
- const connectToNewOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: newOwner }, builder => {
146
+ const connectToNewOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(newOwner), builder => {
147
147
  builder.addPredicates([targetRelation.name])
148
148
  builder.addFieldValue(targetRelation.name, this.primaryValue)
149
149
  })
@@ -156,8 +156,8 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
156
156
  return result
157
157
  }
158
158
 
159
- private async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: Input.CreateDataInput }) {
160
- const currentOwner = await this.mapper.getPrimaryValue(targetEntity, {
159
+ private async createInternal({ entity, targetEntity, targetRelation, input }: Model.OneHasOneInverseContext & { input: MapperInput.CreateDataInput }) {
160
+ const [currentOwner] = await this.mapper.getPrimaryValue(targetEntity, {
161
161
  [targetRelation.name]: { [entity.primary]: this.primaryValue },
162
162
  })
163
163
  if (currentOwner && !targetRelation.nullable) {
@@ -166,7 +166,7 @@ export class OneHasOneInverseUpdateInputProcessor implements UpdateInputProcesso
166
166
  }
167
167
  const result: MutationResultList = []
168
168
  if (currentOwner) {
169
- const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, { [targetEntity.primary]: currentOwner }, builder => {
169
+ const disconnectFromCurrentOwner = await this.mapper.updateInternal(targetEntity, new CheckedPrimary(currentOwner), builder => {
170
170
  builder.addPredicates([targetRelation.name])
171
171
  builder.addFieldValue(targetRelation.name, null)
172
172
  })