@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-system-api",
3
- "version": "0.12.0-beta.2",
3
+ "version": "1.0.0-alpha.3",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -9,28 +9,28 @@
9
9
  "test": "uvu dist/tests/cases/ \\.js$ && uvu migrations \\.test\\.js"
10
10
  },
11
11
  "dependencies": {
12
- "@contember/authorization": "^0.12.0-beta.2",
13
- "@contember/database": "^0.12.0-beta.2",
14
- "@contember/database-migrations": "^0.12.0-beta.2",
15
- "@contember/dic": "^0.12.0-beta.2",
16
- "@contember/engine-common": "^0.12.0-beta.2",
17
- "@contember/graphql-utils": "^0.12.0-beta.2",
18
- "@contember/queryable": "^0.12.0-beta.2",
19
- "@contember/schema": "^0.12.0-beta.2",
20
- "@contember/schema-migrations": "^0.12.0-beta.2",
21
- "@contember/schema-utils": "^0.12.0-beta.2",
12
+ "@contember/authorization": "^1.0.0-alpha.3",
13
+ "@contember/database": "^1.0.0-alpha.3",
14
+ "@contember/database-migrations": "^1.0.0-alpha.3",
15
+ "@contember/dic": "^1.0.0-alpha.3",
16
+ "@contember/engine-common": "^1.0.0-alpha.3",
17
+ "@contember/graphql-utils": "^1.0.0-alpha.3",
18
+ "@contember/queryable": "^1.0.0-alpha.3",
19
+ "@contember/schema": "^1.0.0-alpha.3",
20
+ "@contember/schema-migrations": "^1.0.0-alpha.3",
21
+ "@contember/schema-utils": "^1.0.0-alpha.3",
22
22
  "@graphql-tools/utils": "^7.10.0",
23
23
  "apollo-server-errors": "^2.4.0",
24
24
  "graphql-tag": "^2.12.5"
25
25
  },
