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

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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-content-api",
3
- "version": "2.0.0-alpha.36",
3
+ "version": "2.0.0-alpha.38",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/production/index.js",
6
6
  "typings": "./dist/types/index.d.ts",
@@ -26,18 +26,18 @@
26
26
  "generate": "gql-gen --config graphql.codegen.yml"
27
27
  },
28
28
  "dependencies": {
29
- "@contember/database": "2.0.0-alpha.36",
30
- "@contember/dic": "2.0.0-alpha.36",
31
- "@contember/graphql-utils": "2.0.0-alpha.36",
32
- "@contember/logger": "2.0.0-alpha.36",
33
- "@contember/schema": "2.0.0-alpha.36",
34
- "@contember/schema-definition": "2.0.0-alpha.36",
35
- "@contember/schema-utils": "2.0.0-alpha.36",
29
+ "@contember/database": "2.0.0-alpha.38",
30
+ "@contember/dic": "2.0.0-alpha.38",
31
+ "@contember/graphql-utils": "2.0.0-alpha.38",
32
+ "@contember/logger": "2.0.0-alpha.38",
33
+ "@contember/schema": "2.0.0-alpha.38",
34
+ "@contember/schema-definition": "2.0.0-alpha.38",
35
+ "@contember/schema-utils": "2.0.0-alpha.38",
36
36
  "fast-deep-equal": "^3.1.3"
37
37
  },
38
38
  "devDependencies": {
39
- "@contember/database-tester": "2.0.0-alpha.36",
40
- "@contember/schema-definition": "2.0.0-alpha.36",
39
+ "@contember/database-tester": "2.0.0-alpha.38",
40
+ "@contember/schema-definition": "2.0.0-alpha.38",
41
41
  "@types/node": "^20.16.11",
42
42
  "graphql": "^16.9.0",
43
43
  "pg": "^8.12.0"
@@ -54,6 +54,40 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
54
54
  return []
55
55
  }
56
56
  const uniqueConstraints = getFieldsForUniqueWhere(this.schema, targetEntity)
57
+
58
+ const uniqueKeys: (readonly string[])[] = uniqueConstraints
59
+ .map(it => it.filter(it => it !== targetRelation.name))
60
+ .filter(it => it.length > 0)
61
+ .filter(uniqueKey => uniqueKey
62
+ .every(it =>
63
+ acceptFieldVisitor(this.schema, targetEntity.name, it, new FieldAccessVisitor(Acl.Operation.read, this.authorizator)),
64
+ ))
65
+
66
+ const graphQlName = relation.name + GqlTypeName`By`
67
+ const uniqueWhere: GraphQLInputObjectType = new GraphQLInputObjectType({
68
+ name: GqlTypeName`${entity.name}${relation.name}ByUniqueWhere`,
69
+ fields: () => {
70
+ return this.whereTypeProvider.getUniqueWhereFields(targetEntity, uniqueKeys)
71
+ },
72
+ })
73
+
74
+ const entityType = this.entityTypeProvider.getEntity(targetEntity.name)
75
+ const universalUnique: Result | null = graphQlName in entity.fields ? null : [
76
+ graphQlName,
77
+ {
78
+ type: entityType,
79
+ extensions: {
80
+ relationName: relation.name,
81
+ extensionKey: HasManyToHasOneReducer.extensionName,
82
+ },
83
+ args: {
84
+ by: { type: new GraphQLNonNull(uniqueWhere) },
85
+ filter: { type: this.whereTypeProvider.getEntityWhereType(targetEntity.name) },
86
+ },
87
+ resolve: aliasAwareResolver,
88
+ },
89
+ ]
90
+
57
91
  const composedUnique = uniqueConstraints
58
92
  .filter(fields => fields.length === 2) //todo support all uniques
59
93
  .filter(fields => fields.includes(targetRelation.name))
@@ -89,8 +123,6 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
89
123
  },
90
124
  })
91
125
 
92
- const entityType = this.entityTypeProvider.getEntity(targetEntity.name)
93
-
94
126
  return [
95
127
  graphQlName,
96
128
  {
@@ -107,6 +139,7 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
107
139
  },
108
140
  ]
109
141
  })
142
+ .concat([universalUnique])
110
143
  .filter((it): it is Result => it !== null)
