@contember/engine-content-api 0.12.0-beta.2 → 1.0.0-alpha.0

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 (471) hide show
  1. package/dist/src/acl/PermissionFactory.js +6 -6
  2. package/dist/src/acl/PermissionFactory.js.map +1 -1
  3. package/dist/src/acl/PermissionsByIdentityFactory.js +1 -1
  4. package/dist/src/acl/PermissionsByIdentityFactory.js.map +1 -1
  5. package/dist/src/acl/PredicatesInjector.js +1 -1
  6. package/dist/src/acl/PredicatesInjector.js.map +1 -1
  7. package/dist/src/acl/VariableUtils.js +1 -1
  8. package/dist/src/acl/VariableUtils.js.map +1 -1
  9. package/dist/src/bridges/system/EntitiesSelector.js +2 -2
  10. package/dist/src/bridges/system/EntitiesSelector.js.map +1 -1
  11. package/dist/src/bridges/system/index.d.ts +0 -1
  12. package/dist/src/bridges/system/index.d.ts.map +1 -1
  13. package/dist/src/bridges/system/index.js +0 -1
  14. package/dist/src/bridges/system/index.js.map +1 -1
  15. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js +1 -1
  16. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
  17. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js +2 -2
  18. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
  19. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +4 -4
  20. package/dist/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  21. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js +3 -3
  22. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
  23. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js +1 -1
  24. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
  25. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js +1 -1
  26. package/dist/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
  27. package/dist/src/input-validation/ColumnValueResolver.js +1 -1
  28. package/dist/src/input-validation/ColumnValueResolver.js.map +1 -1
  29. package/dist/src/input-validation/EntityRulesResolver.js +5 -5
  30. package/dist/src/input-validation/EntityRulesResolver.js.map +1 -1
  31. package/dist/src/input-validation/QueryAstFactory.js +2 -2
  32. package/dist/src/input-validation/QueryAstFactory.js.map +1 -1
  33. package/dist/src/input-validation/ValidationContext.js +1 -1
  34. package/dist/src/input-validation/ValidationContext.js.map +1 -1
  35. package/dist/src/input-validation/ValidationEvaluation.js +8 -8
  36. package/dist/src/input-validation/ValidationEvaluation.js.map +1 -1
  37. package/dist/src/input-validation/dependencies/DependencyCollector.js +1 -1
  38. package/dist/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
  39. package/dist/src/input-validation/dependencies/DependencyMerger.js +1 -1
  40. package/dist/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
  41. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js +1 -1
  42. package/dist/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  43. package/dist/src/input-validation/preValidation/InputPreValidator.js +6 -6
  44. package/dist/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  45. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js +3 -3
  46. package/dist/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  47. package/dist/src/inputProcessing/CreateInputVisitor.js +6 -6
  48. package/dist/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  49. package/dist/src/inputProcessing/UniqueWhereExpander.js +3 -3
  50. package/dist/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
  51. package/dist/src/inputProcessing/UpdateInputVisitor.js +14 -14
  52. package/dist/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  53. package/dist/src/introspection/IntrospectionSchemaFactory.js +4 -4
  54. package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  55. package/dist/src/introspection/content-schema.graphql.js +1 -1
  56. package/dist/src/introspection/content-schema.graphql.js.map +1 -1
  57. package/dist/src/introspection/content-schema.types.d.ts +4 -1
  58. package/dist/src/introspection/content-schema.types.d.ts.map +1 -1
  59. package/dist/src/mapper/ColumnValue.js +2 -2
  60. package/dist/src/mapper/ColumnValue.js.map +1 -1
  61. package/dist/src/mapper/ErrorUtils.d.ts +2 -9
  62. package/dist/src/mapper/ErrorUtils.d.ts.map +1 -1
  63. package/dist/src/mapper/ErrorUtils.js +48 -37
  64. package/dist/src/mapper/ErrorUtils.js.map +1 -1
  65. package/dist/src/mapper/JunctionTableManager.js +1 -1
  66. package/dist/src/mapper/JunctionTableManager.js.map +1 -1
  67. package/dist/src/mapper/Mapper.js +7 -7
  68. package/dist/src/mapper/Mapper.js.map +1 -1
  69. package/dist/src/mapper/MutationProcessorHelper.js +2 -2
  70. package/dist/src/mapper/MutationProcessorHelper.js.map +1 -1
  71. package/dist/src/mapper/Result.d.ts +4 -4
  72. package/dist/src/mapper/Result.d.ts.map +1 -1
  73. package/dist/src/mapper/Result.js +8 -8
  74. package/dist/src/mapper/Result.js.map +1 -1
  75. package/dist/src/mapper/delete/DeleteExecutor.d.ts.map +1 -1
  76. package/dist/src/mapper/delete/DeleteExecutor.js +5 -14
  77. package/dist/src/mapper/delete/DeleteExecutor.js.map +1 -1
  78. package/dist/src/mapper/insert/InsertBuilder.d.ts.map +1 -1
  79. package/dist/src/mapper/insert/InsertBuilder.js +5 -6
  80. package/dist/src/mapper/insert/InsertBuilder.js.map +1 -1
  81. package/dist/src/mapper/insert/Inserter.js +4 -4
  82. package/dist/src/mapper/insert/Inserter.js.map +1 -1
  83. package/dist/src/mapper/insert/SqlCreateInputProcessor.js +17 -17
  84. package/dist/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  85. package/dist/src/mapper/select/JoinBuilder.js +2 -2
  86. package/dist/src/mapper/select/JoinBuilder.js.map +1 -1
  87. package/dist/src/mapper/select/OrderByBuilder.js +2 -2
  88. package/dist/src/mapper/select/OrderByBuilder.js.map +1 -1
  89. package/dist/src/mapper/select/SelectBuilder.js +4 -4
  90. package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
  91. package/dist/src/mapper/select/WhereBuilder.js +2 -2
  92. package/dist/src/mapper/select/WhereBuilder.js.map +1 -1
  93. package/dist/src/mapper/update/SqlUpdateInputProcessor.js +44 -44
  94. package/dist/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  95. package/dist/src/mapper/update/UpdateBuilder.d.ts.map +1 -1
  96. package/dist/src/mapper/update/UpdateBuilder.js +8 -9
  97. package/dist/src/mapper/update/UpdateBuilder.js.map +1 -1
  98. package/dist/src/mapper/update/Updater.js +3 -3
  99. package/dist/src/mapper/update/Updater.js.map +1 -1
  100. package/dist/src/resolvers/ExecutionContainerFactory.js +2 -2
  101. package/dist/src/resolvers/ExecutionContainerFactory.js.map +1 -1
  102. package/dist/src/resolvers/GraphQlQueryAstFactory.js +7 -7
  103. package/dist/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  104. package/dist/src/resolvers/MutationResolver.d.ts +6 -2
  105. package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
  106. package/dist/src/resolvers/MutationResolver.js +27 -13
  107. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  108. package/dist/src/resolvers/ReadHelpers.js +4 -4
  109. package/dist/src/resolvers/ReadHelpers.js.map +1 -1
  110. package/dist/src/resolvers/ReadResolver.js +3 -3
  111. package/dist/src/resolvers/ReadResolver.js.map +1 -1
  112. package/dist/src/resolvers/ValidationResolver.js +1 -1
  113. package/dist/src/resolvers/ValidationResolver.js.map +1 -1
  114. package/dist/src/schema/ColumnTypeResolver.js +1 -1
  115. package/dist/src/schema/ColumnTypeResolver.js.map +1 -1
  116. package/dist/src/schema/ConditionTypeProvider.js +2 -2
  117. package/dist/src/schema/ConditionTypeProvider.js.map +1 -1
  118. package/dist/src/schema/EntityTypeProvider.js +10 -10
  119. package/dist/src/schema/EntityTypeProvider.js.map +1 -1
  120. package/dist/src/schema/EnumsProvider.js +2 -2
  121. package/dist/src/schema/EnumsProvider.js.map +1 -1
  122. package/dist/src/schema/GraphQlSchemaBuilder.d.ts.map +1 -1
  123. package/dist/src/schema/GraphQlSchemaBuilder.js +16 -1
  124. package/dist/src/schema/GraphQlSchemaBuilder.js.map +1 -1
  125. package/dist/src/schema/MutationProvider.js +2 -2
  126. package/dist/src/schema/MutationProvider.js.map +1 -1
  127. package/dist/src/schema/OrderByTypeProvider.js +4 -4
  128. package/dist/src/schema/OrderByTypeProvider.js.map +1 -1
  129. package/dist/src/schema/ValidationQueriesProvider.js +1 -1
  130. package/dist/src/schema/ValidationQueriesProvider.js.map +1 -1
  131. package/dist/src/schema/WhereTypeProvider.js +10 -10
  132. package/dist/src/schema/WhereTypeProvider.js.map +1 -1
  133. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js +2 -2
  134. package/dist/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  135. package/dist/src/schema/mutations/CreateEntityRelationInputProvider.js +2 -2
  136. package/dist/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
  137. package/dist/src/schema/mutations/EntityInputProvider.js +4 -4
  138. package/dist/src/schema/mutations/EntityInputProvider.js.map +1 -1
  139. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +7 -7
  140. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  141. package/dist/src/schema/mutations/UpdateEntityRelationInputProvider.js +2 -2
  142. package/dist/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
  143. package/dist/src/schema/utils.js +1 -1
  144. package/dist/src/schema/utils.js.map +1 -1
  145. package/dist/src/tsconfig.tsbuildinfo +1 -1
  146. package/dist/src/utils/uniqueWhereFields.js +1 -1
  147. package/dist/src/utils/uniqueWhereFields.js.map +1 -1
  148. package/dist/tests/cases/bugs/bug-filter-or.test.js +13 -13
  149. package/dist/tests/cases/bugs/bug-filter-or.test.js.map +1 -1
  150. package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js +8 -8
  151. package/dist/tests/cases/bugs/bug-update-by-nested-unique.test.js.map +1 -1
  152. package/dist/tests/cases/bugs/bug102.test.js +9 -9
  153. package/dist/tests/cases/bugs/bug102.test.js.map +1 -1
  154. package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js +3 -3
  155. package/dist/tests/cases/integration/graphQlDb/update/bug-freeze-connect-missing-one.test.js.map +1 -1
  156. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.d.ts +2 -0
  157. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.d.ts.map +1 -0
  158. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js +185 -0
  159. package/dist/tests/cases/integration/graphQlDb/update/deferedConstraints.test.js.map +1 -0
  160. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.d.ts +2 -0
  161. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.d.ts.map +1 -0
  162. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js +43 -0
  163. package/dist/tests/cases/integration/graphQlDb/update/failedDelete.test.js.map +1 -0
  164. package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js +7 -7
  165. package/dist/tests/cases/integration/graphQlDb/update/invalidInput.test.js.map +1 -1
  166. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js +12 -12
  167. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNotNull.test.js.map +1 -1
  168. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js +12 -12
  169. package/dist/tests/cases/integration/graphQlDb/update/nullChecksNullable.test.js.map +1 -1
  170. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.d.ts +2 -0
  171. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.d.ts.map +1 -0
  172. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js +38 -0
  173. package/dist/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.js.map +1 -0
  174. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js +16 -16
  175. package/dist/tests/cases/integration/graphQlRequests/delete/aclDelete.test.js.map +1 -1
  176. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js +16 -16
  177. package/dist/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.js.map +1 -1
  178. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js +22 -22
  179. package/dist/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.js.map +1 -1
  180. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js +20 -20
  181. package/dist/tests/cases/integration/graphQlRequests/delete/deleteById.test.js.map +1 -1
  182. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js +19 -19
  183. package/dist/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.js.map +1 -1
  184. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js +18 -18
  185. package/dist/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.js.map +1 -1
  186. package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js +13 -13
  187. package/dist/tests/cases/integration/graphQlRequests/insert/acl/setField.test.js.map +1 -1
  188. package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js +11 -11
  189. package/dist/tests/cases/integration/graphQlRequests/insert/aclInsert.test.js.map +1 -1
  190. package/dist/tests/cases/integration/graphQlRequests/insert/basicInsert.test.js +11 -11
  191. package/dist/tests/cases/integration/graphQlRequests/insert/basicInsert.test.js.map +1 -1
  192. package/dist/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.js +12 -12
  193. package/dist/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.js.map +1 -1
  194. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.js +21 -21
  195. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/insertRelationCreate.test.js.map +1 -1
  196. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.js +21 -21
  197. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/insertRelationCreate.test.js.map +1 -1
  198. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.js +14 -14
  199. package/dist/tests/cases/integration/graphQlRequests/insert/manyHasOne/insertRelationCreate.test.js.map +1 -1
  200. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.js +17 -17
  201. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationConnect.test.js.map +1 -1
  202. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.js +17 -17
  203. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasMany/insertRelationCreate.test.js.map +1 -1
  204. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.js +14 -14
  205. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/insertRelationCreate.test.js.map +1 -1
  206. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.js +14 -14
  207. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationCreate.test.js.map +1 -1
  208. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.js +11 -11
  209. package/dist/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/insertRelationEmpty.test.js.map +1 -1
  210. package/dist/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.js +15 -15
  211. package/dist/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.js.map +1 -1
  212. package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js +6 -6
  213. package/dist/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.js.map +1 -1
  214. package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js +38 -38
  215. package/dist/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.js.map +1 -1
  216. package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js +13 -13
  217. package/dist/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.js.map +1 -1
  218. package/dist/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.js +6 -6
  219. package/dist/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.js.map +1 -1
  220. package/dist/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.js +6 -6
  221. package/dist/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.js.map +1 -1
  222. package/dist/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.js +15 -15
  223. package/dist/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.js.map +1 -1
  224. package/dist/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.js +6 -6
  225. package/dist/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.js.map +1 -1
  226. package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js +6 -6
  227. package/dist/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.js.map +1 -1
  228. package/dist/tests/cases/integration/graphQlRequests/query/filter/containsQuery.test.js +6 -6
  229. package/dist/tests/cases/integration/graphQlRequests/query/filter/containsQuery.test.js.map +1 -1
  230. package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js +18 -18
  231. package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.js.map +1 -1
  232. package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.js +8 -8
  233. package/dist/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.js.map +1 -1
  234. package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js +8 -8
  235. package/dist/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.js.map +1 -1
  236. package/dist/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.js +7 -7
  237. package/dist/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.js.map +1 -1
  238. package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js +13 -13
  239. package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.js.map +1 -1
  240. package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.js +18 -18
  241. package/dist/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.js.map +1 -1
  242. package/dist/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.js +6 -6
  243. package/dist/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.js.map +1 -1
  244. package/dist/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.js +6 -6
  245. package/dist/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.js.map +1 -1
  246. package/dist/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.js +13 -13
  247. package/dist/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.js.map +1 -1
  248. package/dist/tests/cases/integration/graphQlRequests/query/misc/transaction.test.js +13 -13
  249. package/dist/tests/cases/integration/graphQlRequests/query/misc/transaction.test.js.map +1 -1
  250. package/dist/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.js +39 -39
  251. package/dist/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.js.map +1 -1
  252. package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.js +14 -14
  253. package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.js.map +1 -1
  254. package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.js +14 -14
  255. package/dist/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.js.map +1 -1
  256. package/dist/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.js +8 -8
  257. package/dist/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.js.map +1 -1
  258. package/dist/tests/cases/integration/graphQlRequests/query/relations/advanced.test.js +73 -73
  259. package/dist/tests/cases/integration/graphQlRequests/query/relations/advanced.test.js.map +1 -1
  260. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js +29 -29
  261. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.js.map +1 -1
  262. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js +20 -20
  263. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.js.map +1 -1
  264. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.js +34 -34
  265. package/dist/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.js.map +1 -1
  266. package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.js +65 -65
  267. package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.js.map +1 -1
  268. package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.js +16 -16
  269. package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.js.map +1 -1
  270. package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.js +16 -16
  271. package/dist/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.js.map +1 -1
  272. package/dist/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.js +6 -6
  273. package/dist/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.js.map +1 -1
  274. package/dist/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.js +28 -28
  275. package/dist/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.js.map +1 -1
  276. package/dist/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.js +39 -39
  277. package/dist/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.js.map +1 -1
  278. package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.js +17 -17
  279. package/dist/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.js.map +1 -1
  280. package/dist/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.js +8 -8
  281. package/dist/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.js.map +1 -1
  282. package/dist/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.js +8 -8
  283. package/dist/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.js.map +1 -1
  284. package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js +8 -8
  285. package/dist/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.js.map +1 -1
  286. package/dist/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.js +8 -8
  287. package/dist/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.js.map +1 -1
  288. package/dist/tests/cases/integration/graphQlRequests/query/view/view.test.js +10 -10
  289. package/dist/tests/cases/integration/graphQlRequests/query/view/view.test.js.map +1 -1
  290. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js +40 -40
  291. package/dist/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.js.map +1 -1
  292. package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js +14 -14
  293. package/dist/tests/cases/integration/graphQlRequests/update/additionalFilter.test.js.map +1 -1
  294. package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js +14 -14
  295. package/dist/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.js.map +1 -1
  296. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.js +14 -14
  297. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.js.map +1 -1
  298. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.js +13 -13
  299. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.js.map +1 -1
  300. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js +16 -16
  301. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.js.map +1 -1
  302. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.js +14 -14
  303. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.js.map +1 -1
  304. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js +16 -16
  305. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.js.map +1 -1
  306. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js +32 -32
  307. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.js.map +1 -1
  308. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.js +14 -14
  309. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.js.map +1 -1
  310. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.js +13 -13
  311. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.js.map +1 -1
  312. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js +16 -16
  313. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.js.map +1 -1
  314. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.js +14 -14
  315. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.js.map +1 -1
  316. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js +16 -16
  317. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.js.map +1 -1
  318. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js +32 -32
  319. package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.js.map +1 -1
  320. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js +14 -14
  321. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.js.map +1 -1
  322. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js +13 -13
  323. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.js.map +1 -1
  324. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js +41 -41
  325. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.js.map +1 -1
  326. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js +10 -10
  327. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.js.map +1 -1
  328. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js +16 -16
  329. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.js.map +1 -1
  330. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js +31 -31
  331. package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.js.map +1 -1
  332. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js +18 -18
  333. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.js.map +1 -1
  334. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js +14 -14
  335. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.js.map +1 -1
  336. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.js +11 -11
  337. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.js.map +1 -1
  338. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js +15 -15
  339. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.js.map +1 -1
  340. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js +14 -14
  341. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.js.map +1 -1
  342. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js +21 -21
  343. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.js.map +1 -1
  344. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js +26 -26
  345. package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.js.map +1 -1
  346. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js +50 -50
  347. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.js.map +1 -1
  348. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js +29 -29
  349. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.js.map +1 -1
  350. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js +15 -15
  351. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.js.map +1 -1
  352. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js +13 -13
  353. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.js.map +1 -1
  354. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js +13 -13
  355. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.js.map +1 -1
  356. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js +26 -26
  357. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.js.map +1 -1
  358. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js +50 -50
  359. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.js.map +1 -1
  360. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js +13 -13
  361. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.js.map +1 -1
  362. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js +17 -17
  363. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.js.map +1 -1
  364. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js +16 -16
  365. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.js.map +1 -1
  366. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js +31 -31
  367. package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.js.map +1 -1
  368. package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js +26 -26
  369. package/dist/tests/cases/integration/graphQlRequests/update/queryPortal.test.js.map +1 -1
  370. package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js +40 -40
  371. package/dist/tests/cases/integration/graphQlRequests/update/transaction.test.js.map +1 -1
  372. package/dist/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.js +10 -10
  373. package/dist/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.js.map +1 -1
  374. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js +24 -24
  375. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js.map +1 -1
  376. package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.js +5 -5
  377. package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.js.map +1 -1
  378. package/dist/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.js +9 -9
  379. package/dist/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.js.map +1 -1
  380. package/dist/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.js +11 -11
  381. package/dist/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.js.map +1 -1
  382. package/dist/tests/cases/integration/graphQlRequests/validation/required.test.js +26 -26
  383. package/dist/tests/cases/integration/graphQlRequests/validation/required.test.js.map +1 -1
  384. package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.js +18 -18
  385. package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.js.map +1 -1
  386. package/dist/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.js +4 -4
  387. package/dist/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.js.map +1 -1
  388. package/dist/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.js +5 -5
  389. package/dist/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.js.map +1 -1
  390. package/dist/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.js +4 -4
  391. package/dist/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.js.map +1 -1
  392. package/dist/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.js +4 -4
  393. package/dist/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.js.map +1 -1
  394. package/dist/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.js +6 -6
  395. package/dist/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.js.map +1 -1
  396. package/dist/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.js +4 -4
  397. package/dist/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.js.map +1 -1
  398. package/dist/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.js +5 -5
  399. package/dist/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.js.map +1 -1
  400. package/dist/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.js +4 -4
  401. package/dist/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.js.map +1 -1
  402. package/dist/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.js +5 -5
  403. package/dist/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.js.map +1 -1
  404. package/dist/tests/cases/integration/graphQlRequests/validation/utils.js +4 -4
  405. package/dist/tests/cases/integration/graphQlRequests/validation/utils.js.map +1 -1
  406. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +3 -3
  407. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
  408. package/dist/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +5 -1
  409. package/dist/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +5 -1
  410. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -1
  411. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +5 -1
  412. package/dist/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -1
  413. package/dist/tests/cases/integration/graphQlSchema/schema-acl.gql +5 -1
  414. package/dist/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +5 -1
  415. package/dist/tests/cases/integration/graphQlSchema/schema-basic.gql +5 -1
  416. package/dist/tests/cases/integration/graphQlSchema/schema-bug-66.gql +5 -1
  417. package/dist/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +5 -1
  418. package/dist/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +5 -1
  419. package/dist/tests/cases/integration/graphQlSchema/schema-new-builder.gql +5 -1
  420. package/dist/tests/cases/unit/inputPreValidator.test.js +20 -20
  421. package/dist/tests/cases/unit/inputPreValidator.test.js.map +1 -1
  422. package/dist/tests/cases/unit/inputValidation.test.js +7 -7
  423. package/dist/tests/cases/unit/inputValidation.test.js.map +1 -1
  424. package/dist/tests/cases/unit/orderbyHelper.test.js +1 -1
  425. package/dist/tests/cases/unit/orderbyHelper.test.js.map +1 -1
  426. package/dist/tests/cases/unit/permissionMerger.test.js +1 -1
  427. package/dist/tests/cases/unit/permissionMerger.test.js.map +1 -1
  428. package/dist/tests/cases/unit/predicatesInjector.test.js +1 -1
  429. package/dist/tests/cases/unit/predicatesInjector.test.js.map +1 -1
  430. package/dist/tests/cases/unit/variableInjector.test.js +1 -1
  431. package/dist/tests/cases/unit/variableInjector.test.js.map +1 -1
  432. package/dist/tests/src/test.js +6 -6
  433. package/dist/tests/src/test.js.map +1 -1
  434. package/dist/tests/src/testGraphql.js +1 -1
  435. package/dist/tests/src/testGraphql.js.map +1 -1
  436. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  437. package/package.json +11 -11
  438. package/src/bridges/system/index.ts +0 -1
  439. package/src/introspection/content-schema.types.ts +5 -0
  440. package/src/mapper/ColumnValue.ts +1 -1
  441. package/src/mapper/ErrorUtils.ts +64 -41
  442. package/src/mapper/Mapper.ts +5 -5
  443. package/src/mapper/Result.ts +7 -4
  444. package/src/mapper/delete/DeleteExecutor.ts +3 -10
  445. package/src/mapper/insert/InsertBuilder.ts +1 -2
  446. package/src/mapper/insert/Inserter.ts +2 -2
  447. package/src/mapper/update/UpdateBuilder.ts +1 -2
  448. package/src/mapper/update/Updater.ts +1 -1
  449. package/src/resolvers/ExecutionContainerFactory.ts +1 -1
  450. package/src/resolvers/MutationResolver.ts +18 -2
  451. package/src/schema/GraphQlSchemaBuilder.ts +15 -3
  452. package/tests/cases/integration/graphQlDb/update/deferedConstraints.test.ts +208 -0
  453. package/tests/cases/integration/graphQlDb/update/failedDelete.test.ts +47 -0
  454. package/tests/cases/integration/graphQlDb/update/uniqueConstraint.test.ts +40 -0
  455. package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +5 -1
  456. package/tests/cases/integration/graphQlSchema/schema-acl-create-only.gql +5 -1
  457. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +5 -1
  458. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +5 -1
  459. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +5 -1
  460. package/tests/cases/integration/graphQlSchema/schema-acl.gql +5 -1
  461. package/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +5 -1
  462. package/tests/cases/integration/graphQlSchema/schema-basic.gql +5 -1
  463. package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +5 -1
  464. package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +5 -1
  465. package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +5 -1
  466. package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +5 -1
  467. package/dist/src/bridges/system/ContentEventApplier.d.ts +0 -50
  468. package/dist/src/bridges/system/ContentEventApplier.d.ts.map +0 -1
  469. package/dist/src/bridges/system/ContentEventApplier.js +0 -249
  470. package/dist/src/bridges/system/ContentEventApplier.js.map +0 -1
  471. package/src/bridges/system/ContentEventApplier.ts +0 -399