26
26
  "devDependencies": {
27
- "@contember/engine-api-tester": "^0.12.0-beta.2",
28
- "@contember/schema-definition": "^0.12.0-beta.2",
27
+ "@contember/engine-api-tester": "^1.0.0-alpha.3",
28
+ "@contember/schema-definition": "^1.0.0-alpha.3",
29
29
  "@graphql-codegen/cli": "^1.15.2",
30
30
  "@graphql-codegen/typescript": "^1.15.2",
31
31
  "@graphql-codegen/typescript-operations": "^1.15.2",
32
32
  "@graphql-codegen/typescript-resolvers": "^1.15.2",
33
- "@types/node": "^15.12.5",
33
+ "@types/node": "^17.0.5",
34
34
  "graphql": "^15.4.0",
35
35
  "pg": "^8.5.0",
36
36
  "uvu": "^0.5.1"
@@ -9,37 +9,33 @@ import {
9
9
  import { MigrationsRunner } from '@contember/database-migrations'
10
10
  import { DatabaseCredentials } from '@contember/database'
11
11
  import {
12
- ContentEventsApplier,
13
- CreatedRowReferenceDependencyBuilder,
14
- DeletedRowReferenceDependencyBuilder,
15
- DependencyBuilderList,
16
- DiffBuilder,
17
12
  EntitiesSelector,
13
+ EventResponseBuilder,
18
14
  ExecutedMigrationsResolver,
19
- HistoryEventResponseBuilder,
15
+ IdentityFetcher,
20
16
  MigrationAlterer,
21
17
  MigrationExecutor,
22
18
  PermissionsFactory,
23
19
  ProjectInitializer,
24
20
  ProjectMigrator,
25
21
  ProjectTruncateExecutor,
26
- SameRowDependencyBuilder,
27
22
  SchemaVersionBuilder,
28
23
  StageCreator,
29
- TransactionDependencyBuilder,
30
24
  } from './model'
31
25
  import { UuidProvider } from './utils'
32
26
  import {
27
+ EventsQueryResolver,
33
28
  ExecutedMigrationsQueryResolver,
34
29
  MigrateMutationResolver,
30
+ MigrationAlterMutationResolver,
35
31
  ResolverContextFactory,
36
32
  ResolverFactory,
37
33
  StagesQueryResolver,
38
34
  TruncateMutationResolver,
39
35
  } from './resolvers'
40
36
  import { ClientBase } from 'pg'
41
- import { IdentityFetcher } from './model/dependencies/tenant/IdentityFetcher'
42
- import { MigrationAlterMutationResolver } from './resolvers/mutation/MigrationAlterMutationResolver'
37
+ import { MigrationArgs } from './migrations'
38
+ import { EventOldValuesResolver } from './resolvers/types'
43
39
 
44
40
  export interface SystemContainer {
45
41
  systemResolversFactory: ResolverFactory
@@ -50,15 +46,14 @@ export interface SystemContainer {
50
46
  systemDbMigrationsRunnerFactory: SystemDbMigrationsRunnerFactory
51
47
  }
52
48
 
53
- export type SystemDbMigrationsRunnerFactory = (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner
49
+ export type SystemDbMigrationsRunnerFactory = (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner<MigrationArgs>
54
50
 
55
51
  type Args = {
56
52
  providers: UuidProvider
57
53
  modificationHandlerFactory: ModificationHandlerFactory
58
54
  entitiesSelector: EntitiesSelector
59
- eventApplier: ContentEventsApplier
55
+ systemDbMigrationsRunnerFactory: (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner<MigrationArgs>
60
56
  identityFetcher: IdentityFetcher
61
- systemDbMigrationsRunnerFactory: (db: DatabaseCredentials, dbClient: ClientBase) => MigrationsRunner
62
57
  }
63
58
 
64
59
  export class SystemContainerFactory {
@@ -80,6 +75,8 @@ export class SystemContainerFactory {
80
75
  container.systemDbMigrationsRunnerFactory)
81
76
  .addService('modificationHandlerFactory', () =>
82
77
  container.modificationHandlerFactory)
78
+ .addService('identityFetcher', () =>
79
+ container.identityFetcher)
83
80
  .addService('schemaMigrator', ({ modificationHandlerFactory }) =>
84
81
  new SchemaMigrator(modificationHandlerFactory))
85
82
  .addService('executedMigrationsResolver', ({}) =>
@@ -98,37 +95,32 @@ export class SystemContainerFactory {
98
95
  new MigrationExecutor(modificationHandlerFactory))
99
96
  .addService('migrationDescriber', ({ modificationHandlerFactory }) =>
100
97
  new MigrationDescriber(modificationHandlerFactory))
101
- .addService('dependencyBuilder', ({}) =>
102
- new DependencyBuilderList([
103
- new SameRowDependencyBuilder(),
104
- new TransactionDependencyBuilder(),
105
- new DeletedRowReferenceDependencyBuilder(),
106
- new CreatedRowReferenceDependencyBuilder(),
107
- ]))
108
98
  .addService('projectMigrator', ({ migrationDescriber, schemaVersionBuilder, executedMigrationsResolver }) =>
109
99
  new ProjectMigrator(migrationDescriber, schemaVersionBuilder, executedMigrationsResolver))
110
100
  .addService('stageCreator', () =>
111
101
  new StageCreator())
112
- .addService('diffBuilder', ({ dependencyBuilder, schemaVersionBuilder }) =>
113
- new DiffBuilder(dependencyBuilder, schemaVersionBuilder, container.entitiesSelector))
114
102
  .addService('projectTruncateExecutor', () =>
115
103
  new ProjectTruncateExecutor())
116
104
  .addService('migrationAlterer', () =>
117
105
  new MigrationAlterer())
106
+ .addService('eventResponseBuilder', ({ identityFetcher }) =>
107
+ new EventResponseBuilder(identityFetcher))
118
108
  .addService('stagesQueryResolver', () =>
119
109
  new StagesQueryResolver())
120
110
  .addService('executedMigrationsQueryResolver', () =>
121
111
  new ExecutedMigrationsQueryResolver())
122
- .addService('historyEventResponseBuilder', () =>
123
- new HistoryEventResponseBuilder(container.identityFetcher))
124
112
  .addService('migrateMutationResolver', ({ projectMigrator }) =>
125
113
  new MigrateMutationResolver(projectMigrator))
126
114
  .addService('truncateMutationResolver', ({ projectTruncateExecutor }) =>
127
115
  new TruncateMutationResolver(projectTruncateExecutor))
128
116
  .addService('migrationAlterMutationResolver', ({ migrationAlterer }) =>
129
117
  new MigrationAlterMutationResolver(migrationAlterer))
130
- .addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver }) =>
131
- new ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver))
118
+ .addService('eventsQueryResolver', ({ eventResponseBuilder }) =>
119
+ new EventsQueryResolver(eventResponseBuilder))
120
+ .addService('eventOldValuesResolver', () =>
121
+ new EventOldValuesResolver())
122
+ .addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver }) =>
123
+ new ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver))
132
124
  .addService('resolverContextFactory', ({ authorizator, schemaVersionBuilder }) =>
133
125
  new ResolverContextFactory(authorizator, schemaVersionBuilder))
