@contember/engine-content-api 2.0.0-alpha.35 → 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,6 +1,6 @@
1
1
  import { Input, Model, Value } from '@contember/schema'
2
- import { ResolvedColumnValue } from './ColumnValue'
3
2
  import { Mapper } from './Mapper'
3
+ import { ColumnValue } from './ColumnValue'
4
4
 
5
5
  export class BeforeInsertEvent {
6
6
  public type = 'BeforeInsertEvent' as const
@@ -9,7 +9,7 @@ export class BeforeInsertEvent {
9
9
 
10
10
  constructor(
11
11
  public readonly entity: Model.Entity,
12
- public readonly data: ResolvedColumnValue[],
12
+ public readonly data: ColumnValue[],
13
13
  ) {
14
14
  }
15
15
  }
@@ -19,7 +19,7 @@ export class AfterInsertEvent {
19
19
 
20
20
  constructor(
21
21
  public readonly entity: Model.Entity,
22
- public readonly data: ResolvedColumnValue[],
22
+ public readonly data: ColumnValue[],
23
23
  public readonly id: Input.PrimaryValue,
24
24
  ) {
25
25
  }
@@ -33,7 +33,7 @@ export class BeforeUpdateEvent {
33
33
 
34
34
  constructor(
35
35
  public readonly entity: Model.Entity,
36
- public readonly data: ResolvedColumnValue[],
36
+ public readonly data: ColumnValue[],
37
37
  public readonly id: Input.PrimaryValue,
38
38
  ) {
39
39
  }
@@ -46,13 +46,13 @@ export class AfterUpdateEvent {
46
46
 
47
47
  constructor(
48
48
  public readonly entity: Model.Entity,
49
- public readonly data: (ResolvedColumnValue & { old: Value.FieldValue })[],
49
+ public readonly data: (ColumnValue & { old: Value.FieldValue })[],
50
50
  public readonly id: Input.PrimaryValue,
51
51
  ) {
52
52
  }
53
53
  get hasChanges() {
54
54
  // todo: deep equals
55
- return this._hasChanges = this.data.some(it => it.resolvedValue !== it.old)
55
+ return this._hasChanges = this.data.some(it => it.value !== it.old)
56
56
  }
57
57
  }
58
58
 
@@ -23,9 +23,9 @@ import { Mutex } from '../utils'
23
23
  import { CheckedPrimary } from './CheckedPrimary'
24
24
  import { ImplementationException } from '../exception'
25
25
  import { EventManager } from './EventManager'
26
+ import { MapperInput } from './types'
26
27
 
27
28
  export class Mapper<ConnectionType extends Connection.ConnectionLike = Connection.ConnectionLike> {
28
- private primaryKeyCache: Record<string, Promise<string> | string> = {}
29
29
  private systemVariablesSetupDone: Promise<void> | undefined
30
30
  public readonly deletedEntities = new DeletedEntitiesStorage()
31
31
  public readonly mutex = new Mutex()
@@ -175,7 +175,7 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
175
175
 
176
176
  public async insert(
177
177
  entity: Model.Entity,
178
- data: Input.CreateDataInput,
178
+ data: MapperInput.CreateDataInput,
179
179
  builderCb: (builder: InsertBuilder) => void = () => {},
180
180
  ): Promise<MutationResultList> {
181
181
  if (entity.view) {
@@ -189,8 +189,8 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
189
189
 
190
190
  public async update(
191
191
  entity: Model.Entity,
192
- by: Input.UniqueWhere,
193
- data: Input.UpdateDataInput,
192
+ by: Input.UniqueWhere | CheckedPrimary,
193
+ data: MapperInput.UpdateDataInput,
194
194
  filter?: Input.OptionalWhere,
195
195
  ): Promise<MutationResultList> {
196
196
  if (entity.view) {
@@ -198,10 +198,9 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
198
198
  }
199
199
  await this.setupSystemVariables()
200
200
  return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
201
- const primaryValue = await this.getPrimaryValue(entity, by)
202
- if (primaryValue === undefined) {
203
- return [new MutationEntryNotFoundError([], by)]
204
- }
201
+ const [primaryValue, err] = await this.getPrimaryValue(entity, by)
202
+ if (err) return [err]
203
+
205
204
  return await this.updater.update(this, entity, primaryValue, data, filter)
206
205
  })
207
206
  }
@@ -216,18 +215,17 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
216
215
  }
217
216
  await this.setupSystemVariables()
218
217
  return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
219
- const primaryValue = await this.getPrimaryValue(entity, by)
220
- if (primaryValue === undefined) {
221
- return [new MutationEntryNotFoundError([], by as Input.UniqueWhere)]
222
- }
218
+ const [primaryValue, err] = await this.getPrimaryValue(entity, by)
219
+ if (err) return [err]
220
+
223
221
  return await this.updater.updateCb(this, entity, primaryValue, builderCb)
224
222
  })
225
223
  }