@@ -1,249 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ContentEventApplier = exports.ContentApplyDependenciesFactoryImpl = exports.ContentEventApplyErrorResult = exports.ContentEventApplyOkResult = void 0;
7
- const engine_common_1 = require("@contember/engine-common");
8
- const database_1 = require("@contember/database");
9
- const schema_1 = require("@contember/schema");
10
- const schema_utils_1 = require("@contember/schema-utils");
11
- const mapper_1 = require("../../mapper");
12
- const assert_1 = __importDefault(require("assert"));
13
- const utils_1 = require("../../utils");
14
- const acl_1 = require("../../acl");
15
- const database_2 = require("@contember/database");
16
- class ContentEventApplyOkResult {
17
- constructor(appliedEvents) {
18
- this.appliedEvents = appliedEvents;
19
- this.ok = true;
20
- }
21
- }
22
- exports.ContentEventApplyOkResult = ContentEventApplyOkResult;
23
- class ContentEventApplyErrorResult {
24
- constructor(appliedEvents, failedEvent) {
25
- this.appliedEvents = appliedEvents;
26
- this.failedEvent = failedEvent;
27
- this.ok = false;
28
- }
29
- }
30
- exports.ContentEventApplyErrorResult = ContentEventApplyErrorResult;
31
- const buildTables = (schema) => {
32
- const result = {
33
- entities: {},
34
- junctions: {},
35
- };
36
- for (let entity of Object.values(schema.entities)) {
37
- const entityResult = {
38
- entity,
39
- columns: {},
40
- };
41
- result.entities[entity.tableName] = entityResult;
42
- schema_utils_1.acceptEveryFieldVisitor(schema, entity, new (class {
43
- visitManyHasOne({}, relation) {
44
- entityResult.columns[relation.joiningColumn.columnName] = relation;
45
- }
46
- visitOneHasOneOwning({}, relation) {
47
- entityResult.columns[relation.joiningColumn.columnName] = relation;
48
- }
49
- visitManyHasManyOwning({}, relation) {
50
- result.junctions[relation.joiningTable.tableName] = {
51
- entity,
52
- relation,
53
- };
54
- }
55
- visitColumn({}, column) {
56
- entityResult.columns[column.columnName] = column;
57
- }
58
- visitManyHasManyInverse() { }
59
- visitOneHasMany() { }
60
- visitOneHasOneInverse() { }
61
- })());
62
- }
63
- return result;
64
- };
65
- class ContentApplyDependenciesFactoryImpl {
66
- create(schema, roles, identityVariables) {
67
- const pathFactory = new mapper_1.PathFactory();
68
- const whereBuilder = new mapper_1.WhereBuilder(schema.model, new mapper_1.JoinBuilder(schema.model), new mapper_1.ConditionBuilder(), pathFactory);
69
- const permissionsFactory = new acl_1.PermissionsByIdentityFactory();
70
- const { permissions } = permissionsFactory.createPermissions(schema, {
71
- projectRoles: roles,
72
- });
73
- const predicateFactory = new acl_1.PredicateFactory(permissions, new acl_1.VariableInjector(schema.model, identityVariables));
74
- const insertBuilderFactory = new mapper_1.InsertBuilderFactory(schema.model, whereBuilder, pathFactory);
75
- const junctionTableManager = new mapper_1.JunctionTableManager(schema.model, predicateFactory, whereBuilder, new mapper_1.JunctionConnectHandler(), new mapper_1.JunctionDisconnectHandler(), pathFactory);
76
- const updateBuilderFactory = new mapper_1.UpdateBuilderFactory(schema.model, whereBuilder, pathFactory);
77
- return {
78
- insertBuilderFactory,
79
- junctionTableManager,
80
- predicateFactory,
81
- updateBuilderFactory,
82
- whereBuilder,
83
- pathFactory,
84
- };
85
- }
86
- }
87
- exports.ContentApplyDependenciesFactoryImpl = ContentApplyDependenciesFactoryImpl;
88
- class ContentEventApplier {
89
- constructor(contentApplyDependenciesFactory) {
90
- this.contentApplyDependenciesFactory = contentApplyDependenciesFactory;
91
- }
92
- async apply(context, events) {
93
- const constraintHelper = new database_2.ConstraintHelper(context.db);
94
- const tables = buildTables(context.schema.model);
95
- const deps = {
96
- ...this.contentApplyDependenciesFactory.create(context.schema, context.roles, context.identityVariables),
97
- db: context.db,
98
- };
99
- const applied = [];
100
- let trxId = null;
101
- let deletedEntities = new Set();
102
- const getEntityRef = (name, id) => `${name}#${id}`;
103
- for (const event of events) {
104
- if (event.transactionId !== trxId) {
105
- deletedEntities = new Set();
106
- await constraintHelper.setFkConstraintsImmediate();
107
- await constraintHelper.setFkConstraintsDeferred();
108
- trxId = event.transactionId;
109
- }
110
- let result;
111
- const entityTable = tables.entities[event.tableName];
112
- const junctionTable = tables.junctions[event.tableName];
113
- if (entityTable) {
114
- if (event.type === engine_common_1.EventType.delete) {
115
- deletedEntities.add(getEntityRef(tables.entities[event.tableName].entity.name, event.rowId[0]));
116
- }
117
- result = await this.applyEntityEvent({
118
- ...deps,
119
- entityTable: entityTable,
120
- }, event);
121
- }
122
- else if (junctionTable) {
123
- const primaryRef = getEntityRef(junctionTable.entity.name, event.rowId[0]);
124
- const inverseRef = getEntityRef(junctionTable.relation.target, event.rowId[1]);
125
- if (deletedEntities.has(primaryRef) || deletedEntities.has(inverseRef)) {
126
- // already deleted using cascade
127
- continue;
128
- }
129
- result = await this.applyJunctionEvent({
130
- ...deps,
131
- junctionTable: junctionTable,
132
- }, event);
133
- }
134
- else {
135
- throw new Error();
136
- }
137
- if (result.result !== mapper_1.MutationResultType.ok) {
138
- return new ContentEventApplyErrorResult(applied, event);
139
- }
140
- applied.push(event);
141
- }
142
- await constraintHelper.setFkConstraintsImmediate();
143
- return new ContentEventApplyOkResult(applied);
144
- }
145
- async applyEntityEvent(context, event) {
146
- switch (event.type) {
147
- case engine_common_1.EventType.create:
148
- return await this.applyEntityCreate(context, event);
149
- case engine_common_1.EventType.delete:
150
- return await this.applyEntityDelete(context, event);
151
- case engine_common_1.EventType.update:
152
- return await this.applyEntityUpdate(context, event);
153
- default:
154
- utils_1.assertNever(event);
155
- }
156
- }
157
- async applyEntityCreate(context, event) {
158
- assert_1.default.equal(event.rowId.length, 1);
159
- const entity = context.entityTable.entity;
160
- const affectedField = Object.keys(event.values).map(it => context.entityTable.columns[it].name);
161
- const predicate = context.predicateFactory.create(entity, schema_1.Acl.Operation.create, affectedField);
162
- const insertBuilder = context.insertBuilderFactory.create(entity);
163
- insertBuilder.addWhere(predicate);
164
- insertBuilder.addFieldValue(entity.primaryColumn, event.rowId[0]);
165
- for (const [col, value] of Object.entries(event.values)) {
166
- insertBuilder.addFieldValue(context.entityTable.columns[col].name, value);
167
- }
168
- const result = await insertBuilder.execute(context.db);
169
- if (result.primaryValue === null) {
170
- return new mapper_1.MutationNoResultError([]);
171
- }
172
- assert_1.default.equal(result.primaryValue, event.rowId[0]);
173
- return new mapper_1.MutationCreateOk([], entity, result.primaryValue, {}, event.values);
174
- }
175
- async applyEntityUpdate(context, event) {
176
- assert_1.default.equal(event.rowId.length, 1);
177
- const entity = context.entityTable.entity;
178
- const primary = event.rowId[0];
179
- const updateBuilder = context.updateBuilderFactory.create(entity, {
180
- [entity.primary]: { eq: primary },
181
- });
182
- const affectedField = Object.keys(event.values).map(it => context.entityTable.columns[it].name);
183
- const predicate = context.predicateFactory.create(entity, schema_1.Acl.Operation.update, affectedField);
184
- updateBuilder.addOldWhere(predicate);
185
- updateBuilder.addNewWhere(predicate);
186
- for (const [col, value] of Object.entries(event.values)) {
187
- updateBuilder.addFieldValue(context.entityTable.columns[col].name, value);
188
- }
189
- const result = await updateBuilder.execute(context.db);
190
- if (!result.executed) {
191
- return new mapper_1.MutationNothingToDo([], mapper_1.NothingToDoReason.noData);
192
- }
193
- if (result.affectedRows !== 1) {
194
- return new mapper_1.MutationNoResultError([]);
195
- }
196
- return new mapper_1.MutationUpdateOk([], entity, primary, {}, event.values);
197
- }
198
- async applyEntityDelete(context, event) {
199
- assert_1.default.equal(event.rowId.length, 1);
200
- const entity = context.entityTable.entity;
201
- const predicate = context.predicateFactory.create(entity, schema_1.Acl.Operation.delete);
202
- const inQb = database_1.SelectBuilder.create() //
203
- .from(entity.tableName, 'root_')
204
- .select(['root_', entity.primaryColumn]);
205
- const primary = event.rowId[0];
206
- const inQbWithWhere = context.whereBuilder.build(inQb, entity, context.pathFactory.create([]), {
207
- and: [
208
- {
209
- [entity.primary]: { eq: primary },
210
- },
211
- predicate,
212
- ],
213
- });
214
- const qb = database_1.DeleteBuilder.create()
215
- .from(entity.tableName)
216
- .where(condition => condition.in(entity.primaryColumn, inQbWithWhere));
217
- const result = await qb.execute(context.db);
218
- if (result === 0) {
219
- return new mapper_1.MutationNoResultError([]);
220
- }
221
- return new mapper_1.MutationDeleteOk([], entity, primary);
222
- }
223
- async applyJunctionEvent(context, event) {
224
- const result = await (() => {
225
- switch (event.type) {
226
- case engine_common_1.EventType.create:
227
- return this.applyJunctionConnect(context, event);
228
- case engine_common_1.EventType.delete:
229
- return this.applyJunctionDisconnect(context, event);
230
- case engine_common_1.EventType.update:
231
- throw new Error();
232
- default:
233
- return utils_1.assertNever(event);
234
- }
235
- })();
236
- assert_1.default.equal(result.length, 1);
237
- return result[0];
238
- }
239
- async applyJunctionConnect(context, event) {
240
- assert_1.default.equal(event.rowId.length, 2);
241
- return await context.junctionTableManager.connectJunction(context.db, context.junctionTable.entity, context.junctionTable.relation, event.rowId[0], event.rowId[1]);
242
- }
243
- async applyJunctionDisconnect(context, event) {
244
- assert_1.default.equal(event.rowId.length, 2);
245
- return await context.junctionTableManager.disconnectJunction(context.db, context.junctionTable.entity, context.junctionTable.relation, event.rowId[0], event.rowId[1]);
246
- }
247
- }
248
- exports.ContentEventApplier = ContentEventApplier;
249
- //# sourceMappingURL=ContentEventApplier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContentEventApplier.js","sourceRoot":"","sources":["../../../../src/bridges/system/ContentEventApplier.ts"],"names":[],"mappings":"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"}
@@ -1,399 +0,0 @@
1
- import { ContentEvent, CreateEvent, DeleteEvent, EventType, UpdateEvent } from '@contember/engine-common'
2
- import { Client, DeleteBuilder, SelectBuilder } from '@contember/database'
3
- import { Acl, Model, Schema } from '@contember/schema'
4
- import { acceptEveryFieldVisitor } from '@contember/schema-utils'
5
- import {
6
- ConditionBuilder,
7
- InsertBuilderFactory,
8
- JoinBuilder,
9
- JunctionConnectHandler,
10
- JunctionDisconnectHandler,
11
- JunctionTableManager,
12
- MutationCreateOk,
13
- MutationDeleteOk,
14
- MutationNoResultError,
15
- MutationNothingToDo,
16
- MutationResult,
17
- MutationResultList,
18
- MutationResultType,
19
- MutationUpdateOk,
20
- NothingToDoReason,
21
- PathFactory,
22
- UpdateBuilderFactory,
23
- WhereBuilder,
24
- } from '../../mapper'
25
- import assert from 'assert'
26
- import { assertNever } from '../../utils'
27
- import { PermissionsByIdentityFactory, PredicateFactory, VariableInjector } from '../../acl'
28
- import { ConstraintHelper } from '@contember/database'
29
-
30
- export interface ContentEventApplierContext {
31
- db: Client
32
- schema: Schema
33
- identityVariables: Acl.VariablesMap
34
- roles: string[]
35
- }
36
-
37
- export class ContentEventApplyOkResult {
38
- public readonly ok = true as const
39
-
40
- constructor(public readonly appliedEvents: ContentEvent[]) {}
41
- }
42
-
43
- export class ContentEventApplyErrorResult {
44
- public readonly ok = false as const
45
-
46
- constructor(public readonly appliedEvents: ContentEvent[], public readonly failedEvent: ContentEvent) {}
47
- }
48
- export type ContentEventApplyResult = ContentEventApplyOkResult | ContentEventApplyErrorResult
49
-
50
- type EntityTable = {
51
- entity: Model.Entity
52
- columns: Record<string, Model.AnyField>
53
- }
54
- type EntityTables = Record<string, EntityTable>
55
-
56
- type JunctionTable = {
57
- entity: Model.Entity
58
- relation: Model.ManyHasManyOwningRelation
59
- }
60
- type JunctionTables = Record<string, JunctionTable>
61
-
62
- type Tables = {
63
- entities: EntityTables
64
- junctions: JunctionTables
65
- }
66
-
67
- const buildTables = (schema: Model.Schema): Tables => {
68
- const result: Tables = {
69
- entities: {},
70
- junctions: {},
71
- }
72
- for (let entity of Object.values(schema.entities)) {
73
- const entityResult: EntityTable = {
74
- entity,
75
- columns: {},
76
- }
77
- result.entities[entity.tableName] = entityResult
78
- acceptEveryFieldVisitor(
79
- schema,
80
- entity,
81
- new (class implements Model.RelationByTypeVisitor<void> {
82
- visitManyHasOne({}, relation: Model.ManyHasOneRelation) {
83
- entityResult.columns[relation.joiningColumn.columnName] = relation
84
- }
85
-
86
- visitOneHasOneOwning({}, relation: Model.OneHasOneOwningRelation) {
87
- entityResult.columns[relation.joiningColumn.columnName] = relation
88
- }
89
-
90
- visitManyHasManyOwning({}, relation: Model.ManyHasManyOwningRelation) {
91
- result.junctions[relation.joiningTable.tableName] = {
92
- entity,
93
- relation,
94
- }
95
- }
96
-
97
- visitColumn({}, column: Model.AnyColumn) {
98
- entityResult.columns[column.columnName] = column
99
- }
100
-
101
- visitManyHasManyInverse() {}
102
-
103
- visitOneHasMany() {}
104
-
105
- visitOneHasOneInverse() {}
106
- })(),
107
- )
108
- }
109
- return result
110
- }
111
- export interface ContentApplyDependencies {
112
- whereBuilder: WhereBuilder
113
- predicateFactory: PredicateFactory
114
- junctionTableManager: JunctionTableManager
115
- insertBuilderFactory: InsertBuilderFactory
116
- updateBuilderFactory: UpdateBuilderFactory
117
- pathFactory: PathFactory
118
- }
119
- export interface ContentApplyDependenciesFactory {
120
- create(schema: Schema, roles: string[], identityVariables: Acl.VariablesMap): ContentApplyDependencies
121
- }
122
-
123
- export class ContentApplyDependenciesFactoryImpl implements ContentApplyDependenciesFactory {
124
- create(schema: Schema, roles: string[], identityVariables: Acl.VariablesMap): ContentApplyDependencies {
125
- const pathFactory = new PathFactory()
126
- const whereBuilder = new WhereBuilder(
127
- schema.model,
128
- new JoinBuilder(schema.model),
129
- new ConditionBuilder(),
130
- pathFactory,
131
- )
132
- const permissionsFactory = new PermissionsByIdentityFactory()
133
- const { permissions } = permissionsFactory.createPermissions(schema, {
134
- projectRoles: roles,
135
- })
136
-
137
- const predicateFactory = new PredicateFactory(permissions, new VariableInjector(schema.model, identityVariables))
138
- const insertBuilderFactory = new InsertBuilderFactory(schema.model, whereBuilder, pathFactory)
139
- const junctionTableManager = new JunctionTableManager(
140
- schema.model,
141
- predicateFactory,
142
- whereBuilder,
143
- new JunctionConnectHandler(),
144
- new JunctionDisconnectHandler(),
145
- pathFactory,
146
- )
147
- const updateBuilderFactory = new UpdateBuilderFactory(schema.model, whereBuilder, pathFactory)
148
- return {
149
- insertBuilderFactory,
150
- junctionTableManager,
151
- predicateFactory,
152
- updateBuilderFactory,
153
- whereBuilder,
154
- pathFactory,
155
- }
156
- }
157
- }
158
-
159
- export class ContentEventApplier {
160
- constructor(private readonly contentApplyDependenciesFactory: ContentApplyDependenciesFactory) {}
161
-
162
- public async apply(context: ContentEventApplierContext, events: ContentEvent[]): Promise<ContentEventApplyResult> {
163
- const constraintHelper = new ConstraintHelper(context.db)
164
- const tables = buildTables(context.schema.model)
165
- const deps = {
166
- ...this.contentApplyDependenciesFactory.create(context.schema, context.roles, context.identityVariables),
167
- db: context.db,
168
- }
169
- const applied: ContentEvent[] = []
170
- let trxId: string | null = null
171
- let deletedEntities = new Set<string>()
172
- const getEntityRef = (name: string, id: string) => `${name}#${id}`
173
- for (const event of events) {
174
- if (event.transactionId !== trxId) {
175
- deletedEntities = new Set<string>()
176
- await constraintHelper.setFkConstraintsImmediate()
177
- await constraintHelper.setFkConstraintsDeferred()
178
- trxId = event.transactionId
179
- }
180
- let result
181
- const entityTable = tables.entities[event.tableName]
182
- const junctionTable = tables.junctions[event.tableName]
183
- if (entityTable) {
184
- if (event.type === EventType.delete) {
185
- deletedEntities.add(getEntityRef(tables.entities[event.tableName].entity.name, event.rowId[0]))
186
- }
187
- result = await this.applyEntityEvent(
188
- {
189
- ...deps,
190
- entityTable: entityTable,
191
- },
192
- event,
193
- )
194
- } else if (junctionTable) {
195
- const primaryRef = getEntityRef(junctionTable.entity.name, event.rowId[0])
196
- const inverseRef = getEntityRef(junctionTable.relation.target, event.rowId[1])
197
- if (deletedEntities.has(primaryRef) || deletedEntities.has(inverseRef)) {
198
- // already deleted using cascade
199
- continue
200
- }
201
- result = await this.applyJunctionEvent(
202
- {
203
- ...deps,
204
- junctionTable: junctionTable,
205
- },
206
- event,
207
- )
208
- } else {
209
- throw new Error()
210
- }
211
-
212
- if (result.result !== MutationResultType.ok) {
213
- return new ContentEventApplyErrorResult(applied, event)
214
- }
215
- applied.push(event)
216
- }
217
- await constraintHelper.setFkConstraintsImmediate()
218
- return new ContentEventApplyOkResult(applied)
219
- }
220
-
221
- private async applyEntityEvent(
222
- context: {
223
- db: Client
224
- whereBuilder: WhereBuilder
225
- predicateFactory: PredicateFactory
226
- entityTable: EntityTable
227
- insertBuilderFactory: InsertBuilderFactory
228
- updateBuilderFactory: UpdateBuilderFactory
229
- pathFactory: PathFactory
230
- },
231
- event: ContentEvent,
232
- ): Promise<MutationResult> {
233
- switch (event.type) {
234
- case EventType.create:
235
- return await this.applyEntityCreate(context, event)
236
- case EventType.delete:
237
- return await this.applyEntityDelete(context, event)
238
- case EventType.update:
239
- return await this.applyEntityUpdate(context, event)
240
- default:
241
- assertNever(event)
242
- }
243
- }
244
-
245
- private async applyEntityCreate(
246
- context: {
247
- db: Client
248
- predicateFactory: PredicateFactory
249
- entityTable: EntityTable
250
- insertBuilderFactory: InsertBuilderFactory
251
- },
252
- event: CreateEvent,
253
- ): Promise<MutationResult> {
254
- assert.equal(event.rowId.length, 1)
255
- const entity = context.entityTable.entity
256
- const affectedField = Object.keys(event.values).map(it => context.entityTable.columns[it].name)
257
- const predicate = context.predicateFactory.create(entity, Acl.Operation.create, affectedField)
258
- const insertBuilder = context.insertBuilderFactory.create(entity)
259
- insertBuilder.addWhere(predicate)
260
- insertBuilder.addFieldValue(entity.primaryColumn, event.rowId[0])
261
- for (const [col, value] of Object.entries(event.values)) {
262
- insertBuilder.addFieldValue(context.entityTable.columns[col].name, value)
263
- }
264
- const result = await insertBuilder.execute(context.db)
265
- if (result.primaryValue === null) {
266
- return new MutationNoResultError([])
267
- }
268
- assert.equal(result.primaryValue, event.rowId[0])
269
- return new MutationCreateOk([], entity, result.primaryValue, {}, event.values)
270
- }
271
-
272
- private async applyEntityUpdate(
273
- context: {
274
- db: Client
275
- predicateFactory: PredicateFactory
276
- updateBuilderFactory: UpdateBuilderFactory
277
- entityTable: EntityTable
278
- },
279
- event: UpdateEvent,
280
- ): Promise<MutationResult> {
281
- assert.equal(event.rowId.length, 1)
282
- const entity = context.entityTable.entity
283
- const primary = event.rowId[0]
284
- const updateBuilder = context.updateBuilderFactory.create(entity, {
285
- [entity.primary]: { eq: primary },
286
- })
287
- const affectedField = Object.keys(event.values).map(it => context.entityTable.columns[it].name)
288
- const predicate = context.predicateFactory.create(entity, Acl.Operation.update, affectedField)
289
- updateBuilder.addOldWhere(predicate)
290
- updateBuilder.addNewWhere(predicate)
291
- for (const [col, value] of Object.entries(event.values)) {
292
- updateBuilder.addFieldValue(context.entityTable.columns[col].name, value)
293
- }
294
- const result = await updateBuilder.execute(context.db)
295
- if (!result.executed) {
296
- return new MutationNothingToDo([], NothingToDoReason.noData)
297
- }
298
- if (result.affectedRows !== 1) {
299
- return new MutationNoResultError([])
300
- }
301
- return new MutationUpdateOk([], entity, primary, {}, event.values)
302
- }
303
-
304
- private async applyEntityDelete(
305
- context: {
306
- db: Client
307
- predicateFactory: PredicateFactory
308
- whereBuilder: WhereBuilder
309
- entityTable: EntityTable
310
- pathFactory: PathFactory
311
- },
312
- event: DeleteEvent,
313
- ): Promise<MutationResult> {
314
- assert.equal(event.rowId.length, 1)
315
- const entity = context.entityTable.entity
316
- const predicate = context.predicateFactory.create(entity, Acl.Operation.delete)
317
- const inQb = SelectBuilder.create() //
318
- .from(entity.tableName, 'root_')
319
- .select(['root_', entity.primaryColumn])
320
- const primary = event.rowId[0]
321
- const inQbWithWhere = context.whereBuilder.build(inQb, entity, context.pathFactory.create([]), {
322
- and: [
323
- {
324
- [entity.primary]: { eq: primary },
325
- },
326
- predicate,
327
- ],
328
- })
329
-
330
- const qb = DeleteBuilder.create()
331
- .from(entity.tableName)
332
- .where(condition => condition.in(entity.primaryColumn, inQbWithWhere))
333
- const result = await qb.execute(context.db)
334
- if (result === 0) {
335
- return new MutationNoResultError([])
336
- }
337
- return new MutationDeleteOk([], entity, primary)
338
- }
339
-
340
- private async applyJunctionEvent(
341
- context: {
342
- db: Client
343
- junctionTableManager: JunctionTableManager
344
- junctionTable: JunctionTable
345
- },
346
- event: ContentEvent,
347
- ): Promise<MutationResult> {
348
- const result: MutationResultList = await (() => {
349
- switch (event.type) {
350
- case EventType.create:
351
- return this.applyJunctionConnect(context, event)
352
- case EventType.delete:
353
- return this.applyJunctionDisconnect(context, event)
354
- case EventType.update:
355
- throw new Error()
356
- default:
357
- return assertNever(event)
358
- }
359
- })()
360
- assert.equal(result.length, 1)
361
- return result[0]
362
- }
363
-
364
- private async applyJunctionConnect(
365
- context: {
366
- db: Client
367
- junctionTableManager: JunctionTableManager
368
- junctionTable: JunctionTable
369
- },
370
- event: CreateEvent,
371
- ): Promise<MutationResultList> {
372
- assert.equal(event.rowId.length, 2)
373
- return await context.junctionTableManager.connectJunction(
374
- context.db,
375
- context.junctionTable.entity,
376
- context.junctionTable.relation,
377
- event.rowId[0],
378
- event.rowId[1],
379
- )
380
- }
381
-
382
- private async applyJunctionDisconnect(
383
- context: {
384
- db: Client
385
- junctionTableManager: JunctionTableManager
386
- junctionTable: JunctionTable
387
- },
388
- event: DeleteEvent,
389
- ): Promise<MutationResultList> {
390
- assert.equal(event.rowId.length, 2)
391
- return await context.junctionTableManager.disconnectJunction(
392
- context.db,
393
- context.junctionTable.entity,
394
- context.junctionTable.relation,
395
- event.rowId[0],
396
- event.rowId[1],
397
- )
398
- }
399
- }