134
126
  .addService('projectInitializer', ({ projectMigrator, stageCreator, systemDbMigrationsRunnerFactory, schemaVersionBuilder }) =>
package/src/index.ts CHANGED
@@ -17,7 +17,6 @@ export {
17
17
  ProjectMigrator,
18
18
  StageCreator,
19
19
  getJunctionTables,
20
- UpdateStageEventCommand,
21
20
  } from './model'
22
21
  export * from './SystemContainer'
23
22
  export * from './resolvers'
@@ -1,7 +1,7 @@
1
1
  import { unnamedIdentity } from './helpers'
2
2
  import { ProjectConfig, StageConfig } from '../types'
3
3
  import { ProjectMigrator, SchemaVersionBuilder } from './migrations'
4
- import { createStageTree, StageCreator } from './stages'
4
+ import { StageCreator } from './stages'
5
5
  import { DatabaseContext, DatabaseContextFactory } from './database'
6
6
  import { SystemDbMigrationsRunnerFactory } from '../SystemContainer'
7
7
  import {
@@ -11,7 +11,6 @@ import {
11
11
  retryTransaction,
12
12
  SingleConnection,
13
13
  } from '@contember/database'
14
- import { MigrationArgs } from '../migrations'
15
14
  import { createDatabaseIfNotExists, createPgClient } from '@contember/database-migrations'
16
15
  import { Logger } from '@contember/engine-common'
17
16
  import { Migration } from '@contember/schema-migrations'
@@ -43,7 +42,7 @@ export class ProjectInitializer {
43
42
  .create(unnamedIdentity)
44
43
 
45
44
  const schemaResolver = () => this.schemaVersionBuilder.buildSchema(dbContextMigrations)
46
- await this.systemDbMigrationsRunnerFactory(project.db, pgClient).migrate<MigrationArgs>(
45
+ await this.systemDbMigrationsRunnerFactory(project.db, pgClient).migrate(
47
46
  logger.write.bind(logger),
48
47
  {
49
48
  schemaResolver,
@@ -67,11 +66,10 @@ export class ProjectInitializer {
67
66
  logger: Logger,
68
67
  migrations?: Migration[],
69
68
  ) {
70
- const stageTree = createStageTree(project)
71
- const root = stageTree.getRoot()
72
69
 
73
- const createStage = async (parent: StageConfig | null, stage: StageConfig) => {
74
- const created = await this.stageCreator.createStage(db, parent, stage, logger)
70
+ logger.group(`Creating stages`)
71
+ for (const stage of project.stages) {
72
+ const created = await this.stageCreator.createStage(db, stage)
75
73
  if (created) {
76
74
  logger.write(`Created stage ${stage.slug} `)
77
75
  } else {
@@ -79,15 +77,6 @@ export class ProjectInitializer {
79
77
  }
80
78
  }
81
79
 
82
- const createRecursive = async (parent: StageConfig | null, stage: StageConfig) => {
83
- await createStage(parent, stage)
84
- for (const childStage of stageTree.getChildren(stage)) {
85
- await createRecursive(stage, childStage)
86
- }
87
- }
88
-
89
- logger.group(`Creating stages`)
90
- await createRecursive(null, root)
91
80
  logger.groupEnd()
92
81
  if (migrations) {
93
82
  logger.group(`Executing project migrations`)
@@ -5,14 +5,6 @@ export namespace AuthorizationActions {
5
5
  project = 'project',
6
6
  }
7
7
 
8
- export const PROJECT_RELEASE_ANY = Authorizator.createAction(Resources.project, 'releaseAny')
9
- export const PROJECT_RELEASE_SOME = Authorizator.createAction(Resources.project, 'releaseSome')
10
-
11
- export const PROJECT_REBASE_ANY = Authorizator.createAction(Resources.project, 'rebaseAny')
12
-
13
- export const PROJECT_DIFF_ANY = Authorizator.createAction(Resources.project, 'diffAny')
14
- export const PROJECT_DIFF_SOME = Authorizator.createAction(Resources.project, 'diffSome')
15
-
16
8
  export const PROJECT_HISTORY_ANY = Authorizator.createAction(Resources.project, 'historyAny')
17
9
 
18
10
  export const PROJECT_MIGRATE = Authorizator.createAction(Resources.project, 'migrate')
@@ -13,32 +13,11 @@ export class StagePermissionsFactory {
13
13
 
14
14
  const rolePermissions = this.createRolePermissions(filteredSchema.acl)
15
15
  Object.entries(rolePermissions).forEach(([role, value]) => {
16
- // diff
17
- if (value.diff === Acl.SystemPermissionsLevel.some) {
18
- permissions.allow(role, AuthorizationActions.PROJECT_DIFF_SOME)
19
- } else if (value.diff === Acl.SystemPermissionsLevel.any) {
20
- permissions.allow(role, AuthorizationActions.PROJECT_DIFF_ANY)
21
- permissions.allow(role, AuthorizationActions.PROJECT_DIFF_SOME)
22
- }
23
-
24
16
  // history
25
17
  if (value.history === Acl.SystemPermissionsLevel.any) {
26
18
  permissions.allow(role, AuthorizationActions.PROJECT_HISTORY_ANY)
27
19
  }
28
20
 
29
- // release
30
- if (value.release === Acl.SystemPermissionsLevel.some) {
31
- permissions.allow(role, AuthorizationActions.PROJECT_RELEASE_SOME)
32
- } else if (value.release === Acl.SystemPermissionsLevel.any) {
33
- permissions.allow(role, AuthorizationActions.PROJECT_RELEASE_ANY)
34
- permissions.allow(role, AuthorizationActions.PROJECT_RELEASE_SOME)
35
- }
36
-
37
- // rebase
38
- if (value.rebase === Acl.SystemPermissionsLevel.any) {
39
- permissions.allow(role, AuthorizationActions.PROJECT_REBASE_ANY)
40
- }
41
-
42
21
  // migrate
43
22
  if (value.migrate) {
44
23
  permissions.allow(role, AuthorizationActions.PROJECT_MIGRATE)
@@ -17,11 +17,10 @@ export class CreateOrUpdateStageCommand implements Command<boolean> {
17
17
  .onConflict(ConflictActionType.update, ['slug'], {
18
18
  name: this.stage.name,
19
19
  })
20
- .returning('event_id')
21
20
  .execute(db)
22
21
 
23
22
  await db.query('CREATE SCHEMA IF NOT EXISTS ' + wrapIdentifier(formatSchemaName(this.stage)))
24
23
 
25
- return result.length === 1
24
+ return result > 0
26
25
  }
27
26
  }
@@ -1,3 +1,2 @@
1
1
  export * from './CreateOrUpdateStageCommand'
2
2
  export * from './TruncateStagesCommand'
3
- export * from './UpdateStageEventCommand'
@@ -1,2 +1 @@
1
- export * from './ContentEventsApplier'
2
1
  export * from './EntitiesSelector'
@@ -1 +1,2 @@
1
1
  export * from './content'
2
+ export * from './tenant'
@@ -1,5 +1,7 @@
1
+ import { Client } from '@contember/database'
2
+
1
3
  export interface IdentityFetcher {
2
- fetchIdentities(ids: string[]): Promise<TenantIdentity[]>
4
+ fetchIdentities(client: Client, ids: string[]): Promise<TenantIdentity[]>
3
5
  }
4
6
 
5
7
  export type TenantIdentity = PersonIdentity | ApiKeyIdentity
@@ -0,0 +1 @@
1
+ export * from './IdentityFetcher'
@@ -1,32 +1,28 @@
1
1
  import { AnyEvent, EventType } from '@contember/engine-common'
2
- import {
3
- HistoryCreateEvent,
4
- HistoryDeleteEvent,
5
- HistoryEvent as ApiEvent,
6
- HistoryEventType as ApiEventType,
7
- HistoryUpdateEvent,
8
- } from '../../schema'
2
+ import { CreateEvent, DeleteEvent, EventType as ApiEventType, UpdateEvent } from '../../schema'
9
3
  import { assertNever } from '../../utils'
10
- import { IdentityFetcher } from '../dependencies/tenant/IdentityFetcher'
4
+ import { IdentityFetcher } from '../dependencies'
11
5
  import { formatIdentity } from './identityUtils'
12
6
  import { appendCreateSpecificData, appendDeleteSpecificData, appendUpdateSpecificData } from './EventResponseHelper'
7
+ import { Client } from '@contember/database'
13
8
 
14
- export class HistoryEventResponseBuilder {
9
+ export class EventResponseBuilder {
15
10
  constructor(private readonly identityFetcher: IdentityFetcher) {}
16
11
 
17
- public async buildResponse(events: AnyEvent[]): Promise<ApiEvent[]> {
12
+ public async buildResponse(tenantDb: Client, events: AnyEvent[]): Promise<(CreateEvent | DeleteEvent | UpdateEvent)[]> {
18
13
  const apiEventTypeMapping = {
19
14
  [EventType.create]: ApiEventType.Create,
20
15
  [EventType.update]: ApiEventType.Update,
21
16
  [EventType.delete]: ApiEventType.Delete,
22
17
  }
23
18
  const identityIds = events.map(it => it.identityId).filter((it, index, ids) => ids.indexOf(it) === index)
24
- const identities = await this.identityFetcher.fetchIdentities(identityIds)
19
+ const identities = await this.identityFetcher.fetchIdentities(tenantDb, identityIds)
25
20
  const identitiesMap = Object.fromEntries(identities.map(it => [it.identityId, it]))
26
21
 
27
22
  return events.map(it => {
28
23
  const commonData = {
29
24
  createdAt: it.createdAt,
25
+ appliedAt: it.appliedAt,
30
26
  id: it.id,
31
27
  type: apiEventTypeMapping[it.type],
32
28
  description: this.formatDescription(it),
@@ -36,11 +32,11 @@ export class HistoryEventResponseBuilder {
36
32
  }
37
33
  switch (it.type) {
38
34
  case EventType.create:
39
- return ((): HistoryCreateEvent => appendCreateSpecificData(commonData, it))()
35
+ return ((): CreateEvent => appendCreateSpecificData(commonData, it))()
40
36
  case EventType.update:
41
- return ((): HistoryUpdateEvent => appendUpdateSpecificData(commonData, it))()
37
+ return ((): UpdateEvent => appendUpdateSpecificData(commonData, it))()
42
38
  case EventType.delete:
43
- return ((): HistoryDeleteEvent => appendDeleteSpecificData(commonData, it))()
39
+ return ((): DeleteEvent => appendDeleteSpecificData(commonData, it))()
44
40
  }
45
41
  assertNever(it)
46
42
  })
@@ -49,11 +45,11 @@ export class HistoryEventResponseBuilder {
49
45
  private formatDescription(event: AnyEvent): string {
50
46
  switch (event.type) {
51
47
  case EventType.create:
52
- return `Creating ${event.tableName}#${event.rowId}`
48
+ return `Creating ${event.tableName}#${event.rowId.join(';')}`
53
49
  case EventType.update:
54
- return `Updating ${event.tableName}#${event.rowId}`
50
+ return `Updating ${event.tableName}#${event.rowId.join(';')}`
55
51
  case EventType.delete:
56
- return `Deleting ${event.tableName}#${event.rowId}`
52
+ return `Deleting ${event.tableName}#${event.rowId.join(';')}`
57
53
  default:
58
54
  return assertNever(event)
59
55
  }
@@ -3,7 +3,7 @@ import { AnyEvent, ContentEvent, CreateEvent, DeleteEvent, UpdateEvent } from '@
3
3
  export const appendUpdateSpecificData = <T>(commonData: T, event: UpdateEvent) => ({
4
4
  ...commonData,
5
5
  tableName: event.tableName,
6
- primaryKeys: event.rowId,
6
+ primaryKey: event.rowId,
7
7
  diffValues: event.values,
8
8
  oldValues: {},
9
9
  })
@@ -11,13 +11,13 @@ export const appendUpdateSpecificData = <T>(commonData: T, event: UpdateEvent) =
11
11
  export const appendCreateSpecificData = <T>(commonData: T, event: CreateEvent) => ({
12
12
  ...commonData,
13
13
  tableName: event.tableName,
14
- primaryKeys: event.rowId,
14
+ primaryKey: event.rowId,
15
15
  newValues: event.values,
16
16
  })
17
17
 
18
18
  export const appendDeleteSpecificData = <T>(commonData: T, event: DeleteEvent) => ({
19
19
  ...commonData,
20
20
  tableName: event.tableName,
21
- primaryKeys: event.rowId,
21
+ primaryKey: event.rowId,
22
22
  oldValues: {},
23
23
  })
@@ -1,5 +1 @@
1
- export * from './dependency'
2
- export * from './DependencyBuilder'
3
- export * from './DiffBuilder'
4
- export * from './HistoryEventResponseBuilder'
5
- export * from './TableReferencingResolver'
1
+ export * from './EventResponseBuilder'
@@ -1,10 +1,8 @@
1
- import { EventType } from '@contember/engine-common'
2
1
  import { wrapIdentifier } from '@contember/database'
3
2
  import { Schema } from '@contember/schema'
4
3
  import { Migration, ModificationHandlerFactory } from '@contember/schema-migrations'
5
4
  import { createMigrationBuilder } from '@contember/database-migrations'
6
5
  import { Stage } from '../dtos'
7
- import { UpdateStageEventCommand } from '../commands'
8
6
  import { formatSchemaName } from '../helpers'
9
7
  import { DatabaseContext } from '../database'
10
8
 
@@ -1,4 +1,3 @@
1
- import { createStageTree, StageTree } from '../stages'
2
1
  import { Migration, MigrationDescriber } from '@contember/schema-migrations'
3
2
  import { Client, QueryError, wrapIdentifier } from '@contember/database'
4
3
  import { formatSchemaName } from '../helpers'
@@ -10,7 +9,6 @@ import { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'
10
9
  import { MigrateErrorCode } from '../../schema'
11
10
  import { ProjectConfig } from '../../types'
12
11
  import { SchemaVersionBuilder } from './SchemaVersionBuilder'
13
- import { StagingDisabledError } from '../../StagingDisabledError'
14
12
 
15
13
  export class ProjectMigrator {
16
14
  constructor(
@@ -26,7 +24,6 @@ export class ProjectMigrator {
26
24
  logger: (message: string) => void,
27
25
  ignoreOrder: boolean = false,
28
26
  ) {
29
- const stageTree = createStageTree(project)
30
27
  if (migrationsToExecute.length === 0) {
31
28
  return
32
29
  }
@@ -35,10 +32,6 @@ export class ProjectMigrator {
35
32
 
36
33
  const sorted = [...migrationsToExecute].sort((a, b) => a.version.localeCompare(b.version))
37
34
 
38
- const rootStage = stageTree.getRoot()
39
- if (stageTree.getChildren(rootStage).length !== 0) {
40
- throw new StagingDisabledError()
41
- }
42
35
  for (const migration of sorted) {
43
36
  logger(`Executing migration ${migration.name}...`)
44
37
  const formatVersion = migration.formatVersion
@@ -46,7 +39,7 @@ export class ProjectMigrator {
46
39
  for (const modification of migration.modifications) {
47
40
  [schema] = await this.applyModification(
48
41
  db.client,
49
- stageTree,
42
+ project.stages,
50
43
  schema,
51
44
  modification,
52
45
  formatVersion,
@@ -93,19 +86,20 @@ export class ProjectMigrator {
93
86
 
94
87
  private async applyModification(
95
88
  db: Client,
96
- stageTree: StageTree,
89
+ stages: StageWithoutEvent[],
97
90
  schema: Schema,
98
91
  modification: Migration.Modification,
99
92
  formatVersion: number,
100
93
  migrationVersion: string,
101
94
  ): Promise<[Schema]> {
102
- const stage = stageTree.getRoot()
103
95
  const {
104
96
  sql,
105
97
  schema: newSchema,
106
98
  handler,
107
99
  } = await this.migrationDescriber.describeModification(schema, modification, formatVersion)
108
- await this.executeOnStage(db, stage, sql, migrationVersion)
100
+ for (const stage of stages) {
101
+ await this.executeOnStage(db, stage, sql, migrationVersion)
102
+ }
109
103
  return [newSchema]
110
104
  }
111
105
 
@@ -7,7 +7,7 @@ import { normalizeSchema } from '@contember/schema-utils'
7
7
 
8
8
  export type VersionedSchema = Schema & { version: string; notNormalized: Schema & { version: string } }
9
9
 
10
- const emptyVersionedSchema = { ...emptySchema, version: '', notNormalized: { ...emptySchema, version: '' } }
10
+ const emptyVersionedSchema = { ...normalizeSchema(emptySchema), version: '', notNormalized: { ...emptySchema, version: '' } }
11
11
 
12
12
  export class SchemaVersionBuilder {
13
13
  constructor(
@@ -4,46 +4,49 @@ import { assertNever } from '../../../utils'
4
4
  export type EventRow = {
5
5
  id: string
6
6
  type: EventType
7
- data: any
8
- previous_id: string
7
+ table_name: string
8
+ row_ids: string[]
9
+ values: Record<string, any>
9
10
  created_at: Date
11
+ applied_at: Date
10
12
  identity_id: string
11
13
  transaction_id: string
12
- index: number
13
14
  }
14
15
 
15
16
  export const createEventsFromRows = (rows: EventRow[]): AnyEvent[] => {
16
17
  return rows.map(event => {
17
- const data = event.data
18
18
  switch (event.type) {
19
19
  case EventType.create:
20
20
  return new CreateEvent(
21
21
  event.id,
22
22
  event.created_at,
23
+ event.applied_at,
23
24
  event.identity_id,
24
25
  event.transaction_id,
25
- typeof data.rowId === 'string' ? [data.rowId] : data.rowId,
26
- data.tableName,
27
- data.values,
26
+ event.row_ids,
27
+ event.table_name,
28
+ event.values,
28
29
  )
29
30
  case EventType.update:
30
31
  return new UpdateEvent(
31
32
  event.id,
32
33
  event.created_at,
34
+ event.applied_at,
33
35
  event.identity_id,
34
36
  event.transaction_id,
35
- typeof data.rowId === 'string' ? [data.rowId] : data.rowId,
36
- data.tableName,
37
- data.values,
37
+ event.row_ids,
38
+ event.table_name,
39
+ event.values,
38
40
  )
39
41
  case EventType.delete:
40
42
  return new DeleteEvent(
41
43
  event.id,
42
44
  event.created_at,
45
+ event.applied_at,
43
46
  event.identity_id,
44
47
  event.transaction_id,
45
- typeof data.rowId === 'string' ? [data.rowId] : data.rowId,
46
- data.tableName,
48
+ event.row_ids,
49
+ event.table_name,
47
50
  )
48
51
  default:
49
52
  assertNever(event.type)