@contember/engine-system-api 0.12.0-beta.2 → 1.0.0-alpha.3

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 (296) hide show
  1. package/dist/src/SystemContainer.d.ts +15 -14
  2. package/dist/src/SystemContainer.d.ts.map +1 -1
  3. package/dist/src/SystemContainer.js +7 -11
  4. package/dist/src/SystemContainer.js.map +1 -1
  5. package/dist/src/index.d.ts +1 -1
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +1 -2
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/model/ProjectInitializer.d.ts.map +1 -1
  10. package/dist/src/model/ProjectInitializer.js +7 -17
  11. package/dist/src/model/ProjectInitializer.js.map +1 -1
  12. package/dist/src/model/ProjectTruncateExecutor.js +3 -3
  13. package/dist/src/model/ProjectTruncateExecutor.js.map +1 -1
  14. package/dist/src/model/authorization/AuthorizationActions.d.ts +0 -20
  15. package/dist/src/model/authorization/AuthorizationActions.d.ts.map +1 -1
  16. package/dist/src/model/authorization/AuthorizationActions.js +0 -5
  17. package/dist/src/model/authorization/AuthorizationActions.js.map +1 -1
  18. package/dist/src/model/authorization/StagePermissionsFactory.d.ts.map +1 -1
  19. package/dist/src/model/authorization/StagePermissionsFactory.js +1 -21
  20. package/dist/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  21. package/dist/src/model/commands/migrations/ModifyMigrationCommand.js +1 -1
  22. package/dist/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  23. package/dist/src/model/commands/migrations/SaveMigrationCommand.js +1 -1
  24. package/dist/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  25. package/dist/src/model/commands/stages/CreateOrUpdateStageCommand.d.ts.map +1 -1
  26. package/dist/src/model/commands/stages/CreateOrUpdateStageCommand.js +2 -3
  27. package/dist/src/model/commands/stages/CreateOrUpdateStageCommand.js.map +1 -1
  28. package/dist/src/model/commands/stages/index.d.ts +0 -1
  29. package/dist/src/model/commands/stages/index.d.ts.map +1 -1
  30. package/dist/src/model/commands/stages/index.js +0 -1
  31. package/dist/src/model/commands/stages/index.js.map +1 -1
  32. package/dist/src/model/database/DatabaseContext.js +1 -1
  33. package/dist/src/model/database/DatabaseContext.js.map +1 -1
  34. package/dist/src/model/dependencies/content/index.d.ts +0 -1
  35. package/dist/src/model/dependencies/content/index.d.ts.map +1 -1
  36. package/dist/src/model/dependencies/content/index.js +0 -1
  37. package/dist/src/model/dependencies/content/index.js.map +1 -1
  38. package/dist/src/model/dependencies/index.d.ts +1 -0
  39. package/dist/src/model/dependencies/index.d.ts.map +1 -1
  40. package/dist/src/model/dependencies/index.js +1 -0
  41. package/dist/src/model/dependencies/index.js.map +1 -1
  42. package/dist/src/model/dependencies/tenant/IdentityFetcher.d.ts +2 -1
  43. package/dist/src/model/dependencies/tenant/IdentityFetcher.d.ts.map +1 -1
  44. package/dist/src/model/dependencies/tenant/index.d.ts +2 -0
  45. package/dist/src/model/dependencies/tenant/index.d.ts.map +1 -0
  46. package/dist/src/model/{events/dependency → dependencies/tenant}/index.js +1 -5
  47. package/dist/src/model/dependencies/tenant/index.js.map +1 -0
  48. package/dist/src/model/events/EventResponseBuilder.d.ts +11 -0
  49. package/dist/src/model/events/EventResponseBuilder.d.ts.map +1 -0
  50. package/dist/src/model/events/{HistoryEventResponseBuilder.js → EventResponseBuilder.js} +19 -18
  51. package/dist/src/model/events/EventResponseBuilder.js.map +1 -0
  52. package/dist/src/model/events/EventResponseHelper.d.ts +3 -3
  53. package/dist/src/model/events/EventResponseHelper.js +3 -3
  54. package/dist/src/model/events/EventResponseHelper.js.map +1 -1
  55. package/dist/src/model/events/identityUtils.js +1 -1
  56. package/dist/src/model/events/identityUtils.js.map +1 -1
  57. package/dist/src/model/events/index.d.ts +1 -5
  58. package/dist/src/model/events/index.d.ts.map +1 -1
  59. package/dist/src/model/events/index.js +1 -5
  60. package/dist/src/model/events/index.js.map +1 -1
  61. package/dist/src/model/helpers/modelHelpers.js +1 -1
  62. package/dist/src/model/helpers/modelHelpers.js.map +1 -1
  63. package/dist/src/model/migrations/MigrationExecutor.d.ts.map +1 -1
  64. package/dist/src/model/migrations/MigrationExecutor.js +2 -2
  65. package/dist/src/model/migrations/MigrationExecutor.js.map +1 -1
  66. package/dist/src/model/migrations/ProjectMigrator.d.ts.map +1 -1
  67. package/dist/src/model/migrations/ProjectMigrator.js +6 -12
  68. package/dist/src/model/migrations/ProjectMigrator.js.map +1 -1
  69. package/dist/src/model/migrations/SchemaVersionBuilder.js +2 -2
  70. package/dist/src/model/migrations/SchemaVersionBuilder.js.map +1 -1
  71. package/dist/src/model/queries/events/EventQueryHelpers.d.ts +4 -3
  72. package/dist/src/model/queries/events/EventQueryHelpers.d.ts.map +1 -1
  73. package/dist/src/model/queries/events/EventQueryHelpers.js +4 -5
  74. package/dist/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  75. package/dist/src/model/queries/events/EventsQuery.d.ts +12 -0
  76. package/dist/src/model/queries/events/EventsQuery.d.ts.map +1 -0
  77. package/dist/src/model/queries/events/EventsQuery.js +88 -0
  78. package/dist/src/model/queries/events/EventsQuery.js.map +1 -0
  79. package/dist/src/model/queries/events/OldValuesQuery.d.ts +7 -0
  80. package/dist/src/model/queries/events/OldValuesQuery.d.ts.map +1 -0
  81. package/dist/src/model/queries/events/OldValuesQuery.js +25 -0
  82. package/dist/src/model/queries/events/OldValuesQuery.js.map +1 -0
  83. package/dist/src/model/queries/events/index.d.ts +2 -0
  84. package/dist/src/model/queries/events/index.d.ts.map +1 -1
  85. package/dist/src/model/queries/events/index.js +2 -0
  86. package/dist/src/model/queries/events/index.js.map +1 -1
  87. package/dist/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js +2 -2
  88. package/dist/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  89. package/dist/src/model/queries/migrations/ExecutedMigrationsQuery.js +1 -1
  90. package/dist/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  91. package/dist/src/model/queries/stages/StageBySlugQuery.js +1 -1
  92. package/dist/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  93. package/dist/src/model/queries/stages/StageQueryFactory.d.ts.map +1 -1
  94. package/dist/src/model/queries/stages/StageQueryFactory.js +0 -1
  95. package/dist/src/model/queries/stages/StageQueryFactory.js.map +1 -1
  96. package/dist/src/model/stages/StageCreator.d.ts +1 -2
  97. package/dist/src/model/stages/StageCreator.d.ts.map +1 -1
  98. package/dist/src/model/stages/StageCreator.js +2 -10
  99. package/dist/src/model/stages/StageCreator.js.map +1 -1
  100. package/dist/src/model/stages/index.d.ts +0 -1
  101. package/dist/src/model/stages/index.d.ts.map +1 -1
  102. package/dist/src/model/stages/index.js +0 -1
  103. package/dist/src/model/stages/index.js.map +1 -1
  104. package/dist/src/resolvers/ResolverContext.d.ts +4 -3
  105. package/dist/src/resolvers/ResolverContext.d.ts.map +1 -1
  106. package/dist/src/resolvers/ResolverContext.js +2 -2
  107. package/dist/src/resolvers/ResolverContext.js.map +1 -1
  108. package/dist/src/resolvers/ResolverFactory.d.ts +7 -11
  109. package/dist/src/resolvers/ResolverFactory.d.ts.map +1 -1
  110. package/dist/src/resolvers/ResolverFactory.js +21 -14
  111. package/dist/src/resolvers/ResolverFactory.js.map +1 -1
  112. package/dist/src/resolvers/mutation/MigrateMutationResolver.d.ts.map +1 -1
  113. package/dist/src/resolvers/mutation/MigrateMutationResolver.js +3 -2
  114. package/dist/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  115. package/dist/src/resolvers/mutation/index.d.ts +1 -0
  116. package/dist/src/resolvers/mutation/index.d.ts.map +1 -1
  117. package/dist/src/resolvers/mutation/index.js +1 -0
  118. package/dist/src/resolvers/mutation/index.js.map +1 -1
  119. package/dist/src/resolvers/query/EventsQueryResolver.d.ts +11 -0
  120. package/dist/src/resolvers/query/EventsQueryResolver.d.ts.map +1 -0
  121. package/dist/src/resolvers/query/EventsQueryResolver.js +26 -0
  122. package/dist/src/resolvers/query/EventsQueryResolver.js.map +1 -0
  123. package/dist/src/resolvers/query/index.d.ts +1 -0
  124. package/dist/src/resolvers/query/index.d.ts.map +1 -1
  125. package/dist/src/resolvers/query/index.js +1 -0
  126. package/dist/src/resolvers/query/index.js.map +1 -1
  127. package/dist/src/resolvers/types/EventOldValuesResolver.d.ts +6 -0
  128. package/dist/src/resolvers/types/EventOldValuesResolver.d.ts.map +1 -0
  129. package/dist/src/resolvers/types/EventOldValuesResolver.js +11 -0
  130. package/dist/src/resolvers/types/EventOldValuesResolver.js.map +1 -0
  131. package/dist/src/resolvers/types/OldValuesHelpers.d.ts +3 -0
  132. package/dist/src/resolvers/types/OldValuesHelpers.d.ts.map +1 -0
  133. package/dist/src/resolvers/types/OldValuesHelpers.js +10 -0
  134. package/dist/src/resolvers/types/OldValuesHelpers.js.map +1 -0
  135. package/dist/src/resolvers/types/index.d.ts +2 -0
  136. package/dist/src/resolvers/types/index.d.ts.map +1 -0
  137. package/dist/src/resolvers/types/index.js +14 -0
  138. package/dist/src/resolvers/types/index.js.map +1 -0
  139. package/dist/src/schema/dev.graphql.js +1 -1
  140. package/dist/src/schema/dev.graphql.js.map +1 -1
  141. package/dist/src/schema/system.graphql.d.ts.map +1 -1
  142. package/dist/src/schema/system.graphql.js +47 -43
  143. package/dist/src/schema/system.graphql.js.map +1 -1
  144. package/dist/src/schema/types.d.ts +146 -170
  145. package/dist/src/schema/types.d.ts.map +1 -1
  146. package/dist/src/schema/types.js +14 -12
  147. package/dist/src/schema/types.js.map +1 -1
  148. package/dist/src/tsconfig.tsbuildinfo +1 -1
  149. package/dist/src/types.d.ts +0 -1
  150. package/dist/src/types.d.ts.map +1 -1
  151. package/dist/src/utils/batchQuery.js +1 -1
  152. package/dist/src/utils/batchQuery.js.map +1 -1
  153. package/dist/tests/cases/integration/systemApi/projectInitializer.test.js +1 -1
  154. package/dist/tests/cases/integration/systemApi/projectInitializer.test.js.map +1 -1
  155. package/dist/tests/src/asserts.js +1 -1
  156. package/dist/tests/src/asserts.js.map +1 -1
  157. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  158. package/migrations/2020-05-06-150000-composed-primary.js +4 -4
  159. package/migrations/2020-05-06-150000-composed-primary.test.js +3 -3
  160. package/migrations/2020-06-01-103000-event-trigger-perf.js +1 -1
  161. package/migrations/2020-06-01-103000-event-trigger-perf.test.js +3 -3
  162. package/migrations/2021-05-07-155800-event-log-rework.js +1 -1
  163. package/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -1
  164. package/migrations/2021-12-21-155500-events-up.sql +6 -0
  165. package/migrations/index.js +1 -1
  166. package/migrations/tsconfig.tsbuildinfo +1 -1
  167. package/package.json +14 -14
  168. package/src/SystemContainer.ts +18 -26
  169. package/src/index.ts +0 -1
  170. package/src/model/ProjectInitializer.ts +5 -16
  171. package/src/model/authorization/AuthorizationActions.ts +0 -8
  172. package/src/model/authorization/StagePermissionsFactory.ts +0 -21
  173. package/src/model/commands/stages/CreateOrUpdateStageCommand.ts +1 -2
  174. package/src/model/commands/stages/index.ts +0 -1
  175. package/src/model/dependencies/content/index.ts +0 -1
  176. package/src/model/dependencies/index.ts +1 -0
  177. package/src/model/dependencies/tenant/IdentityFetcher.ts +3 -1
  178. package/src/model/dependencies/tenant/index.ts +1 -0
  179. package/src/model/events/{HistoryEventResponseBuilder.ts → EventResponseBuilder.ts} +13 -17
  180. package/src/model/events/EventResponseHelper.ts +3 -3
  181. package/src/model/events/index.ts +1 -5
  182. package/src/model/migrations/MigrationExecutor.ts +0 -2
  183. package/src/model/migrations/ProjectMigrator.ts +5 -11
  184. package/src/model/migrations/SchemaVersionBuilder.ts +1 -1
  185. package/src/model/queries/events/EventQueryHelpers.ts +15 -12
  186. package/src/model/queries/events/EventsQuery.ts +105 -0
  187. package/src/model/queries/events/OldValuesQuery.ts +23 -0
  188. package/src/model/queries/events/index.ts +2 -0
  189. package/src/model/queries/stages/StageQueryFactory.ts +0 -1
  190. package/src/model/stages/StageCreator.ts +1 -12
  191. package/src/model/stages/index.ts +0 -1
  192. package/src/resolvers/ResolverContext.ts +5 -4
  193. package/src/resolvers/ResolverFactory.ts +27 -37
  194. package/src/resolvers/mutation/MigrateMutationResolver.ts +4 -3
  195. package/src/resolvers/mutation/index.ts +1 -0
  196. package/src/resolvers/query/EventsQueryResolver.ts +42 -0
  197. package/src/resolvers/query/index.ts +1 -0
  198. package/src/resolvers/types/EventOldValuesResolver.ts +13 -0
  199. package/src/resolvers/types/OldValuesHelpers.ts +11 -0
  200. package/src/resolvers/types/index.ts +1 -0
  201. package/src/schema/system.graphql.ts +46 -42
  202. package/src/schema/types.ts +148 -175
  203. package/src/types.ts +0 -1
  204. package/tests/src/asserts.ts +1 -1
  205. package/dist/src/model/commands/stages/UpdateStageEventCommand.d.ts +0 -8
  206. package/dist/src/model/commands/stages/UpdateStageEventCommand.d.ts.map +0 -1
  207. package/dist/src/model/commands/stages/UpdateStageEventCommand.js +0 -21
  208. package/dist/src/model/commands/stages/UpdateStageEventCommand.js.map +0 -1
  209. package/dist/src/model/dependencies/content/ContentEventsApplier.d.ts +0 -23
  210. package/dist/src/model/dependencies/content/ContentEventsApplier.d.ts.map +0 -1
  211. package/dist/src/model/dependencies/content/ContentEventsApplier.js +0 -3
  212. package/dist/src/model/dependencies/content/ContentEventsApplier.js.map +0 -1
  213. package/dist/src/model/events/DependencyBuilder.d.ts +0 -8
  214. package/dist/src/model/events/DependencyBuilder.d.ts.map +0 -1
  215. package/dist/src/model/events/DependencyBuilder.js +0 -3
  216. package/dist/src/model/events/DependencyBuilder.js.map +0 -1
  217. package/dist/src/model/events/DiffBuilder.d.ts +0 -48
  218. package/dist/src/model/events/DiffBuilder.d.ts.map +0 -1
  219. package/dist/src/model/events/DiffBuilder.js +0 -95
  220. package/dist/src/model/events/DiffBuilder.js.map +0 -1
  221. package/dist/src/model/events/EventFilterValidator.d.ts +0 -12
  222. package/dist/src/model/events/EventFilterValidator.d.ts.map +0 -1
  223. package/dist/src/model/events/EventFilterValidator.js +0 -50
  224. package/dist/src/model/events/EventFilterValidator.js.map +0 -1
  225. package/dist/src/model/events/HistoryEventResponseBuilder.d.ts +0 -10
  226. package/dist/src/model/events/HistoryEventResponseBuilder.d.ts.map +0 -1
  227. package/dist/src/model/events/HistoryEventResponseBuilder.js.map +0 -1
  228. package/dist/src/model/events/TableReferencingResolver.d.ts +0 -8
  229. package/dist/src/model/events/TableReferencingResolver.d.ts.map +0 -1
  230. package/dist/src/model/events/TableReferencingResolver.js +0 -31
  231. package/dist/src/model/events/TableReferencingResolver.js.map +0 -1
  232. package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.d.ts +0 -19
  233. package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.d.ts.map +0 -1
  234. package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.js +0 -79
  235. package/dist/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.js.map +0 -1
  236. package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.d.ts +0 -17
  237. package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.d.ts.map +0 -1
  238. package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.js +0 -76
  239. package/dist/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.js.map +0 -1
  240. package/dist/src/model/events/dependency/DependencyBuilderList.d.ts +0 -9
  241. package/dist/src/model/events/dependency/DependencyBuilderList.d.ts.map +0 -1
  242. package/dist/src/model/events/dependency/DependencyBuilderList.js +0 -20
  243. package/dist/src/model/events/dependency/DependencyBuilderList.js.map +0 -1
  244. package/dist/src/model/events/dependency/SameRowDependencyBuilder.d.ts +0 -16
  245. package/dist/src/model/events/dependency/SameRowDependencyBuilder.d.ts.map +0 -1
  246. package/dist/src/model/events/dependency/SameRowDependencyBuilder.js +0 -38
  247. package/dist/src/model/events/dependency/SameRowDependencyBuilder.js.map +0 -1
  248. package/dist/src/model/events/dependency/TransactionDependencyBuilder.d.ts +0 -15
  249. package/dist/src/model/events/dependency/TransactionDependencyBuilder.d.ts.map +0 -1
  250. package/dist/src/model/events/dependency/TransactionDependencyBuilder.js +0 -30
  251. package/dist/src/model/events/dependency/TransactionDependencyBuilder.js.map +0 -1
  252. package/dist/src/model/events/dependency/index.d.ts +0 -6
  253. package/dist/src/model/events/dependency/index.d.ts.map +0 -1
  254. package/dist/src/model/events/dependency/index.js.map +0 -1
  255. package/dist/src/model/stages/StageTree.d.ts +0 -14
  256. package/dist/src/model/stages/StageTree.d.ts.map +0 -1
  257. package/dist/src/model/stages/StageTree.js +0 -38
  258. package/dist/src/model/stages/StageTree.js.map +0 -1
  259. package/dist/src/resolvers/helpers/StageFetchHelper.d.ts +0 -22
  260. package/dist/src/resolvers/helpers/StageFetchHelper.d.ts.map +0 -1
  261. package/dist/src/resolvers/helpers/StageFetchHelper.js +0 -45
  262. package/dist/src/resolvers/helpers/StageFetchHelper.js.map +0 -1
  263. package/dist/tests/cases/unit/events/createdRowReference.test.d.ts +0 -2
  264. package/dist/tests/cases/unit/events/createdRowReference.test.d.ts.map +0 -1
  265. package/dist/tests/cases/unit/events/createdRowReference.test.js +0 -138
  266. package/dist/tests/cases/unit/events/createdRowReference.test.js.map +0 -1
  267. package/dist/tests/cases/unit/events/deletedRowReference.test.d.ts +0 -2
  268. package/dist/tests/cases/unit/events/deletedRowReference.test.d.ts.map +0 -1
  269. package/dist/tests/cases/unit/events/deletedRowReference.test.js +0 -103
  270. package/dist/tests/cases/unit/events/deletedRowReference.test.js.map +0 -1
  271. package/dist/tests/cases/unit/events/sameRowDependency.test.d.ts +0 -2
  272. package/dist/tests/cases/unit/events/sameRowDependency.test.d.ts.map +0 -1
  273. package/dist/tests/cases/unit/events/sameRowDependency.test.js +0 -63
  274. package/dist/tests/cases/unit/events/sameRowDependency.test.js.map +0 -1
  275. package/dist/tests/cases/unit/events/transactionDependency.test.d.ts +0 -2
  276. package/dist/tests/cases/unit/events/transactionDependency.test.d.ts.map +0 -1
  277. package/dist/tests/cases/unit/events/transactionDependency.test.js +0 -62
  278. package/dist/tests/cases/unit/events/transactionDependency.test.js.map +0 -1
  279. package/src/model/commands/stages/UpdateStageEventCommand.ts +0 -16
  280. package/src/model/dependencies/content/ContentEventsApplier.ts +0 -27
  281. package/src/model/events/DependencyBuilder.ts +0 -9
  282. package/src/model/events/DiffBuilder.ts +0 -150
  283. package/src/model/events/EventFilterValidator.ts +0 -52
  284. package/src/model/events/TableReferencingResolver.ts +0 -45
  285. package/src/model/events/dependency/CreatedRowReferenceDependencyBuilder.ts +0 -80
  286. package/src/model/events/dependency/DeletedRowReferenceDependencyBuilder.ts +0 -75
  287. package/src/model/events/dependency/DependencyBuilderList.ts +0 -18
  288. package/src/model/events/dependency/SameRowDependencyBuilder.ts +0 -36
  289. package/src/model/events/dependency/TransactionDependencyBuilder.ts +0 -31
  290. package/src/model/events/dependency/index.ts +0 -5
  291. package/src/model/stages/StageTree.ts +0 -36
  292. package/src/resolvers/helpers/StageFetchHelper.ts +0 -48
  293. package/tests/cases/unit/events/createdRowReference.test.ts +0 -131
  294. package/tests/cases/unit/events/deletedRowReference.test.ts +0 -95
  295. package/tests/cases/unit/events/sameRowDependency.test.ts +0 -48
  296. package/tests/cases/unit/events/transactionDependency.test.ts +0 -47