111
144
  }
112
145
  }
@@ -4,7 +4,7 @@ import { Model, Value } from '@contember/schema'
4
4
  export class ColumnValueResolver {
5
5
  constructor(private readonly providers: Providers) {}
6
6
 
7
- getDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.AtomicValue | undefined {
7
+ getDefaultValidationValue(context: Model.ColumnContext & { input: Value.FieldValue | undefined }): Value.FieldValue | undefined {
8
8
  if (context.column.name === context.entity.primary) {
9
9
  return '00000000-0000-0000-0000-000000000000'
10
10
  }
@@ -1,7 +1,7 @@
1
1
  import { CreateInputProcessor } from '../../inputProcessing'
2
2
  import { Input, Model } from '@contember/schema'
3
3
  import { appendRelationToPath, ValidationPath } from '../ValidationPath'
4
- import { Mapper } from '../../mapper'
4
+ import { Mapper, MapperInput } from '../../mapper'
5
5
  import { InputPreValidator } from './InputPreValidator'
6
6
 
7
7
  type Result = any
@@ -51,7 +51,7 @@ export class CreateInputPreValidationProcessor implements CreateInputProcessor<R
51
51
  async validateCreate(context: {
52
52
  targetEntity: Model.Entity
53
53
  relation: Model.AnyRelation
54
- input: Input.CreateDataInput
54
+ input: MapperInput.CreateDataInput
55
55
  targetRelation: Model.AnyRelation | null
56
56
  index?: number
57
57
  alias?: string
@@ -11,7 +11,7 @@ import { EntityRulesResolver } from '../EntityRulesResolver'
11
11
  import { FieldValidationResult, ValidationResult } from '../InputValidator'
12
12
  import { UpdateInputPreValidationProcessor } from './UpdateInputPreValidationProcessor'
13
13
  import { ColumnValueResolver } from '../ColumnValueResolver'
14
- import { Mapper } from '../../mapper'
14
+ import { Mapper, MapperInput } from '../../mapper'
15
15
  import { Dependencies, DependencyCollector } from '../dependencies'
16
16
  import { DependencyMerger } from '../dependencies'
17
17
  import { NotSupportedError } from '../exceptions'
@@ -20,7 +20,7 @@ import { ValidationDataSelector } from '../ValidationDataSelector'
20
20
  export interface CreateValidationArgs {
21
21
  mapper: Mapper
22
22
  entity: Model.Entity
23
- data: Input.CreateDataInput
23
+ data: MapperInput.CreateDataInput
24
24
  path: ValidationPath
25
25
  overRelation: Model.AnyRelation | null
26
26
  }
@@ -29,7 +29,7 @@ export interface UpdateValidationArgs {
29
29
  mapper: Mapper
30
30
  entity: Model.Entity
31
31
  where: Input.UniqueWhere
32
- data: Input.UpdateDataInput
32
+ data: MapperInput.UpdateDataInput
33
33
  path: ValidationPath
34
34
  }
35
35
 
@@ -76,7 +76,7 @@ export class InputPreValidator {
76
76
  return [...fieldsResult, ...relationResult]
77
77
  }
78
78
 
79
- private createContextForCreate(entity: Model.Entity, data: Input.CreateDataInput): ValidationContext.NodeContext {
79
+ private createContextForCreate(entity: Model.Entity, data: MapperInput.CreateDataInput): ValidationContext.NodeContext {
80
80
  const nodeData = acceptEveryFieldVisitor(this.model, entity, {
81
81
  visitColumn: ({ entity, column }) => {
82
82
  const value = data[column.name] as Input.ColumnValue | undefined
@@ -84,7 +84,7 @@ export class InputPreValidator {
84
84
  return validationValue === undefined ? null : validationValue
85
85
  },
86
86
  visitHasOne: ({ relation }) => {
87
- const value = data[relation.name] as Input.CreateOneRelationInput | undefined
87
+ const value = data[relation.name] as MapperInput.CreateOneRelationInput | undefined
88
88
  return value ? true : null
89
89
  },
90
90
  // more complex validation on relations are not possible in pre-validation phase
@@ -97,7 +97,7 @@ export class InputPreValidator {
97
97
  mapper: Mapper,
98
98
  entity: Model.Entity,
99
99
  where: Input.UniqueWhere,
100
- data: Input.UpdateDataInput,
100
+ data: MapperInput.UpdateDataInput,
101
101
  dependencies: Dependencies,
102
102
  ): Promise<ValidationContext.NodeContext> {
103
103
  const inputNodeData = acceptEveryFieldVisitor(this.model, entity, {
@@ -105,7 +105,7 @@ export class InputPreValidator {
105
105
  return data[column.name] as Input.ColumnValue | undefined
106
106
  },
107
107
  visitHasOne: ({ relation }) => {
108
- const value = data[relation.name] as Input.CreateOneRelationInput | Input.UpdateOneRelationInput | undefined | null
108
+ const value = data[relation.name] as MapperInput.CreateOneRelationInput | MapperInput.UpdateOneRelationInput | undefined | null
109
109
  if (value === undefined || value === null) {
110
110
  return undefined
111
111
  }
@@ -1,7 +1,7 @@
1
1
  import { UpdateInputProcessor } from '../../inputProcessing'
2
2
  import { Input, Model } from '@contember/schema'
3
3
  import { appendRelationToPath, ValidationPath } from '../ValidationPath'
4
- import { Mapper } from '../../mapper'
4
+ import { Mapper, MapperInput } from '../../mapper'
5
5
  import { InputPreValidator } from './InputPreValidator'
6
6
 
7
7
  type Result = any
@@ -79,7 +79,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
79
79
  targetEntity: Model.Entity
80
80
  relation: Model.AnyRelation
81
81
  targetRelation: Model.AnyRelation | null
82
- input: Input.CreateDataInput
82
+ input: MapperInput.CreateDataInput
83
83
  index?: number
84
84
  alias?: string
85
85
  }) {
@@ -124,7 +124,7 @@ export class UpdateInputPreValidationProcessor implements UpdateInputProcessor<R
124
124
  async processUpdate(context: {
125
125
  targetEntity: Model.Entity
126
126
  relation: Model.AnyRelation
127
- input: Input.UpdateDataInput
127
+ input: MapperInput.UpdateDataInput
128
128
  targetRelation: Model.AnyRelation | null
129
129
  index?: number
130
130
  alias?: string
@@ -1,4 +1,6 @@
1
1
  import { Input, Model } from '@contember/schema'
2
+ import { CheckedPrimary } from '../mapper/CheckedPrimary'
3
+ import { MapperInput } from '../mapper'
2
4
 
3
5
  interface CreateInputProcessor<Result = void> {
4
6
  column(context: Model.ColumnContext & { input: Input.ColumnValue | undefined }): Promise<Result>
@@ -17,15 +19,15 @@ namespace CreateInputProcessor {
17
19
 
18
20
  export interface HasOneRelationProcessor<Context, Result> {
19
21
  nothing?: (context: Context & { input: undefined }) => Promise<Result>
20
- connect: (context: Context & { input: Input.UniqueWhere }) => Promise<Result>
21
- create: (context: Context & { input: Input.CreateDataInput }) => Promise<Result>
22
- connectOrCreate: (context: Context & { input: Input.ConnectOrCreateInput }) => Promise<Result>
22
+ connect: (context: Context & { input: Input.UniqueWhere | CheckedPrimary }) => Promise<Result>
23
+ create: (context: Context & { input: MapperInput.CreateDataInput }) => Promise<Result>
24
+ connectOrCreate: (context: Context & { input: MapperInput.ConnectOrCreateInput }) => Promise<Result>
23
25
  }
24
26
 
25
27
  export interface HasManyRelationProcessor<Context, Result> {
26
- connect: (context: Context & { input: Input.UniqueWhere } & { index: number; alias?: string }) => Promise<Result>
27
- create: (context: Context & { input: Input.CreateDataInput } & { index: number; alias?: string }) => Promise<Result>
28
- connectOrCreate: (context: Context & { input: Input.ConnectOrCreateInput } & { index: number; alias?: string }) => Promise<Result>
28
+ connect: (context: Context & { input: Input.UniqueWhere | CheckedPrimary } & { index: number; alias?: string }) => Promise<Result>
29
+ create: (context: Context & { input: MapperInput.CreateDataInput } & { index: number; alias?: string }) => Promise<Result>
30
+ connectOrCreate: (context: Context & { input: MapperInput.ConnectOrCreateInput } & { index: number; alias?: string }) => Promise<Result>
29
31
  }
30
32
  }
31
33
 
@@ -1,9 +1,8 @@
1
- import { isIt } from '../utils'
1
+ import { filterObject } from '../utils'
2
2
  import { Input, Model } from '@contember/schema'
3
3
  import { CreateInputProcessor } from './CreateInputProcessor'
4
- import { filterObject } from '../utils'
5
- import { UserError } from '../exception'
6
- import { ImplementationException } from '../exception'
4
+ import { ImplementationException, UserError } from '../exception'
5
+ import { MapperInput } from '../mapper'
7
6
 
8
7
  export class CreateInputVisitor<Result> implements
9
8
  Model.ColumnVisitor<Promise<Result[]>>,
@@ -12,7 +11,7 @@ export class CreateInputVisitor<Result> implements
12
11
  constructor(
13
12
  private readonly createInputProcessor: CreateInputProcessor<Result>,
14
13
  private readonly schema: Model.Schema,
15
- private readonly data: Input.CreateDataInput,
14
+ private readonly data: MapperInput.CreateDataInput,
16
15
  ) {}
17
16
 
18
17
  public async visitColumn(context: Model.ColumnContext): Promise<Result[]> {
@@ -26,7 +25,7 @@ export class CreateInputVisitor<Result> implements
26
25
  return this.processManyRelationInput(
27
26
  this.createInputProcessor.manyHasManyInverse,
28
27
  context,
29
- this.data[context.relation.name] as Input.CreateManyRelationInput,
28
+ this.data[context.relation.name] as MapperInput.CreateManyRelationInput,
30
29
  )
31
30
  }
32
31
 
@@ -34,7 +33,7 @@ export class CreateInputVisitor<Result> implements
34
33
  return this.processManyRelationInput(
35
34
  this.createInputProcessor.manyHasManyOwning,
36
35
  context,
37
- this.data[context.relation.name] as Input.CreateManyRelationInput,
36
+ this.data[context.relation.name] as MapperInput.CreateManyRelationInput,
38
37
  )
39
38
  }
40
39
 
@@ -42,7 +41,7 @@ export class CreateInputVisitor<Result> implements
42
41
  return this.processRelationInput(
43
42
  this.createInputProcessor.manyHasOne,
44
43
  context,
45
- this.data[context.relation.name] as Input.CreateOneRelationInput,
44
+ this.data[context.relation.name] as MapperInput.CreateOneRelationInput,
46
45
  )
47
46
  }
48
47
 
@@ -50,7 +49,7 @@ export class CreateInputVisitor<Result> implements
50
49
  return this.processManyRelationInput(
51
50
  this.createInputProcessor.oneHasMany,
52
51
  context,
53
- this.data[context.relation.name] as Input.CreateManyRelationInput,
52
+ this.data[context.relation.name] as MapperInput.CreateManyRelationInput,
54
53
  )
55
54
  }
56
55
 
@@ -58,7 +57,7 @@ export class CreateInputVisitor<Result> implements
58
57
  return this.processRelationInput(
59
58
  this.createInputProcessor.oneHasOneInverse,
60
59
  context,
61
- this.data[context.relation.name] as Input.CreateOneRelationInput,
60
+ this.data[context.relation.name] as MapperInput.CreateOneRelationInput,
62
61
  )
63
62
  }
64
63
 
@@ -66,14 +65,14 @@ export class CreateInputVisitor<Result> implements
66
65
  return this.processRelationInput(
67
66
  this.createInputProcessor.oneHasOneOwning,
68
67
  context,
69
- this.data[context.relation.name] as Input.CreateOneRelationInput,
68
+ this.data[context.relation.name] as MapperInput.CreateOneRelationInput,
70
69
  )
71
70
  }
72
71
 
73
72
  private async processRelationInput<Context>(
74
73
  processor: CreateInputProcessor.HasOneRelationProcessor<Context, Result>,
75
74
  context: Context,
76
- input: Input.CreateOneRelationInput | undefined,
75
+ input: MapperInput.CreateOneRelationInput | undefined,
77
76
  ): Promise<Result[]> {
78
77
  if (input === undefined || input === null) {
79
78
  if (processor.nothing) {
@@ -83,13 +82,13 @@ export class CreateInputVisitor<Result> implements
83
82
  }
84
83
  input = filterObject(input, (k, v) => v !== null && v !== undefined)
85
84
  this.verifyOperations(input)
86
- if (isIt<Input.ConnectRelationInput>(input, 'connect')) {
85
+ if ('connect' in input) {
87
86
  return [await processor.connect({ ...context, input: input.connect })]
88
87
  }
89
- if (isIt<Input.CreateRelationInput>(input, 'create')) {
88
+ if ('create' in input) {
90
89
  return [await processor.create({ ...context, input: input.create })]
91
90
  }
92
- if (isIt<Input.ConnectOrCreateRelationInput>(input, 'connectOrCreate')) {
91
+ if ('connectOrCreate' in input) {
93
92
  return [await processor.connectOrCreate({ ...context, input: input.connectOrCreate })]
94
93
  }
95
94
  throw new ImplementationException()
@@ -98,7 +97,7 @@ export class CreateInputVisitor<Result> implements
98
97
  private async processManyRelationInput<Context>(
99
98
  processor: CreateInputProcessor.HasManyRelationProcessor<Context, Result>,
100
99
  context: Context,
101
- input: Input.CreateManyRelationInput | undefined,
100
+ input: MapperInput.CreateManyRelationInput | undefined,
102
101
  ): Promise<Result[]> {
103
102
  if (input === undefined || input === null) {
104
103
  return Promise.resolve([])
@@ -110,13 +109,13 @@ export class CreateInputVisitor<Result> implements
110
109
  element = filterObject(element, (k, v) => v !== null && v !== undefined)
111
110
  this.verifyOperations(element)
112
111
  let result
113
- if (isIt<Input.ConnectRelationInput>(element, 'connect')) {
112
+ if ('connect' in element) {
114
113
  result = processor.connect({ ...context, input: element.connect, index: i++, alias })
115
114
  }
116
- if (isIt<Input.CreateRelationInput>(element, 'create')) {
115
+ if ('create' in element) {
117
116
  result = processor.create({ ...context, input: element.create, index: i++, alias })
118
117
  }
119
- if (isIt<Input.ConnectOrCreateRelationInput>(element, 'connectOrCreate')) {
118
+ if ('connectOrCreate' in element) {
120
119
  result = processor.connectOrCreate({ ...context, input: element.connectOrCreate, index: i++, alias })
121
120
  }
122
121
  if (result !== undefined) {
@@ -1,4 +1,6 @@
1
1
  import { Input, Model } from '@contember/schema'
2
+ import { CheckedPrimary } from '../mapper/CheckedPrimary'
3
+ import { MapperInput } from '../mapper'
2
4
 
3
5
 
4
6
  interface UpdateInputProcessor<Result = void> {
@@ -18,22 +20,22 @@ interface UpdateInputProcessor<Result = void> {
18
20
  }
19
21
 
20
22
  namespace UpdateInputProcessor {
21
- export type UpsertInput = { update: Input.UpdateDataInput; create: Input.CreateDataInput }
22
- export type UpdateManyInput = { where: Input.UniqueWhere; data: Input.UpdateDataInput }
23
+ export type UpsertInput = { update: MapperInput.UpdateDataInput; create: MapperInput.CreateDataInput }
24
+ export type UpdateManyInput = { where: Input.UniqueWhere; data: MapperInput.UpdateDataInput }
23
25
  export type UpsertManyInput = {
24
26
  where: Input.UniqueWhere
25
- update: Input.UpdateDataInput
26
- create: Input.CreateDataInput
27
+ update: MapperInput.UpdateDataInput
28
+ create: MapperInput.CreateDataInput
27
29
  }
28
30
 
29
31
  export interface HasOneRelationInputProcessor<Context, Result> {
30
- connect(context: Context & { input: Input.UniqueWhere }): Promise<Result>
32
+ connect(context: Context & { input: Input.UniqueWhere | CheckedPrimary }): Promise<Result>
31
33
 
32
- create(context: Context & { input: Input.CreateDataInput }): Promise<Result>
34
+ create(context: Context & { input: MapperInput.CreateDataInput }): Promise<Result>
33
35
 
34
- connectOrCreate(context: Context & { input: Input.ConnectOrCreateInput }): Promise<Result>
36
+ connectOrCreate(context: Context & { input: MapperInput.ConnectOrCreateInput }): Promise<Result>
35
37
 
36
- update(context: Context & { input: Input.UpdateDataInput }): Promise<Result>
38
+ update(context: Context & { input: MapperInput.UpdateDataInput }): Promise<Result>
37
39
 
38
40
  upsert(context: Context & { input: UpdateInputProcessor.UpsertInput }): Promise<Result>
39
41
 
@@ -43,11 +45,11 @@ namespace UpdateInputProcessor {
43
45
  }
44
46
 
45
47
  export interface HasManyRelationInputProcessor<Context, Result> {
46
- connect(context: Context & { input: Input.UniqueWhere; index: number; alias?: string }): Promise<Result>
48
+ connect(context: Context & { input: Input.UniqueWhere | CheckedPrimary; index: number; alias?: string }): Promise<Result>
47
49
 
48
- create(context: Context & { input: Input.CreateDataInput; index: number; alias?: string }): Promise<Result>
50
+ create(context: Context & { input: MapperInput.CreateDataInput; index: number; alias?: string }): Promise<Result>
49
51
 
50
- connectOrCreate(context: Context & { input: Input.ConnectOrCreateInput; index: number; alias?: string }): Promise<Result>
52
+ connectOrCreate(context: Context & { input: MapperInput.ConnectOrCreateInput; index: number; alias?: string }): Promise<Result>
51
53
 
52
54
  update(context: Context & { input: UpdateInputProcessor.UpdateManyInput; index: number; alias?: string }): Promise<Result>
53
55
 
@@ -1,7 +1,8 @@
1
1
  import { Input, Model } from '@contember/schema'
2
- import { filterObject, isIt } from '../utils'
2
+ import { filterObject } from '../utils'
3
3
  import { UpdateInputProcessor } from './UpdateInputProcessor'
4
4
  import { ImplementationException, UserError } from '../exception'
5
+ import { MapperInput } from '../mapper'
5
6
 
6
7
  export class UpdateInputVisitor<Result> implements
7
8
  Model.ColumnVisitor<Promise<Result[]>>,
@@ -10,7 +11,7 @@ export class UpdateInputVisitor<Result> implements
10
11
  constructor(
11
12
  private readonly updateInputProcessor: UpdateInputProcessor<Result>,
12
13
  private readonly schema: Model.Schema,
13
- private readonly data: Input.UpdateDataInput,
14
+ private readonly data: MapperInput.UpdateDataInput,
14
15
  ) {}
15
16
 
16
17
  public async visitColumn({ entity, column }: Model.ColumnContext): Promise<Result[]> {
@@ -25,7 +26,7 @@ export class UpdateInputVisitor<Result> implements
25
26
  return this.processManyRelationInput(
26
27
  this.updateInputProcessor.manyHasManyInverse,
27
28
  context,
28
- this.data[context.relation.name] as Input.CreateManyRelationInput,
29
+ this.data[context.relation.name] as MapperInput.CreateManyRelationInput,
29
30
  )
30
31
  }
31
32
 
@@ -33,7 +34,7 @@ export class UpdateInputVisitor<Result> implements
33
34
  return this.processManyRelationInput(
34
35
  this.updateInputProcessor.manyHasManyOwning,
35
36
  context,
36
- this.data[context.relation.name] as Input.CreateManyRelationInput,
37
+ this.data[context.relation.name] as MapperInput.CreateManyRelationInput,
37
38
  )
38
39
  }
39
40
 
@@ -41,7 +42,7 @@ export class UpdateInputVisitor<Result> implements
41
42
  return this.processRelationInput(
42
43
  this.updateInputProcessor.manyHasOne,
43
44
  context,
44
- this.data[context.relation.name] as Input.CreateOneRelationInput,
45
+ this.data[context.relation.name] as MapperInput.CreateOneRelationInput,
45
46
  )
46
47
  }
47
48
 
@@ -49,7 +50,7 @@ export class UpdateInputVisitor<Result> implements
49
50
  return this.processManyRelationInput(
50
51
  this.updateInputProcessor.oneHasMany,
51
52
  context,
52
- this.data[context.relation.name] as Input.CreateManyRelationInput,
53
+ this.data[context.relation.name] as MapperInput.CreateManyRelationInput,
53
54
  )
54
55
  }
55
56
 
@@ -57,7 +58,7 @@ export class UpdateInputVisitor<Result> implements
57
58
  return this.processRelationInput(
58
59
  this.updateInputProcessor.oneHasOneInverse,
59
60
  context,
60
- this.data[context.relation.name] as Input.CreateOneRelationInput,
61
+ this.data[context.relation.name] as MapperInput.CreateOneRelationInput,
61
62
  )
62
63
  }
63
64
 
@@ -65,39 +66,39 @@ export class UpdateInputVisitor<Result> implements
65
66
  return this.processRelationInput(
66
67
  this.updateInputProcessor.oneHasOneOwning,
67
68
  context,
68
- this.data[context.relation.name] as Input.CreateOneRelationInput,
69
+ this.data[context.relation.name] as MapperInput.CreateOneRelationInput,
69
70
  )
70
71
  }
71
72
 
72
73
  private async processRelationInput<Context>(
73
74
  processor: UpdateInputProcessor.HasOneRelationInputProcessor<Context, Result>,
74
75
  context: Context,
75
- input: Input.UpdateOneRelationInput | undefined,
76
+ input: MapperInput.UpdateOneRelationInput | undefined,
76
77
  ): Promise< Result[]> {
77
78
  if (input === undefined || input === null) {
78
79
  return Promise.resolve([])
79
80
  }
80
81
  input = filterObject(input, (k, v) => v !== null && v !== undefined)
81
82
  this.verifyOperations(input)
82
- if (isIt<Input.ConnectRelationInput>(input, 'connect')) {
83
+ if ('connect' in input) {
83
84
  return [await processor.connect({ ...context, input: input.connect })]
84
85
  }
85
- if (isIt<Input.CreateRelationInput>(input, 'create')) {
86
+ if ('create' in input) {
86
87
  return [await processor.create({ ...context, input: input.create })]
87
88
  }
88
- if (isIt<Input.ConnectOrCreateRelationInput>(input, 'connectOrCreate')) {
89
+ if ('connectOrCreate' in input) {
89
90
  return [await processor.connectOrCreate({ ...context, input: input.connectOrCreate })]
90
91
  }
91
- if (isIt<Input.DeleteRelationInput>(input, 'delete')) {
92
+ if ('delete' in input) {
92
93
  return [await processor.delete({ ...context, input: undefined })]
93
94
  }
94
- if (isIt<Input.DisconnectRelationInput>(input, 'disconnect')) {
95
+ if ('disconnect' in input) {
95
96
  return [await processor.disconnect({ ...context, input: undefined })]
96
97
  }
97
- if (isIt<Input.UpdateRelationInput>(input, 'update')) {
98
+ if ('update' in input) {
98
99
  return [await processor.update({ ...context, input: input.update })]
99
100
  }
100
- if (isIt<Input.UpsertRelationInput>(input, 'upsert')) {
101
+ if ('upsert' in input) {
101
102
  return [await processor.upsert({ ...context, input: input.upsert })]
102
103
  }
103
104
  throw new ImplementationException()
@@ -106,7 +107,7 @@ export class UpdateInputVisitor<Result> implements
106
107
  private async processManyRelationInput<Context>(
107
108
  processor: UpdateInputProcessor.HasManyRelationInputProcessor<Context, Result>,
108
109
  context: Context,
109
- input: Input.UpdateManyRelationInput | undefined,
110
+ input: MapperInput.UpdateManyRelationInput | undefined,
110
111
  ): Promise<Result[]> {
111
112
  if (input === undefined || input === null) {
112
113
  return Promise.resolve([])
@@ -118,22 +119,22 @@ export class UpdateInputVisitor<Result> implements
118
119
  element = filterObject(element, (k, v) => v !== null && v !== undefined)
119
120
  this.verifyOperations(element)
120
121
  let result
121
- if (isIt<Input.ConnectRelationInput>(element, 'connect')) {
122
+ if ('connect' in element) {
122
123
  result = processor.connect({ ...context, input: element.connect, index: i, alias })
123
124
  }
124
- if (isIt<Input.CreateRelationInput>(element, 'create')) {
125
+ if ('create' in element) {
125
126
  result = processor.create({ ...context, input: element.create, index: i, alias })
126
127
  }
127
- if (isIt<Input.ConnectOrCreateRelationInput>(element, 'connectOrCreate')) {
128
+ if ('connectOrCreate' in element) {
128
129
  result = processor.connectOrCreate({ ...context, input: element.connectOrCreate, index: i, alias })
129
130
  }
130
- if (isIt<Input.DeleteSpecifiedRelationInput>(element, 'delete')) {
131
+ if ('delete' in element) {
131
132
  result = processor.delete({ ...context, input: element.delete, index: i, alias })
132
133
  }
133
- if (isIt<Input.DisconnectSpecifiedRelationInput>(element, 'disconnect')) {
134
+ if ('disconnect' in element) {
134
135
  result = processor.disconnect({ ...context, input: element.disconnect, index: i, alias })
135
136
  }
136
- if (isIt<Input.UpdateSpecifiedRelationInput>(element, 'update')) {
137
+ if ('update' in element) {
137
138
  result = processor.update({
138
139
  ...context,
139
140
  input: { where: element.update.by, data: element.update.data },
@@ -141,7 +142,7 @@ export class UpdateInputVisitor<Result> implements
141
142
  alias,
142
143
  })
143
144
  }
144
- if (isIt<Input.UpsertSpecifiedRelationInput>(element, 'upsert')) {
145
+ if ('upsert' in element) {
145
146
  result = processor.upsert({
146
147
  ...context,
147
148
  input: { where: element.upsert.by, update: element.upsert.update, create: element.upsert.create },
@@ -1,36 +1,22 @@
1
1
  import { Value } from '@contember/schema'
2
- import { getFulfilledValues, getRejections } from '../utils'
3
2
 
4
- export type ColumnValue<E = never> = {
5
- value: PromiseLike<Value.FieldValue<E> | undefined>
3
+ export type ColumnValue = {
4
+ value: Value.FieldValue
6
5
  fieldName: string
7
6
  columnName: string
8
7
  columnType: string
9
8
  }
10
9
 
11
- export type ResolvedColumnValue<E = never> = ColumnValue<E> & {
12
- resolvedValue: Value.FieldValue<E>
13
- }
14
10
 
15
- export const resolveGenericValue = <T>(value: Value.GenericValueLike<T>): Promise<T> => {
16
- if (value instanceof Function) {
17
- value = value()
18
- }
19
- return Promise.resolve(value)
20
- }
11
+ export const rowDataToFieldValues = (values: ColumnValue[]): Record<string, Value.FieldValue> =>
12
+ Object.fromEntries(values.map(it => [it.fieldName, it.value]))
21
13
 
22
- export const resolveRowData = async <E>(
23
- values: ColumnValue<E>[],
24
- ): Promise<ResolvedColumnValue<Exclude<E, undefined>>[]> => {
25
- const valuePromises = values.map(async (it): Promise<ResolvedColumnValue<E | undefined>> => ({ ...it, resolvedValue: await it.value }))
26
- const settledValues = await Promise.allSettled(valuePromises)
27
- const failed = getRejections(settledValues)
28
- if (failed.length > 0) {
29
- throw failed[0]
14
+ export const normalizeDbValue = (value: Value.FieldValue, type: string): Value.FieldValue => {
15
+ if (value === null) {
16
+ return null
30
17
  }
31
- const fulfilled = getFulfilledValues(settledValues)
32
- return fulfilled.filter((it): it is ResolvedColumnValue<Exclude<E, undefined>> => it.resolvedValue !== undefined)
18
+ if ((type === 'jsonb' || type === 'json') && typeof value === 'object') {
19
+ return JSON.stringify(value)
20
+ }
21
+ return value
33
22
  }
34
-
35
- export const rowDataToFieldValues = (values: ResolvedColumnValue[]): Record<string, Value.AtomicValue> =>
36
- values.reduce((acc, { fieldName, value }) => ({ ...acc, [fieldName]: value }), {})