226
224
  public async upsert(
227
225
  entity: Model.Entity,
228
- by: Input.UniqueWhere,
229
- update: Input.UpdateDataInput,
230
- create: Input.CreateDataInput,
226
+ by: Input.UniqueWhere | CheckedPrimary,
227
+ update: MapperInput.UpdateDataInput,
228
+ create: MapperInput.CreateDataInput,
231
229
  filter?: Input.OptionalWhere,
232
230
  ): Promise<MutationResultList> {
233
231
  if (entity.view) {
@@ -235,7 +233,7 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
235
233
  }
236
234
  await this.setupSystemVariables()
237
235
  return tryMutation(this.schema, this.schemaDatabaseMetadata, async () => {
238
- const primaryValue = await this.getPrimaryValue(entity, by)
236
+ const [primaryValue] = await this.getPrimaryValue(entity, by)
239
237
  if (primaryValue === undefined) {
240
238
  return await this.insertInternal(entity, create)
241
239
  }
@@ -243,10 +241,8 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
243
241
  })
244
242
  }
245
243
 
246
- private insertInternal(entity: Model.Entity, data: Input.CreateDataInput, builderCb: (builder: InsertBuilder) => void = () => {}) {
244
+ private insertInternal(entity: Model.Entity, data: MapperInput.CreateDataInput, builderCb: (builder: InsertBuilder) => void = () => {}) {
247
245
  return this.inserter.insert(this, entity, data, id => {
248
- const where = { [entity.primary]: id }
249
- this.primaryKeyCache[this.hashWhere(entity.name, where)] = id
250
246
  }, builderCb)
251
247
  }
252
248
 
@@ -317,26 +313,12 @@ export class Mapper<ConnectionType extends Connection.ConnectionLike = Connectio
317
313
  public async getPrimaryValue(
318
314
  entity: Model.Entity,
319
315
  where: Input.UniqueWhere | CheckedPrimary,
320
- ): Promise<Input.PrimaryValue | undefined> {
316
+ ): Promise<[Input.PrimaryValue, undefined] | [undefined, MutationEntryNotFoundError]> {
321
317
  if (where instanceof CheckedPrimary) {
322
- return where.primaryValue
323
- }
324
- const hash = this.hashWhere(entity.name, where)
325
- if (this.primaryKeyCache[hash]) {
326
- return this.primaryKeyCache[hash]
318
+ return [where.primaryValue, undefined]
327
319
  }
328
- const primaryPromise = this.selectField(entity, where, entity.primary)
329
- this.primaryKeyCache[hash] = primaryPromise
330
- const primaryValue = await primaryPromise
331
- const uniqueFields = Object.keys(where)
332
- if (primaryValue && (uniqueFields.length !== 1 || uniqueFields[0] !== entity.primary)) {
333
- this.primaryKeyCache[this.hashWhere(entity.name, { [entity.primary]: primaryValue })] = primaryValue
334
- }
335
- return primaryValue
336
- }
337
-
338
- private hashWhere(entityName: string, where: Input.UniqueWhere): string {
339
- return JSON.stringify([entityName, where])
320
+ const result = await this.selectField(entity, where, entity.primary)
321
+ return result ? [result, undefined] : [undefined, new MutationEntryNotFoundError([], where)]
340
322
  }
341
323
 
342
324
  private async setupSystemVariables() {
@@ -1,4 +1,5 @@
1
1
  import { Input, Model, Value } from '@contember/schema'
2
+ import { MapperInput } from './types'
2
3
 
3
4
  export enum MutationResultType {
4
5
  ok = 'ok',
@@ -59,7 +60,7 @@ export class MutationUpdateOk implements MutationResultInterface {
59
60
  public readonly paths: Path[],
60
61
  public readonly entity: Model.Entity,
61
62
  public readonly primary: Value.PrimaryValue,
62
- public readonly input: Input.UpdateDataInput,
63
+ public readonly input: MapperInput.UpdateDataInput,
63
64
  public readonly values: RowValues,
64
65
  public readonly oldValues?: RowValues,
65
66
  ) {}
@@ -75,7 +76,7 @@ export class MutationCreateOk implements MutationResultInterface {
75
76
  public readonly paths: Path[],
76
77
  public readonly entity: Model.Entity,
77
78
  public readonly primary: Value.PrimaryValue,
78
- public readonly input: Input.CreateDataInput,
79
+ public readonly input: MapperInput.CreateDataInput,
79
80
  public readonly values: RowValues,
80
81
  ) {}
81
82
  }
@@ -50,10 +50,8 @@ export class DeleteExecutor {
50
50
  filter?: Input.OptionalWhere,
51
51
  ): Promise<MutationResultList> {
52
52
  return mapper.mutex.execute(async () => {
53
- const primaryValue = await mapper.getPrimaryValue(entity, by)
54
- if (!primaryValue) {
55
- return [new MutationEntryNotFoundError([], by as Input.UniqueWhere)]
56
- }
53
+ const [primaryValue, err] = await mapper.getPrimaryValue(entity, by)
54
+ if (err) return [err]
57
55
 
58
56
  if (mapper.deletedEntities.isDeleted(entity.name, primaryValue)) {
59
57
  return [new MutationNothingToDo([], NothingToDoReason.alreadyDeleted)]
@@ -79,8 +77,7 @@ export class DeleteExecutor {
79
77
  columnName: Object.keys(entry.values)[0],
80
78
  fieldName: Object.keys(entry.input)[0],
81
79
  columnType: 'text',
82
- resolvedValue: null,
83
- value: Promise.resolve(null),
80
+ value: null,
84
81
  }], entry.primary)
85
82
  entryToEventMap.set(entry, beforeUpdateEvent)
86
83
  await mapper.eventManager.fire(beforeUpdateEvent)
@@ -99,8 +96,7 @@ export class DeleteExecutor {
99
96
  columnName: Object.keys(entry.values)[0],
100
97
  fieldName: Object.keys(entry.input)[0],
101
98
  columnType: 'text',
102
- resolvedValue: null,
103
- value: Promise.resolve(null),
99
+ value: null,
104
100
  old: Object.values(entry.oldValues ?? {})[0],
105
101
  }]
106
102
  const afterEvent = new AfterUpdateEvent(entry.entity, data, entry.primary)
@@ -2,19 +2,19 @@ import { Acl, Input, Model, Value } from '@contember/schema'
2
2
  import { InsertBuilder as DbInsertBuilder, QueryBuilder, Value as DbValue } from '@contember/database'
3
3
  import { PathFactory, WhereBuilder } from '../select'
4
4
  import { getColumnName, getColumnType } from '@contember/schema-utils'
5
- import { ColumnValue, ResolvedColumnValue, resolveGenericValue, resolveRowData } from '../ColumnValue'
5
+ import { ColumnValue, normalizeDbValue } from '../ColumnValue'
6
6
  import { PredicateFactory } from '../../acl'
7
7
  import { AfterInsertEvent, BeforeInsertEvent } from '../EventManager'
8
8
  import { Mapper } from '../Mapper'
9
9
 
10
10
  export interface InsertResult {
11
- values: ResolvedColumnValue[]
11
+ values: ColumnValue[]
12
12
  executed: boolean
13
13
  primaryValue: Value.PrimaryValue | null
14
14
  }
15
15
 
16
16
  export class InsertBuilder {
17
- private rowData: Map<string, ColumnValue<undefined>> = new Map()
17
+ private rowData: Map<string, ColumnValue> = new Map()
18
18
  private where: { and: Input.OptionalWhere[] } = { and: [] }
19
19
 
20
20
  constructor(
@@ -27,13 +27,14 @@ export class InsertBuilder {
27
27
 
28
28
  public addFieldValue(
29
29
  fieldName: string,
30
- value: Value.GenericValueLike<Value.AtomicValue<undefined>>,
31
- ): Promise<Value.AtomicValue<undefined>> {
30
+ value: Value.FieldValue | undefined,
31
+ ): void {
32
+ if (value === undefined) {
33
+ return
34
+ }
32
35
  const columnName = getColumnName(this.schema, this.entity, fieldName)
33
36
  const columnType = getColumnType(this.schema, this.entity, fieldName)
34
- const resolvedValue = resolveGenericValue(value)
35
- this.rowData.set(columnName, { columnName, value: resolvedValue, columnType, fieldName })
36
- return resolvedValue
37
+ this.rowData.set(columnName, { columnName, value, columnType, fieldName })
37
38
  }
38
39
 
39
40
  public addPredicates(fields: string[]): void {
@@ -45,13 +46,9 @@ export class InsertBuilder {
45
46
  this.where.and.push(where)
46
47
  }
47
48
 
48
- public async getResolvedData(): Promise<ResolvedColumnValue[]> {
49
- return resolveRowData([...this.rowData.values()])
50
- }
51
-
52
49
  public async execute(mapper: Mapper): Promise<InsertResult> {
53
50
  try {
54
- const resolvedData = await this.getResolvedData()
51
+ const resolvedData = [...this.rowData.values()]
55
52
 
56
53
  const insertData = resolvedData.reduce<QueryBuilder.ColumnExpressionMap>(
57
54
  (result, item) => ({ ...result, [item.columnName]: expr => expr.select(['root_', item.columnName]) }),
@@ -61,7 +58,13 @@ export class InsertBuilder {
61
58
  .with('root_', qb => {
62
59
  return resolvedData.reduce(
63
60
  (qb, value) =>
64
- qb.select(expr => expr.selectValue(value.resolvedValue as DbValue, value.columnType), value.columnName),
61
+ qb.select(
62
+ expr => expr.selectValue(
63
+ normalizeDbValue(value.value, value.columnType),
64
+ value.columnType,
65
+ ),
66
+ value.columnName,
67
+ ),
65
68
  qb,
66
69
  )
67
70
  })
@@ -73,17 +76,17 @@ export class InsertBuilder {
73
76
  })
74
77
  .returning(this.entity.primaryColumn)
75
78
 
76
- const beforeInsertEvent = new BeforeInsertEvent(this.entity, resolvedData as ResolvedColumnValue[])
79
+ const beforeInsertEvent = new BeforeInsertEvent(this.entity, resolvedData)
77
80
  await mapper.eventManager.fire(beforeInsertEvent)
78
81
 
79
82
  const returning = (await qb.execute(mapper.db)).map(it => it[this.entity.primaryColumn])
80
83
  const result = returning.length === 1 ? returning[0] : null
81
84
 
82
- const afterInsertEvent = new AfterInsertEvent(this.entity, resolvedData as ResolvedColumnValue[], result)
85
+ const afterInsertEvent = new AfterInsertEvent(this.entity, resolvedData, result)
83
86
  beforeInsertEvent.afterEvent = afterInsertEvent
84
87
  await mapper.eventManager.fire(afterInsertEvent)
85
88
 
86
- return { values: resolvedData as ResolvedColumnValue[], executed: true, primaryValue: result }
89
+ return { values: resolvedData, executed: true, primaryValue: result }
87
90
  } catch (e) {
88
91
  throw e
89
92
  }
@@ -1,13 +1,14 @@
1
- import { MutationCreateOk, MutationNoResultError, MutationNothingToDo, MutationResultList, NothingToDoReason } from '../Result'
1
+ import { MutationCreateOk, MutationNoResultError, MutationResultList } from '../Result'
2
2
  import { CreateInputVisitor } from '../../inputProcessing'
3
3
  import { SqlCreateInputProcessor, SqlCreateInputProcessorResult } from './SqlCreateInputProcessor'
4
4
  import { Mapper } from '../Mapper'
5
- import { Input, Model } from '@contember/schema'
5
+ import { Model } from '@contember/schema'
6
6
  import { acceptFieldVisitor, Providers } from '@contember/schema-utils'
7
7
  import { InsertBuilderFactory } from './InsertBuilderFactory'
8
8
  import { InsertBuilder } from './InsertBuilder'
9
9
  import { rowDataToFieldValues } from '../ColumnValue'
10
10
  import { DatabaseMetadata } from '@contember/database'
11
+ import { MapperInput } from '../types'
11
12
 
12
13
  export class Inserter {
13
14
  constructor(
@@ -20,7 +21,7 @@ export class Inserter {
20
21
  public async insert(
21
22
  mapper: Mapper,
22
23
  entity: Model.Entity,
23
- data: Input.CreateDataInput,
24
+ data: MapperInput.CreateDataInput,
24
25
  insertIdCallback: (id: string) => void,
25
26
  builderCb: (builder: InsertBuilder) => void,
26
27
  ): Promise<MutationResultList> {
@@ -36,9 +36,7 @@ export class SqlCreateInputProcessor implements CreateInputProcessor<SqlCreateIn
36
36
  public async column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<SqlCreateInputProcessorResult> {
37
37
  this.insertBuilder.addFieldValue(
38
38
  context.column.name,
39
- ((): Value.GenericValueLike<Value.AtomicValue | undefined> => {
40
- return resolveColumnValue(context, this.providers)
41
- })(),
39
+ resolveColumnValue(context, this.providers),
42
40
  )
43
41
  return []
44
42
  }
@@ -3,6 +3,8 @@ import { getInsertPrimary, MutationEntryNotFoundError } from '../../Result'
3
3
  import { Mapper } from '../../Mapper'
4
4
  import { CreateInputProcessor } from '../../../inputProcessing'
5
5
  import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
6
+ import { CheckedPrimary } from '../../CheckedPrimary'
7
+ import { MapperInput } from '../../types'
6
8
 
7
9
  type Context = Model.ManyHasManyOwningContext | Model.ManyHasManyInverseContext
8
10
 
@@ -14,19 +16,17 @@ export class ManyHasManyCreateInputProcessor implements CreateInputProcessor.Has
14
16
  }
15
17
 
16
18
  public async connect(
17
- { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere },
19
+ { entity, targetEntity, relation, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
18
20
  ): Promise<SqlCreateInputProcessorResult> {
19
21
  return async ({ primary }) => {
20
- const otherPrimary = await this.mapper.getPrimaryValue(targetEntity, input)
21
- if (!otherPrimary) {
22
- return [new MutationEntryNotFoundError([], input)]
23
- }
22
+ const [otherPrimary, err] = await this.mapper.getPrimaryValue(targetEntity, input)
23
+ if (err) return [err]
24
24
  return await this.mapper.connectJunction(entity, relation, primary, otherPrimary)
25
25
  }
26
26
  }
27
27
 
28
28
  public async create(
29
- { entity, targetEntity, relation, input }: Context & { input: Input.CreateDataInput },
29
+ { entity, targetEntity, relation, input }: Context & { input: MapperInput.CreateDataInput },
30
30
  ) {
31
31
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
32
32
  const insertResult = await this.mapper.insert(targetEntity, input)
@@ -42,10 +42,10 @@ export class ManyHasManyCreateInputProcessor implements CreateInputProcessor.Has
42
42
  }
43
43
 
44
44
  public async connectOrCreate(
45
- context: Context & { input: Input.ConnectOrCreateInput },
45
+ context: Context & { input: MapperInput.ConnectOrCreateInput },
46
46
  ) {
47
47
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
48
- let otherPrimary = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
48
+ let [otherPrimary] = await this.mapper.getPrimaryValue(context.targetEntity, context.input.connect)
49
49
  if (!otherPrimary) {
50
50
  const insertResult = await this.mapper.insert(context.targetEntity, context.input.create)
51
51
  otherPrimary = getInsertPrimary(insertResult)
@@ -4,6 +4,8 @@ import { Mapper } from '../../Mapper'
4
4
  import { CreateInputProcessor } from '../../../inputProcessing'
5
5
  import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
6
6
  import { InsertBuilder } from '../InsertBuilder'
7
+ import { CheckedPrimary } from '../../CheckedPrimary'
8
+ import { MapperInput } from '../../types'
7
9
 
8
10
  type Context = Model.ManyHasOneContext
9
11
 
@@ -15,18 +17,16 @@ export class ManyHasOneCreateInputProcessor implements CreateInputProcessor.HasM
15
17
  ) {
16
18
  }
17
19
  public async connect(
18
- { targetEntity, relation, input }: Context & { input: Input.UniqueWhere },
20
+ { targetEntity, relation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
19
21
  ) {
20
- const value = await this.mapper.getPrimaryValue(targetEntity, input)
21
- if (!value) {
22
- return [new MutationEntryNotFoundError([], input)]
23
- }
22
+ const [value, err] = await this.mapper.getPrimaryValue(targetEntity, input)
23
+ if (err) return [err]
24
24
  this.insertBuilder.addFieldValue(relation.name, value)
25
25
  return []
26
26
  }
27
27
 
28
28
  public async create(
29
- { relation, targetEntity, input }: Context & { input: Input.CreateDataInput },
29
+ { relation, targetEntity, input }: Context & { input: MapperInput.CreateDataInput },
30
30
  ) {
31
31
  const insertResult = await this.mapper.insert(targetEntity, input)
32
32
  const value = getInsertPrimary(insertResult)
@@ -38,9 +38,9 @@ export class ManyHasOneCreateInputProcessor implements CreateInputProcessor.HasM
38
38
  }
39
39
 
40
40
  public async connectOrCreate(
41
- { input: { connect, create }, relation, targetEntity }: Context & { input: Input.ConnectOrCreateInput },
41
+ { input: { connect, create }, relation, targetEntity }: Context & { input: MapperInput.ConnectOrCreateInput },
42
42
  ) {
43
- const value = await this.mapper.getPrimaryValue(targetEntity, connect)
43
+ const [value] = await this.mapper.getPrimaryValue(targetEntity, connect)
44
44
  if (value) {
45
45
  this.insertBuilder.addFieldValue(relation.name, value)
46
46
  } else {
@@ -2,6 +2,8 @@ import { Input, Model } from '@contember/schema'
2
2
  import { Mapper } from '../../Mapper'
3
3
  import { CreateInputProcessor } from '../../../inputProcessing'
4
4
  import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
5
+ import { CheckedPrimary } from '../../CheckedPrimary'
6
+ import { MapperInput } from '../../types'
5
7
 
6
8
  type Context = Model.OneHasManyContext
7
9
 
@@ -12,33 +14,33 @@ export class OneHasManyCreateInputProcessor implements CreateInputProcessor.HasM
12
14
  ) {
13
15
  }
14
16
  public async connect(
15
- { entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere },
17
+ { entity, targetEntity, targetRelation, input }: Context & { input: Input.UniqueWhere | CheckedPrimary },
16
18
  ) {
17
19
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
18
20
  return await this.mapper.update(targetEntity, input, {
19
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
21
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) },
20
22
  })
21
23
  }
22
24
  }
23
25
 
24
26
  public async create(
25
- { entity, targetEntity, targetRelation, input }: Context & { input: Input.CreateDataInput },
27
+ { entity, targetEntity, targetRelation, input }: Context & { input: MapperInput.CreateDataInput },
26
28
  ) {
27
29
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
28
30
  return await this.mapper.insert(targetEntity, {
29
31
  ...input,
30
- [targetRelation.name]: { connect: { [entity.primary]: primary } },
32
+ [targetRelation.name]: { connect: new CheckedPrimary(primary) },
31
33
  })
32
34
  }
33
35
  }
34
36
 
35
37
  public async connectOrCreate(
36
- { entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: Input.ConnectOrCreateInput },
38
+ { entity, targetRelation, targetEntity, input: { connect, create } }: Context & { input: MapperInput.ConnectOrCreateInput },
37
39
  ) {
38
40
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
39
41
  const connectData = {
40
42
  [targetRelation.name]: {
41
- connect: { [entity.primary]: primary },
43
+ connect: new CheckedPrimary(primary),
42
44
  },
43
45
  }
44
46
  return await this.mapper.upsert(targetEntity, connect, connectData, {
@@ -4,6 +4,7 @@ import { CheckedPrimary } from '../../CheckedPrimary'
4
4
  import { Input, Model } from '@contember/schema'
5
5
  import { CreateInputProcessor } from '../../../inputProcessing'
6
6
  import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
7
+ import { MapperInput } from '../../types'
7
8
 
8
9
  type Context = Model.OneHasOneInverseContext
9
10
 
@@ -14,13 +15,11 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
14
15
  ) {
15
16
  }
16
17
 
17
- public async connect(context: Context & { input: Input.UniqueWhere }) {
18
+ public async connect(context: Context & { input: Input.UniqueWhere | CheckedPrimary }) {
18
19
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
19
20
  const { targetEntity, input } = context
20
- const owner = await this.mapper.getPrimaryValue(targetEntity, input)
21
- if (!owner) {
22
- return [new MutationEntryNotFoundError([], input)]
23
- }
21
+ const [owner, err] = await this.mapper.getPrimaryValue(targetEntity, input)
22
+ if (err) return [err]
24
23
 
25
24
  return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
26
25
  }
@@ -28,7 +27,7 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
28
27
 
29
28
 
30
29
  public async create(
31
- { input, targetRelation, targetEntity }: Context & { input: Input.CreateDataInput },
30
+ { input, targetRelation, targetEntity }: Context & { input: MapperInput.CreateDataInput },
32
31
  ) {
33
32
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
34
33
  return await this.mapper.insert(targetEntity, input, builder => {
@@ -39,10 +38,10 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
39
38
  }
40
39
 
41
40
  public async connectOrCreate(
42
- { input, ...context }: Context & { input: Input.ConnectOrCreateInput },
41
+ { input, ...context }: Context & { input: MapperInput.ConnectOrCreateInput },
43
42
  ) {
44
43
  return async ({ primary }: { primary: Input.PrimaryValue }) => {
45
- const owner = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
44
+ const [owner] = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
46
45
  if (owner) {
47
46
  return await this.connectInternal({ ...context, input: new CheckedPrimary(owner) }, primary)
48
47
  }
@@ -80,7 +79,7 @@ export class OneHasOneInverseCreateInputProcessor implements CreateInputProcesso
80
79
  }
81
80
 
82
81
  private async createInternal(
83
- context: Context & { input: Input.CreateDataInput },
82
+ context: Context & { input: MapperInput.CreateDataInput },
84
83
  primary: Input.PrimaryValue,
85
84
  ) {
86
85
  return await this.mapper.insert(context.targetEntity, context.input, builder => {
@@ -10,6 +10,8 @@ import { Mapper } from '../../Mapper'
10
10
  import { Input, Model } from '@contember/schema'
11
11
  import { CreateInputProcessor } from '../../../inputProcessing'
12
12
  import { SqlCreateInputProcessorResult } from '../SqlCreateInputProcessor'
13
+ import { CheckedPrimary } from '../../CheckedPrimary'
14
+ import { MapperInput } from '../../types'
13
15
 
14
16
  type Context = Model.OneHasOneOwningContext
15
17
 
@@ -20,12 +22,10 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
20
22
  ) {
21
23
  }
22
24
 
23
- public async connect(context: Context & { input: Input.UniqueWhere }) {
25
+ public async connect(context: Context & { input: Input.UniqueWhere | CheckedPrimary }) {
24
26
  const { input, relation, targetEntity } = context
25
- const inverseSide = await this.mapper.getPrimaryValue(targetEntity, input)
26
- if (!inverseSide) {
27
- return [new MutationEntryNotFoundError([], input)]
28
- }
27
+ const [inverseSide, err] = await this.mapper.getPrimaryValue(targetEntity, input)
28
+ if (err) return [err]
29
29
  const disconnectResult = await this.disconnectCurrentOwner({ ...context, input: inverseSide })
30
30
  if (disconnectResult.some(it => it.error)) {
31
31
  return disconnectResult
@@ -34,7 +34,7 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
34
34
  return disconnectResult
35
35
  }
36
36
 
37
- public async create(context: Context & { input: Input.CreateDataInput }) {
37
+ public async create(context: Context & { input: MapperInput.CreateDataInput }) {
38
38
  const insertResult = await this.mapper.insert(context.targetEntity, context.input)
39
39
  const primary = getInsertPrimary(insertResult)
40
40
  if (!primary) {
@@ -44,8 +44,8 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
44
44
  return []
45
45
  }
46
46
 
47
- public async connectOrCreate({ input, ...context }: Context & { input: Input.ConnectOrCreateInput }) {
48
- const inverseSide = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
47
+ public async connectOrCreate({ input, ...context }: Context & { input: MapperInput.ConnectOrCreateInput }) {
48
+ const [inverseSide] = await this.mapper.getPrimaryValue(context.targetEntity, input.connect)
49
49
  if (inverseSide) {
50
50
  this.insertBuilder.addFieldValue(context.relation.name, inverseSide)
51
51
  const disconnectResult = await this.disconnectCurrentOwner({ ...context, input: inverseSide })
@@ -67,7 +67,7 @@ export class OneHasOneOwningCreateInputProcessor implements CreateInputProcessor
67
67
  private async disconnectCurrentOwner(
68
68
  { entity, relation, targetEntity, input }: Context & { input: Input.PrimaryValue },
69
69
  ): Promise<MutationResultList> {
70
- const currentOwnerOfInverseSide = await this.mapper.getPrimaryValue(entity, {
70
+ const [currentOwnerOfInverseSide] = await this.mapper.getPrimaryValue(entity, {
71
71
  [relation.name]: { [targetEntity.primary]: input },
72
72
  })
73
73
  if (!currentOwnerOfInverseSide) {