@@ -1,48 +0,0 @@
1
- import { DatabaseContext } from '../../model/database'
2
- import { ProjectConfig } from '../../types'
3
- import { StageBySlugQuery } from '../../model/queries'
4
- import { StageWithId } from '../../model/dtos'
5
- import { ShouldNotHappenException } from '../../utils'
6
-
7
- export const fetchStages = async (
8
- stage: string,
9
- db: DatabaseContext,
10
- project: ProjectConfig,
11
- ): Promise<FetchStageResult> => {
12
- const headStageConfig = project.stages.find(it => it.slug === stage)
13
- if (!headStageConfig) {
14
- return new FetchStageErrorResponse(FetchStageErrors.headNotFound, `Stage ${stage} not found`)
15
- }
16
- if (!headStageConfig.base) {
17
- return new FetchStageErrorResponse(FetchStageErrors.missingBase, `Stage ${stage} is a root stage`)
18
- }
19
- const [baseStage, headStage] = await Promise.all([
20
- db.queryHandler.fetch(new StageBySlugQuery(headStageConfig.base)),
21
- db.queryHandler.fetch(new StageBySlugQuery(headStageConfig.slug)),
22
- ])
23
-
24
- if (!baseStage || !headStage) {
25
- throw new ShouldNotHappenException()
26
- }
27
-
28
- return new FetchStageOkResponse(headStage, baseStage)
29
- }
30
-
31
- export type FetchStageResult = FetchStageErrorResponse | FetchStageOkResponse
32
-
33
- export enum FetchStageErrors {
34
- headNotFound = 'headNotFound',
35
- missingBase = 'missingBase',
36
- }
37
-
38
- export class FetchStageErrorResponse {
39
- public readonly ok = false
40
-
41
- constructor(public readonly error: FetchStageErrors, public readonly message: string) {}
42
- }
43
-
44
- export class FetchStageOkResponse {
45
- public readonly ok = true
46
-
47
- constructor(public readonly head: StageWithId, public readonly base: StageWithId) {}
48
- }
@@ -1,131 +0,0 @@
1
- import { suite } from 'uvu'
2
- import { CreatedRowReferenceDependencyBuilder } from '../../../../src/model/events/dependency'
3
- import { SchemaBuilder } from '@contember/schema-definition'
4
- import { emptySchema } from '@contember/schema-utils'
5
- import { CreateEvent, UpdateEvent } from '@contember/engine-common'
6
- import { testUuid } from '@contember/engine-api-tester'
7
- import { unnamedIdentity } from '../../../../src'
8
- import * as assert from '../../../src/asserts'
9
-
10
- const test = suite('Created row reference dependency builder')
11
-
12
- const now = new Date('2020-10-28 10:00')
13
-
14
- test('basic reference', async () => {
15
- const model = new SchemaBuilder()
16
- .entity('Post', e => e.column('title').manyHasOne('author', r => r.target('Author')))
17
- .entity('Author', e => e.column('name'))
18
- .buildSchema()
19
- const dependencyBuilder = new CreatedRowReferenceDependencyBuilder()
20
- const authorEventId = testUuid(10)
21
- const authorEntityId = testUuid(11)
22
- const trxId = testUuid(500)
23
- const postEventId = testUuid(20)
24
- const events = [
25
- new CreateEvent(authorEventId, now, unnamedIdentity, trxId, [authorEntityId], 'author', {
26
- name: 'John doe',
27
- }),
28
- new CreateEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post', {
29
- title: 'foo',
30
- author_id: authorEntityId,
31
- }),
32
- ]
33
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
34
- assert.is(deps.size, 1)
35
- assert.ok(deps.has(postEventId))
36
- assert.not.ok(deps.has(authorEventId))
37
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
38
- const postDeps = deps.get(postEventId)!
39
- assert.is(postDeps.size, 1)
40
- assert.ok(postDeps.has(authorEventId))
41
- })
42
-
43
- test('uuid collision in different table', async () => {
44
- const model = new SchemaBuilder()
45
- .entity('Post', e => e.column('title').manyHasOne('author', r => r.target('Author')))
46
- .entity('Author', e => e.column('name'))
47
- .buildSchema()
48
- const dependencyBuilder = new CreatedRowReferenceDependencyBuilder()
49
- const authorEventId = testUuid(10)
50
- const authorEntityId = testUuid(11)
51
- const trxId = testUuid(500)
52
- const postEventId = testUuid(20)
53
- const events = [
54
- new CreateEvent(authorEventId, now, unnamedIdentity, trxId, [authorEntityId], 'authorXXX', {}),
55
- new CreateEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post', {
56
- title: 'foo',
57
- author_id: authorEntityId,
58
- }),
59
- ]
60
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
61
- assert.is(deps.size, 0)
62
- })
63
-
64
- test('update of created row', async () => {
65
- const model = new SchemaBuilder()
66
- .entity('Post', e => e.column('title').manyHasOne('author', r => r.target('Author')))
67
- .entity('Author', e => e.column('name'))
68
- .buildSchema()
69
- const dependencyBuilder = new CreatedRowReferenceDependencyBuilder()
70
- const authorEventId = testUuid(10)
71
- const authorEventId2 = testUuid(12)
72
- const authorEntityId = testUuid(11)
73
- const trxId = testUuid(500)
74
- const postEventId = testUuid(20)
75
- const events = [
76
- new CreateEvent(authorEventId, now, unnamedIdentity, trxId, [authorEntityId], 'author', {
77
- name: 'John doe',
78
- }),
79
- new UpdateEvent(authorEventId2, now, unnamedIdentity, trxId, [authorEntityId], 'author', {
80
- name: 'Jack black',
81
- }),
82
- new CreateEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post', {
83
- title: 'foo',
84
- author_id: authorEntityId,
85
- }),
86
- ]
87
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
88
- assert.is(deps.size, 1)
89
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
90
- const postDeps = deps.get(postEventId)!
91
- assert.is(postDeps.size, 1)
92
- assert.ok(postDeps.has(authorEventId2))
93
- })
94
-
95
- test('junction table', async () => {
96
- const model = new SchemaBuilder()
97
- .entity('Post', e => e.column('title').manyHasMany('categories', r => r.target('Category')))
98
- .entity('Category', e => e.column('name'))
99
- .buildSchema()
100
- const dependencyBuilder = new CreatedRowReferenceDependencyBuilder()
101
- const categoryEventId = testUuid(10)
102
- const trxId = testUuid(500)
103
- const postEventId = testUuid(20)
104
- const junctionEventId = testUuid(30)
105
- const events = [
106
- new CreateEvent(categoryEventId, now, unnamedIdentity, trxId, [categoryEventId], 'category', {
107
- name: 'lorem',
108
- }),
109
- new CreateEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post', {
110
- title: 'foo',
111
- }),
112
- new CreateEvent(
113
- junctionEventId,
114
- now,
115
- unnamedIdentity,
116
- trxId,
117
- [postEventId, categoryEventId],
118
- 'post_categories',
119
- {},
120
- ),
121
- ]
122
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
123
- assert.is(deps.size, 1)
124
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
125
- const junctionDeps = deps.get(junctionEventId)!
126
- assert.is(junctionDeps.size, 2)
127
- assert.ok(junctionDeps.has(categoryEventId))
128
- assert.ok(junctionDeps.has(postEventId))
129
- })
130
-
131
- test.run()
@@ -1,95 +0,0 @@
1
- import { suite } from 'uvu'
2
- import { DeletedRowReferenceDependencyBuilder } from '../../../../src/model/events/dependency'
3
- import { SchemaBuilder } from '@contember/schema-definition'
4
- import { emptySchema } from '@contember/schema-utils'
5
- import { CreateEvent, DeleteEvent, UpdateEvent } from '@contember/engine-common'
6
- import { testUuid } from '@contember/engine-api-tester'
7
- import { unnamedIdentity } from '../../../../src'
8
- import * as assert from '../../../src/asserts'
9
-
10
- const test = suite('Deleted row reference dependency builder')
11
-
12
- const now = new Date('2020-10-28 10:00')
13
-
14
- test('basic reference', async () => {
15
- const model = new SchemaBuilder()
16
- .entity('Post', e => e.column('title').manyHasOne('author', r => r.target('Author')))
17
- .entity('Author', e => e.column('name'))
18
- .buildSchema()
19
- const dependencyBuilder = new DeletedRowReferenceDependencyBuilder()
20
- const authorEventId = testUuid(10)
21
- const authorEntityId = testUuid(11)
22
- const trxId = testUuid(500)
23
- const postEventId = testUuid(20)
24
- const events = [
25
- new UpdateEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post', {
26
- author_id: authorEntityId,
27
- }),
28
- new DeleteEvent(authorEventId, now, unnamedIdentity, trxId, [authorEntityId], 'author'),
29
- ]
30
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
31
- assert.is(deps.size, 1)
32
- assert.ok(deps.has(authorEventId))
33
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
34
- const authorDeps = deps.get(authorEventId)!
35
- assert.is(authorDeps.size, 1)
36
- assert.ok(authorDeps.has(postEventId))
37
- })
38
-
39
- test('uuid collision in different table', async () => {
40
- const model = new SchemaBuilder()
41
- .entity('Post', e => e.column('title').manyHasOne('author', r => r.target('Author')))
42
- .entity('Author', e => e.column('name'))
43
- .buildSchema()
44
- const dependencyBuilder = new DeletedRowReferenceDependencyBuilder()
45
- const authorEventId = testUuid(10)
46
- const authorEntityId = testUuid(11)
47
- const trxId = testUuid(500)
48
- const postEventId = testUuid(20)
49
- const events = [
50
- new UpdateEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post', {
51
- author_id: authorEntityId,
52
- }),
53
- new DeleteEvent(authorEventId, now, unnamedIdentity, trxId, [authorEntityId], 'authorX'),
54
- ]
55
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
56
- assert.is(deps.size, 0)
57
- })
58
-
59
- test('junction table', async () => {
60
- const model = new SchemaBuilder()
61
- .entity('Post', e => e.column('title').manyHasMany('categories', r => r.target('Category')))
62
- .entity('Category', e => e.column('name'))
63
- .buildSchema()
64
- const dependencyBuilder = new DeletedRowReferenceDependencyBuilder()
65
- const categoryEventId = testUuid(10)
66
- const trxId = testUuid(500)
67
- const postEventId = testUuid(20)
68
- const junctionEventId = testUuid(30)
69
- const events = [
70
- new CreateEvent(
71
- junctionEventId,
72
- now,
73
- unnamedIdentity,
74
- trxId,
75
- [postEventId, categoryEventId],
76
- 'post_categories',
77
- {},
78
- ),
79
- new DeleteEvent(categoryEventId, now, unnamedIdentity, trxId, [categoryEventId], 'category'),
80
- new DeleteEvent(postEventId, now, unnamedIdentity, trxId, [postEventId], 'post'),
81
- ]
82
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
83
- assert.is(deps.size, 2)
84
- assert.ok(deps.has(categoryEventId))
85
- assert.ok(deps.has(postEventId))
86
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
87
- const categoryEventDeps = deps.get(categoryEventId)!
88
- assert.is(categoryEventDeps.size, 1)
89
- assert.ok(categoryEventDeps.has(junctionEventId))
90
- const postEventDeps = deps.get(postEventId)!
91
- assert.is(postEventDeps.size, 1)
92
- assert.ok(postEventDeps.has(junctionEventId))
93
- })
94
-
95
- test.run()
@@ -1,48 +0,0 @@
1
- import { suite } from 'uvu'
2
- import { SameRowDependencyBuilder, TransactionDependencyBuilder } from '../../../../src/model/events/dependency'
3
- import { SchemaBuilder } from '@contember/schema-definition'
4
- import { emptySchema } from '@contember/schema-utils'
5
- import { UpdateEvent } from '@contember/engine-common'
6
- import { testUuid } from '@contember/engine-api-tester'
7
- import { unnamedIdentity } from '../../../../src'
8
- import * as assert from '../../../src/asserts'
9
-
10
- const test = suite('Same row dependency builder')
11
-
12
- const now = new Date('2020-10-28 10:00')
13
-
14
- test('basic deps', async () => {
15
- const model = new SchemaBuilder().entity('Author', e => e.column('name')).buildSchema()
16
-
17
- const dependencyBuilder = new SameRowDependencyBuilder()
18
- const event1 = testUuid(30)
19
- const event2 = testUuid(31)
20
- const event3 = testUuid(32)
21
- const authorEntityId = testUuid(10)
22
-
23
- const trxId1 = testUuid(500)
24
- const events = [
25
- new UpdateEvent(event1, now, unnamedIdentity, trxId1, [authorEntityId], 'author', {}),
26
- new UpdateEvent(event2, now, unnamedIdentity, trxId1, [authorEntityId], 'author', {}),
27
- new UpdateEvent(event3, now, unnamedIdentity, trxId1, [authorEntityId], 'author', {}),
28
- ]
29
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
30
- assert.is(deps.size, 3)
31
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
32
- const event1deps = deps.get(event1)!
33
- // it also includes self-dep
34
- assert.is(event1deps.size, 3)
35
- assert.ok(event1deps.has(event2))
36
- assert.ok(event1deps.has(event3))
37
- const event2deps = deps.get(event2)!
38
- assert.is(event2deps.size, 3)
39
- assert.ok(event2deps.has(event1))
40
- assert.ok(event2deps.has(event3))
41
-
42
- const event3deps = deps.get(event3)!
43
- assert.is(event3deps.size, 3)
44
- assert.ok(event3deps.has(event1))
45
- assert.ok(event3deps.has(event2))
46
- })
47
-
48
- test.run()
@@ -1,47 +0,0 @@
1
- import { suite } from 'uvu'
2
- import { TransactionDependencyBuilder } from '../../../../src/model/events/dependency'
3
- import { SchemaBuilder } from '@contember/schema-definition'
4
- import { emptySchema } from '@contember/schema-utils'
5
- import { UpdateEvent } from '@contember/engine-common'
6
- import { testUuid } from '@contember/engine-api-tester'
7
- import { unnamedIdentity } from '../../../../src'
8
- import * as assert from '../../../src/asserts'
9
-
10
- const test = suite('Same transaction dependency builder')
11
-
12
- const now = new Date('2020-10-28 10:00')
13
-
14
- test('basic deps', async () => {
15
- const model = new SchemaBuilder().entity('Author', e => e.column('name')).buildSchema()
16
-
17
- const dependencyBuilder = new TransactionDependencyBuilder()
18
- const event1 = testUuid(30)
19
- const event2 = testUuid(31)
20
- const event3 = testUuid(32)
21
- const authorEntityId = testUuid(10)
22
-
23
- const trxId1 = testUuid(500)
24
- const trxId2 = testUuid(501)
25
- const events = [
26
- new UpdateEvent(event1, now, unnamedIdentity, trxId1, [authorEntityId], 'author', {}),
27
- new UpdateEvent(event2, now, unnamedIdentity, trxId1, [authorEntityId], 'author', {}),
28
- new UpdateEvent(event3, now, unnamedIdentity, trxId2, [authorEntityId], 'author', {}),
29
- ]
30
- const deps = await dependencyBuilder.build({ ...emptySchema, model }, events)
31
- assert.is(deps.size, 3)
32
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
33
- const event1deps = deps.get(event1)!
34
- // it also includes self-dep
35
- assert.is(event1deps.size, 2)
36
- assert.ok(event1deps.has(event2))
37
- const event2deps = deps.get(event2)!
38
- assert.is(event2deps.size, 2)
39
- assert.ok(event2deps.has(event1))
40
-
41
- const event3deps = deps.get(event3)!
42
- assert.is(event3deps.size, 1)
43
- assert.not.ok(event3deps.has(event1))
44
- assert.not.ok(event3deps.has(event2))
45
- })
46
-
47
- test.run()