@contember/engine-system-api 2.1.0-alpha.9 → 2.1.0-beta.2

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 (518) hide show
  1. package/CLAUDE.md +30 -0
  2. package/dist/development/src/SystemContainer.cjs +34 -1
  3. package/dist/development/src/SystemContainer.cjs.map +1 -1
  4. package/dist/development/src/SystemContainer.js +34 -1
  5. package/dist/development/src/SystemContainer.js.map +1 -1
  6. package/dist/development/src/migrations/2018-08-04-102200-init.cjs.map +1 -1
  7. package/dist/development/src/migrations/2018-08-04-102200-init.js.map +1 -1
  8. package/dist/development/src/migrations/2018-08-05-130501-trigger-event-function.cjs.map +1 -1
  9. package/dist/development/src/migrations/2018-08-05-130501-trigger-event-function.js.map +1 -1
  10. package/dist/development/src/migrations/2019-01-14-143432-event-trx-id.cjs.map +1 -1
  11. package/dist/development/src/migrations/2019-01-14-143432-event-trx-id.js.map +1 -1
  12. package/dist/development/src/migrations/2019-02-04-154500-event-rebase.cjs.map +1 -1
  13. package/dist/development/src/migrations/2019-02-04-154500-event-rebase.js.map +1 -1
  14. package/dist/development/src/migrations/2019-03-18-104147-event-run-migration-struct.cjs.map +1 -1
  15. package/dist/development/src/migrations/2019-03-18-104147-event-run-migration-struct.js.map +1 -1
  16. package/dist/development/src/migrations/2019-07-29-103000-trigger-event-function-fix.cjs.map +1 -1
  17. package/dist/development/src/migrations/2019-07-29-103000-trigger-event-function-fix.js.map +1 -1
  18. package/dist/development/src/migrations/2019-11-28-100000-missing-setting-fallback.cjs.map +1 -1
  19. package/dist/development/src/migrations/2019-11-28-100000-missing-setting-fallback.js.map +1 -1
  20. package/dist/development/src/migrations/2020-03-27-130000-project-migrations.cjs.map +1 -1
  21. package/dist/development/src/migrations/2020-03-27-130000-project-migrations.js.map +1 -1
  22. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  23. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  24. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  25. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  26. package/dist/development/src/migrations/2021-03-23-110000-timestamp-fix.cjs.map +1 -1
  27. package/dist/development/src/migrations/2021-03-23-110000-timestamp-fix.js.map +1 -1
  28. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  29. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  30. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  31. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  32. package/dist/development/src/migrations/2021-12-21-155500-events-up.cjs.map +1 -1
  33. package/dist/development/src/migrations/2021-12-21-155500-events-up.js.map +1 -1
  34. package/dist/development/src/migrations/2022-02-08-132600-fn-search-path.cjs.map +1 -1
  35. package/dist/development/src/migrations/2022-02-08-132600-fn-search-path.js.map +1 -1
  36. package/dist/development/src/migrations/2022-02-08-140500-drop-deadcode.cjs.map +1 -1
  37. package/dist/development/src/migrations/2022-02-08-140500-drop-deadcode.js.map +1 -1
  38. package/dist/development/src/migrations/2022-02-08-144400-dynamic-stage-schema.cjs.map +1 -1
  39. package/dist/development/src/migrations/2022-02-08-144400-dynamic-stage-schema.js.map +1 -1
  40. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  41. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  42. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs +3 -1
  43. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  44. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js +3 -1
  45. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  46. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs +3 -1
  47. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  48. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js +3 -1
  49. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  50. package/dist/development/src/migrations/2023-10-24-140000-schema-nullable-checksum.cjs.map +1 -1
  51. package/dist/development/src/migrations/2023-10-24-140000-schema-nullable-checksum.js.map +1 -1
  52. package/dist/development/src/migrations/2024-06-28-150000-migrations-drop-sequence.cjs.map +1 -1
  53. package/dist/development/src/migrations/2024-06-28-150000-migrations-drop-sequence.js.map +1 -1
  54. package/dist/development/src/migrations/2024-06-28-153000-schema.cjs.map +1 -1
  55. package/dist/development/src/migrations/2024-06-28-153000-schema.js.map +1 -1
  56. package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -1
  57. package/dist/development/src/migrations/2024-06-28-153001-schema-init.js.map +1 -1
  58. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -1
  59. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -1
  60. package/dist/development/src/migrations/2025-03-14-110000-fix-missing-index.cjs.map +1 -1
  61. package/dist/development/src/migrations/2025-03-14-110000-fix-missing-index.js.map +1 -1
  62. package/dist/development/src/migrations/runner.cjs.map +1 -1
  63. package/dist/development/src/migrations/runner.js.map +1 -1
  64. package/dist/development/src/migrations/snapshot-factory.cjs.map +1 -1
  65. package/dist/development/src/migrations/snapshot-factory.js.map +1 -1
  66. package/dist/development/src/model/ProjectInitializer.cjs +18 -14
  67. package/dist/development/src/model/ProjectInitializer.cjs.map +1 -1
  68. package/dist/development/src/model/ProjectInitializer.js +18 -14
  69. package/dist/development/src/model/ProjectInitializer.js.map +1 -1
  70. package/dist/development/src/model/ProjectTruncateExecutor.cjs.map +1 -1
  71. package/dist/development/src/model/ProjectTruncateExecutor.js.map +1 -1
  72. package/dist/development/src/model/authorization/AuthorizationActions.cjs.map +1 -1
  73. package/dist/development/src/model/authorization/AuthorizationActions.js.map +1 -1
  74. package/dist/development/src/model/authorization/Identity.cjs.map +1 -1
  75. package/dist/development/src/model/authorization/Identity.js.map +1 -1
  76. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  77. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  78. package/dist/development/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  79. package/dist/development/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  80. package/dist/development/src/model/authorization/StageScope.cjs.map +1 -1
  81. package/dist/development/src/model/authorization/StageScope.js.map +1 -1
  82. package/dist/development/src/model/authorization/SwitchEvaluatorNode.cjs.map +1 -1
  83. package/dist/development/src/model/authorization/SwitchEvaluatorNode.js.map +1 -1
  84. package/dist/development/src/model/commands/CommandBus.cjs +1 -3
  85. package/dist/development/src/model/commands/CommandBus.cjs.map +1 -1
  86. package/dist/development/src/model/commands/CommandBus.js +1 -3
  87. package/dist/development/src/model/commands/CommandBus.js.map +1 -1
  88. package/dist/development/src/model/commands/events/TruncateEventsCommand.cjs.map +1 -1
  89. package/dist/development/src/model/commands/events/TruncateEventsCommand.js.map +1 -1
  90. package/dist/development/src/model/commands/migrations/DeleteMigrationCommand.cjs.map +1 -1
  91. package/dist/development/src/model/commands/migrations/DeleteMigrationCommand.js.map +1 -1
  92. package/dist/development/src/model/commands/migrations/ModifyMigrationCommand.cjs.map +1 -1
  93. package/dist/development/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  94. package/dist/development/src/model/commands/migrations/SaveMigrationCommand.cjs.map +1 -1
  95. package/dist/development/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  96. package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -1
  97. package/dist/development/src/model/commands/schema/SaveSchemaCommand.js.map +1 -1
  98. package/dist/development/src/model/commands/stages/CreateStageCommand.cjs.map +1 -1
  99. package/dist/development/src/model/commands/stages/CreateStageCommand.js.map +1 -1
  100. package/dist/development/src/model/database/DatabaseContext.cjs.map +1 -1
  101. package/dist/development/src/model/database/DatabaseContext.js.map +1 -1
  102. package/dist/development/src/model/dtos/ExecutedMigration.cjs.map +1 -1
  103. package/dist/development/src/model/dtos/ExecutedMigration.js.map +1 -1
  104. package/dist/development/src/model/events/EventResponseBuilder.cjs.map +1 -1
  105. package/dist/development/src/model/events/EventResponseBuilder.js.map +1 -1
  106. package/dist/development/src/model/events/EventResponseHelper.cjs.map +1 -1
  107. package/dist/development/src/model/events/EventResponseHelper.js.map +1 -1
  108. package/dist/development/src/model/events/identityUtils.cjs.map +1 -1
  109. package/dist/development/src/model/events/identityUtils.js.map +1 -1
  110. package/dist/development/src/model/events/types.cjs.map +1 -1
  111. package/dist/development/src/model/events/types.js.map +1 -1
  112. package/dist/development/src/model/helpers/modelHelpers.cjs.map +1 -1
  113. package/dist/development/src/model/helpers/modelHelpers.js.map +1 -1
  114. package/dist/development/src/model/metadata/SchemaDatabaseMetadataResolverStore.cjs.map +1 -1
  115. package/dist/development/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -1
  116. package/dist/development/src/model/migrations/ExecutedMigrationsResolver.cjs.map +1 -1
  117. package/dist/development/src/model/migrations/ExecutedMigrationsResolver.js.map +1 -1
  118. package/dist/development/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  119. package/dist/development/src/model/migrations/MigrationAlterer.js.map +1 -1
  120. package/dist/development/src/model/migrations/ProjectMigrator.cjs +25 -13
  121. package/dist/development/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  122. package/dist/development/src/model/migrations/ProjectMigrator.js +25 -13
  123. package/dist/development/src/model/migrations/ProjectMigrator.js.map +1 -1
  124. package/dist/development/src/model/migrations/SchemaProvider.cjs +2 -5
  125. package/dist/development/src/model/migrations/SchemaProvider.cjs.map +1 -1
  126. package/dist/development/src/model/migrations/SchemaProvider.js +3 -6
  127. package/dist/development/src/model/migrations/SchemaProvider.js.map +1 -1
  128. package/dist/development/src/model/queries/events/EventQueryHelpers.cjs.map +1 -1
  129. package/dist/development/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  130. package/dist/development/src/model/queries/events/EventsQuery.cjs +1 -5
  131. package/dist/development/src/model/queries/events/EventsQuery.cjs.map +1 -1
  132. package/dist/development/src/model/queries/events/EventsQuery.js +1 -5
  133. package/dist/development/src/model/queries/events/EventsQuery.js.map +1 -1
  134. package/dist/development/src/model/queries/events/LatestTransactionIdByStageQuery.cjs.map +1 -1
  135. package/dist/development/src/model/queries/events/LatestTransactionIdByStageQuery.js.map +1 -1
  136. package/dist/development/src/model/queries/events/OldValuesQuery.cjs +1 -5
  137. package/dist/development/src/model/queries/events/OldValuesQuery.cjs.map +1 -1
  138. package/dist/development/src/model/queries/events/OldValuesQuery.js +1 -5
  139. package/dist/development/src/model/queries/events/OldValuesQuery.js.map +1 -1
  140. package/dist/development/src/model/queries/migrations/ExecutedMigrationByVersionQuery.cjs.map +1 -1
  141. package/dist/development/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  142. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQuery.cjs.map +1 -1
  143. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  144. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQueryHelper.cjs.map +1 -1
  145. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js.map +1 -1
  146. package/dist/development/src/model/queries/schema/SchemaQuery.cjs +5 -1
  147. package/dist/development/src/model/queries/schema/SchemaQuery.cjs.map +1 -1
  148. package/dist/development/src/model/queries/schema/SchemaQuery.js +5 -1
  149. package/dist/development/src/model/queries/schema/SchemaQuery.js.map +1 -1
  150. package/dist/development/src/model/queries/stages/StageBySlugQuery.cjs.map +1 -1
  151. package/dist/development/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  152. package/dist/development/src/model/queries/stages/StageQueryFactory.cjs.map +1 -1
  153. package/dist/development/src/model/queries/stages/StageQueryFactory.js.map +1 -1
  154. package/dist/development/src/model/queries/stages/StagesQuery.cjs.map +1 -1
  155. package/dist/development/src/model/queries/stages/StagesQuery.js.map +1 -1
  156. package/dist/development/src/model/stages/StageCreator.cjs +0 -2
  157. package/dist/development/src/model/stages/StageCreator.cjs.map +1 -1
  158. package/dist/development/src/model/stages/StageCreator.js +0 -2
  159. package/dist/development/src/model/stages/StageCreator.js.map +1 -1
  160. package/dist/development/src/resolvers/ResolverFactory.cjs +1 -1
  161. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  162. package/dist/development/src/resolvers/ResolverFactory.js +2 -2
  163. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  164. package/dist/development/src/resolvers/SystemResolverContext.cjs.map +1 -1
  165. package/dist/development/src/resolvers/SystemResolverContext.js.map +1 -1
  166. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  167. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  168. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  169. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  170. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  171. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  172. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs +8 -6
  173. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  174. package/dist/development/src/resolvers/query/EventsQueryResolver.js +8 -6
  175. package/dist/development/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  176. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  177. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  178. package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -1
  179. package/dist/development/src/resolvers/query/SchemaQueryResolver.js.map +1 -1
  180. package/dist/development/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  181. package/dist/development/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  182. package/dist/development/src/resolvers/types/EventOldValuesResolver.cjs.map +1 -1
  183. package/dist/development/src/resolvers/types/EventOldValuesResolver.js.map +1 -1
  184. package/dist/development/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  185. package/dist/development/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  186. package/dist/development/src/schema/dev.graphql.cjs.map +1 -1
  187. package/dist/development/src/schema/system.graphql.cjs.map +1 -1
  188. package/dist/development/src/schema/types.cjs.map +1 -1
  189. package/dist/development/src/schema/types.js.map +1 -1
  190. package/dist/development/src/utils/MapSet.cjs.map +1 -1
  191. package/dist/development/src/utils/MapSet.js.map +1 -1
  192. package/dist/development/src/utils/Response.cjs.map +1 -1
  193. package/dist/development/src/utils/Response.js.map +1 -1
  194. package/dist/development/src/utils/assertNever.cjs.map +1 -1
  195. package/dist/development/src/utils/assertNever.js.map +1 -1
  196. package/dist/development/src/utils/batchQuery.cjs.map +1 -1
  197. package/dist/development/src/utils/batchQuery.js.map +1 -1
  198. package/dist/development/src/utils/tick.cjs.map +1 -1
  199. package/dist/development/src/utils/tick.js.map +1 -1
  200. package/dist/development/src/utils/tuple.cjs.map +1 -1
  201. package/dist/development/src/utils/tuple.js.map +1 -1
  202. package/dist/production/src/SystemContainer.cjs +34 -1
  203. package/dist/production/src/SystemContainer.cjs.map +1 -1
  204. package/dist/production/src/SystemContainer.js +34 -1
  205. package/dist/production/src/SystemContainer.js.map +1 -1
  206. package/dist/production/src/migrations/2018-08-04-102200-init.cjs.map +1 -1
  207. package/dist/production/src/migrations/2018-08-04-102200-init.js.map +1 -1
  208. package/dist/production/src/migrations/2018-08-05-130501-trigger-event-function.cjs.map +1 -1
  209. package/dist/production/src/migrations/2018-08-05-130501-trigger-event-function.js.map +1 -1
  210. package/dist/production/src/migrations/2019-01-14-143432-event-trx-id.cjs.map +1 -1
  211. package/dist/production/src/migrations/2019-01-14-143432-event-trx-id.js.map +1 -1
  212. package/dist/production/src/migrations/2019-02-04-154500-event-rebase.cjs.map +1 -1
  213. package/dist/production/src/migrations/2019-02-04-154500-event-rebase.js.map +1 -1
  214. package/dist/production/src/migrations/2019-03-18-104147-event-run-migration-struct.cjs.map +1 -1
  215. package/dist/production/src/migrations/2019-03-18-104147-event-run-migration-struct.js.map +1 -1
  216. package/dist/production/src/migrations/2019-07-29-103000-trigger-event-function-fix.cjs.map +1 -1
  217. package/dist/production/src/migrations/2019-07-29-103000-trigger-event-function-fix.js.map +1 -1
  218. package/dist/production/src/migrations/2019-11-28-100000-missing-setting-fallback.cjs.map +1 -1
  219. package/dist/production/src/migrations/2019-11-28-100000-missing-setting-fallback.js.map +1 -1
  220. package/dist/production/src/migrations/2020-03-27-130000-project-migrations.cjs.map +1 -1
  221. package/dist/production/src/migrations/2020-03-27-130000-project-migrations.js.map +1 -1
  222. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  223. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  224. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  225. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  226. package/dist/production/src/migrations/2021-03-23-110000-timestamp-fix.cjs.map +1 -1
  227. package/dist/production/src/migrations/2021-03-23-110000-timestamp-fix.js.map +1 -1
  228. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  229. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  230. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  231. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  232. package/dist/production/src/migrations/2021-12-21-155500-events-up.cjs.map +1 -1
  233. package/dist/production/src/migrations/2021-12-21-155500-events-up.js.map +1 -1
  234. package/dist/production/src/migrations/2022-02-08-132600-fn-search-path.cjs.map +1 -1
  235. package/dist/production/src/migrations/2022-02-08-132600-fn-search-path.js.map +1 -1
  236. package/dist/production/src/migrations/2022-02-08-140500-drop-deadcode.cjs.map +1 -1
  237. package/dist/production/src/migrations/2022-02-08-140500-drop-deadcode.js.map +1 -1
  238. package/dist/production/src/migrations/2022-02-08-144400-dynamic-stage-schema.cjs.map +1 -1
  239. package/dist/production/src/migrations/2022-02-08-144400-dynamic-stage-schema.js.map +1 -1
  240. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  241. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  242. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs +3 -1
  243. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  244. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js +3 -1
  245. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  246. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs +3 -1
  247. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  248. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js +3 -1
  249. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  250. package/dist/production/src/migrations/2023-10-24-140000-schema-nullable-checksum.cjs.map +1 -1
  251. package/dist/production/src/migrations/2023-10-24-140000-schema-nullable-checksum.js.map +1 -1
  252. package/dist/production/src/migrations/2024-06-28-150000-migrations-drop-sequence.cjs.map +1 -1
  253. package/dist/production/src/migrations/2024-06-28-150000-migrations-drop-sequence.js.map +1 -1
  254. package/dist/production/src/migrations/2024-06-28-153000-schema.cjs.map +1 -1
  255. package/dist/production/src/migrations/2024-06-28-153000-schema.js.map +1 -1
  256. package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -1
  257. package/dist/production/src/migrations/2024-06-28-153001-schema-init.js.map +1 -1
  258. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -1
  259. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -1
  260. package/dist/production/src/migrations/2025-03-14-110000-fix-missing-index.cjs.map +1 -1
  261. package/dist/production/src/migrations/2025-03-14-110000-fix-missing-index.js.map +1 -1
  262. package/dist/production/src/migrations/runner.cjs.map +1 -1
  263. package/dist/production/src/migrations/runner.js.map +1 -1
  264. package/dist/production/src/migrations/snapshot-factory.cjs.map +1 -1
  265. package/dist/production/src/migrations/snapshot-factory.js.map +1 -1
  266. package/dist/production/src/model/ProjectInitializer.cjs +18 -14
  267. package/dist/production/src/model/ProjectInitializer.cjs.map +1 -1
  268. package/dist/production/src/model/ProjectInitializer.js +18 -14
  269. package/dist/production/src/model/ProjectInitializer.js.map +1 -1
  270. package/dist/production/src/model/ProjectTruncateExecutor.cjs.map +1 -1
  271. package/dist/production/src/model/ProjectTruncateExecutor.js.map +1 -1
  272. package/dist/production/src/model/authorization/AuthorizationActions.cjs.map +1 -1
  273. package/dist/production/src/model/authorization/AuthorizationActions.js.map +1 -1
  274. package/dist/production/src/model/authorization/Identity.cjs.map +1 -1
  275. package/dist/production/src/model/authorization/Identity.js.map +1 -1
  276. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  277. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  278. package/dist/production/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  279. package/dist/production/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  280. package/dist/production/src/model/authorization/StageScope.cjs.map +1 -1
  281. package/dist/production/src/model/authorization/StageScope.js.map +1 -1
  282. package/dist/production/src/model/authorization/SwitchEvaluatorNode.cjs.map +1 -1
  283. package/dist/production/src/model/authorization/SwitchEvaluatorNode.js.map +1 -1
  284. package/dist/production/src/model/commands/CommandBus.cjs +1 -3
  285. package/dist/production/src/model/commands/CommandBus.cjs.map +1 -1
  286. package/dist/production/src/model/commands/CommandBus.js +1 -3
  287. package/dist/production/src/model/commands/CommandBus.js.map +1 -1
  288. package/dist/production/src/model/commands/events/TruncateEventsCommand.cjs.map +1 -1
  289. package/dist/production/src/model/commands/events/TruncateEventsCommand.js.map +1 -1
  290. package/dist/production/src/model/commands/migrations/DeleteMigrationCommand.cjs.map +1 -1
  291. package/dist/production/src/model/commands/migrations/DeleteMigrationCommand.js.map +1 -1
  292. package/dist/production/src/model/commands/migrations/ModifyMigrationCommand.cjs.map +1 -1
  293. package/dist/production/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  294. package/dist/production/src/model/commands/migrations/SaveMigrationCommand.cjs.map +1 -1
  295. package/dist/production/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  296. package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -1
  297. package/dist/production/src/model/commands/schema/SaveSchemaCommand.js.map +1 -1
  298. package/dist/production/src/model/commands/stages/CreateStageCommand.cjs.map +1 -1
  299. package/dist/production/src/model/commands/stages/CreateStageCommand.js.map +1 -1
  300. package/dist/production/src/model/database/DatabaseContext.cjs.map +1 -1
  301. package/dist/production/src/model/database/DatabaseContext.js.map +1 -1
  302. package/dist/production/src/model/dtos/ExecutedMigration.cjs.map +1 -1
  303. package/dist/production/src/model/dtos/ExecutedMigration.js.map +1 -1
  304. package/dist/production/src/model/events/EventResponseBuilder.cjs.map +1 -1
  305. package/dist/production/src/model/events/EventResponseBuilder.js.map +1 -1
  306. package/dist/production/src/model/events/EventResponseHelper.cjs.map +1 -1
  307. package/dist/production/src/model/events/EventResponseHelper.js.map +1 -1
  308. package/dist/production/src/model/events/identityUtils.cjs.map +1 -1
  309. package/dist/production/src/model/events/identityUtils.js.map +1 -1
  310. package/dist/production/src/model/events/types.cjs.map +1 -1
  311. package/dist/production/src/model/events/types.js.map +1 -1
  312. package/dist/production/src/model/helpers/modelHelpers.cjs.map +1 -1
  313. package/dist/production/src/model/helpers/modelHelpers.js.map +1 -1
  314. package/dist/production/src/model/metadata/SchemaDatabaseMetadataResolverStore.cjs.map +1 -1
  315. package/dist/production/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -1
  316. package/dist/production/src/model/migrations/ExecutedMigrationsResolver.cjs.map +1 -1
  317. package/dist/production/src/model/migrations/ExecutedMigrationsResolver.js.map +1 -1
  318. package/dist/production/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  319. package/dist/production/src/model/migrations/MigrationAlterer.js.map +1 -1
  320. package/dist/production/src/model/migrations/ProjectMigrator.cjs +25 -13
  321. package/dist/production/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  322. package/dist/production/src/model/migrations/ProjectMigrator.js +25 -13
  323. package/dist/production/src/model/migrations/ProjectMigrator.js.map +1 -1
  324. package/dist/production/src/model/migrations/SchemaProvider.cjs +2 -5
  325. package/dist/production/src/model/migrations/SchemaProvider.cjs.map +1 -1
  326. package/dist/production/src/model/migrations/SchemaProvider.js +3 -6
  327. package/dist/production/src/model/migrations/SchemaProvider.js.map +1 -1
  328. package/dist/production/src/model/queries/events/EventQueryHelpers.cjs.map +1 -1
  329. package/dist/production/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  330. package/dist/production/src/model/queries/events/EventsQuery.cjs +1 -5
  331. package/dist/production/src/model/queries/events/EventsQuery.cjs.map +1 -1
  332. package/dist/production/src/model/queries/events/EventsQuery.js +1 -5
  333. package/dist/production/src/model/queries/events/EventsQuery.js.map +1 -1
  334. package/dist/production/src/model/queries/events/LatestTransactionIdByStageQuery.cjs.map +1 -1
  335. package/dist/production/src/model/queries/events/LatestTransactionIdByStageQuery.js.map +1 -1
  336. package/dist/production/src/model/queries/events/OldValuesQuery.cjs +1 -5
  337. package/dist/production/src/model/queries/events/OldValuesQuery.cjs.map +1 -1
  338. package/dist/production/src/model/queries/events/OldValuesQuery.js +1 -5
  339. package/dist/production/src/model/queries/events/OldValuesQuery.js.map +1 -1
  340. package/dist/production/src/model/queries/migrations/ExecutedMigrationByVersionQuery.cjs.map +1 -1
  341. package/dist/production/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  342. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQuery.cjs.map +1 -1
  343. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  344. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQueryHelper.cjs.map +1 -1
  345. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js.map +1 -1
  346. package/dist/production/src/model/queries/schema/SchemaQuery.cjs +5 -1
  347. package/dist/production/src/model/queries/schema/SchemaQuery.cjs.map +1 -1
  348. package/dist/production/src/model/queries/schema/SchemaQuery.js +5 -1
  349. package/dist/production/src/model/queries/schema/SchemaQuery.js.map +1 -1
  350. package/dist/production/src/model/queries/stages/StageBySlugQuery.cjs.map +1 -1
  351. package/dist/production/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  352. package/dist/production/src/model/queries/stages/StageQueryFactory.cjs.map +1 -1
  353. package/dist/production/src/model/queries/stages/StageQueryFactory.js.map +1 -1
  354. package/dist/production/src/model/queries/stages/StagesQuery.cjs.map +1 -1
  355. package/dist/production/src/model/queries/stages/StagesQuery.js.map +1 -1
  356. package/dist/production/src/model/stages/StageCreator.cjs +0 -2
  357. package/dist/production/src/model/stages/StageCreator.cjs.map +1 -1
  358. package/dist/production/src/model/stages/StageCreator.js +0 -2
  359. package/dist/production/src/model/stages/StageCreator.js.map +1 -1
  360. package/dist/production/src/resolvers/ResolverFactory.cjs +1 -1
  361. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  362. package/dist/production/src/resolvers/ResolverFactory.js +2 -2
  363. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  364. package/dist/production/src/resolvers/SystemResolverContext.cjs.map +1 -1
  365. package/dist/production/src/resolvers/SystemResolverContext.js.map +1 -1
  366. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  367. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  368. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  369. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  370. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  371. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  372. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs +8 -6
  373. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  374. package/dist/production/src/resolvers/query/EventsQueryResolver.js +8 -6
  375. package/dist/production/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  376. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  377. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  378. package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -1
  379. package/dist/production/src/resolvers/query/SchemaQueryResolver.js.map +1 -1
  380. package/dist/production/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  381. package/dist/production/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  382. package/dist/production/src/resolvers/types/EventOldValuesResolver.cjs.map +1 -1
  383. package/dist/production/src/resolvers/types/EventOldValuesResolver.js.map +1 -1
  384. package/dist/production/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  385. package/dist/production/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  386. package/dist/production/src/schema/dev.graphql.cjs.map +1 -1
  387. package/dist/production/src/schema/system.graphql.cjs.map +1 -1
  388. package/dist/production/src/schema/types.cjs.map +1 -1
  389. package/dist/production/src/schema/types.js.map +1 -1
  390. package/dist/production/src/utils/MapSet.cjs.map +1 -1
  391. package/dist/production/src/utils/MapSet.js.map +1 -1
  392. package/dist/production/src/utils/Response.cjs.map +1 -1
  393. package/dist/production/src/utils/Response.js.map +1 -1
  394. package/dist/production/src/utils/assertNever.cjs.map +1 -1
  395. package/dist/production/src/utils/assertNever.js.map +1 -1
  396. package/dist/production/src/utils/batchQuery.cjs.map +1 -1
  397. package/dist/production/src/utils/batchQuery.js.map +1 -1
  398. package/dist/production/src/utils/tick.cjs.map +1 -1
  399. package/dist/production/src/utils/tick.js.map +1 -1
  400. package/dist/production/src/utils/tuple.cjs.map +1 -1
  401. package/dist/production/src/utils/tuple.js.map +1 -1
  402. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  403. package/dist/types/SystemContainer.d.ts.map +1 -1
  404. package/dist/types/index.d.ts +2 -2
  405. package/dist/types/index.d.ts.map +1 -1
  406. package/dist/types/migrations/2018-08-04-102200-init.d.ts.map +1 -1
  407. package/dist/types/migrations/2018-08-05-130501-trigger-event-function.d.ts.map +1 -1
  408. package/dist/types/migrations/2019-01-14-143432-event-trx-id.d.ts.map +1 -1
  409. package/dist/types/migrations/2019-02-04-154500-event-rebase.d.ts.map +1 -1
  410. package/dist/types/migrations/2019-03-18-104147-event-run-migration-struct.d.ts.map +1 -1
  411. package/dist/types/migrations/2019-07-29-103000-trigger-event-function-fix.d.ts.map +1 -1
  412. package/dist/types/migrations/2019-11-28-100000-missing-setting-fallback.d.ts.map +1 -1
  413. package/dist/types/migrations/2020-03-27-130000-project-migrations.d.ts.map +1 -1
  414. package/dist/types/migrations/2020-05-06-150000-composed-primary.d.ts.map +1 -1
  415. package/dist/types/migrations/2020-06-01-103000-event-trigger-perf.d.ts.map +1 -1
  416. package/dist/types/migrations/2021-03-23-110000-timestamp-fix.d.ts.map +1 -1
  417. package/dist/types/migrations/2021-05-07-155800-event-log-rework.d.ts.map +1 -1
  418. package/dist/types/migrations/2021-05-19-1232000-event-log-fix-constraint.d.ts.map +1 -1
  419. package/dist/types/migrations/2021-12-21-155500-events-up.d.ts.map +1 -1
  420. package/dist/types/migrations/2022-02-08-132600-fn-search-path.d.ts.map +1 -1
  421. package/dist/types/migrations/2022-02-08-140500-drop-deadcode.d.ts.map +1 -1
  422. package/dist/types/migrations/2022-02-08-144400-dynamic-stage-schema.d.ts.map +1 -1
  423. package/dist/types/migrations/2022-10-03-110000-table-on-delete.d.ts.map +1 -1
  424. package/dist/types/migrations/2023-09-11-174000-fix-on-delete.d.ts.map +1 -1
  425. package/dist/types/migrations/2023-10-19-173000-fix-unique.d.ts.map +1 -1
  426. package/dist/types/migrations/2023-10-24-140000-schema-nullable-checksum.d.ts.map +1 -1
  427. package/dist/types/migrations/2024-06-28-150000-migrations-drop-sequence.d.ts.map +1 -1
  428. package/dist/types/migrations/2024-06-28-153000-schema.d.ts.map +1 -1
  429. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts.map +1 -1
  430. package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts.map +1 -1
  431. package/dist/types/migrations/2025-03-14-110000-fix-missing-index.d.ts.map +1 -1
  432. package/dist/types/migrations/runner.d.ts.map +1 -1
  433. package/dist/types/migrations/snapshot-factory.d.ts.map +1 -1
  434. package/dist/types/model/ProjectInitializer.d.ts.map +1 -1
  435. package/dist/types/model/commands/Command.d.ts +1 -1
  436. package/dist/types/model/commands/Command.d.ts.map +1 -1
  437. package/dist/types/model/commands/CommandBus.d.ts.map +1 -1
  438. package/dist/types/model/commands/migrations/SaveMigrationCommand.d.ts.map +1 -1
  439. package/dist/types/model/dtos/ExecutedMigration.d.ts.map +1 -1
  440. package/dist/types/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts.map +1 -1
  441. package/dist/types/model/migrations/ProjectMigrator.d.ts +1 -0
  442. package/dist/types/model/migrations/ProjectMigrator.d.ts.map +1 -1
  443. package/dist/types/model/migrations/SchemaProvider.d.ts.map +1 -1
  444. package/dist/types/model/queries/events/EventsQuery.d.ts.map +1 -1
  445. package/dist/types/model/queries/schema/SchemaQuery.d.ts +2 -1
  446. package/dist/types/model/queries/schema/SchemaQuery.d.ts.map +1 -1
  447. package/dist/types/model/stages/StageCreator.d.ts +0 -1
  448. package/dist/types/model/stages/StageCreator.d.ts.map +1 -1
  449. package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
  450. package/dist/types/resolvers/SystemResolverContext.d.ts.map +1 -1
  451. package/dist/types/resolvers/mutation/MigrateMutationResolver.d.ts.map +1 -1
  452. package/dist/types/resolvers/mutation/MigrationAlterMutationResolver.d.ts.map +1 -1
  453. package/dist/types/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
  454. package/dist/types/schema/types.d.ts.map +1 -1
  455. package/dist/types/tsconfig.tsbuildinfo +1 -1
  456. package/graphql.codegen.yml +1 -1
  457. package/package.json +24 -19
  458. package/src/SystemContainer.ts +61 -56
  459. package/src/bin/runMigrations.ts +1 -5
  460. package/src/index.ts +5 -5
  461. package/src/migrations/2018-08-04-102200-init.ts +1 -1
  462. package/src/migrations/2018-08-05-130501-trigger-event-function.ts +1 -1
  463. package/src/migrations/2019-01-14-143432-event-trx-id.ts +1 -1
  464. package/src/migrations/2019-02-04-154500-event-rebase.ts +1 -1
  465. package/src/migrations/2019-03-18-104147-event-run-migration-struct.ts +1 -1
  466. package/src/migrations/2019-07-29-103000-trigger-event-function-fix.ts +1 -1
  467. package/src/migrations/2019-11-28-100000-missing-setting-fallback.ts +1 -1
  468. package/src/migrations/2020-03-27-130000-project-migrations.ts +1 -1
  469. package/src/migrations/2020-05-06-150000-composed-primary.ts +1 -1
  470. package/src/migrations/2020-06-01-103000-event-trigger-perf.ts +1 -1
  471. package/src/migrations/2021-03-23-110000-timestamp-fix.ts +1 -1
  472. package/src/migrations/2021-05-07-155800-event-log-rework.ts +1 -1
  473. package/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts +1 -1
  474. package/src/migrations/2021-12-21-155500-events-up.ts +1 -1
  475. package/src/migrations/2022-02-08-132600-fn-search-path.ts +1 -1
  476. package/src/migrations/2022-02-08-140500-drop-deadcode.ts +1 -1
  477. package/src/migrations/2022-02-08-144400-dynamic-stage-schema.ts +1 -1
  478. package/src/migrations/2022-10-03-110000-table-on-delete.ts +11 -7
  479. package/src/migrations/2023-09-11-174000-fix-on-delete.ts +14 -8
  480. package/src/migrations/2023-10-19-173000-fix-unique.ts +5 -4
  481. package/src/migrations/2023-10-24-140000-schema-nullable-checksum.ts +1 -1
  482. package/src/migrations/2024-06-28-150000-migrations-drop-sequence.ts +1 -1
  483. package/src/migrations/2024-06-28-153000-schema.ts +1 -1
  484. package/src/migrations/2024-06-28-153001-schema-init.ts +1 -2
  485. package/src/migrations/2024-07-29-150000-event-data-index.ts +1 -1
  486. package/src/migrations/2025-03-14-110000-fix-missing-index.ts +2 -3
  487. package/src/migrations/runner.ts +12 -12
  488. package/src/migrations/snapshot-factory.ts +0 -1
  489. package/src/model/ProjectInitializer.ts +19 -14
  490. package/src/model/commands/Command.ts +1 -1
  491. package/src/model/commands/CommandBus.ts +1 -3
  492. package/src/model/commands/migrations/SaveMigrationCommand.ts +1 -2
  493. package/src/model/database/DatabaseContext.ts +1 -2
  494. package/src/model/dtos/ExecutedMigration.ts +0 -1
  495. package/src/model/dtos/Stage.ts +0 -1
  496. package/src/model/events/types.ts +0 -1
  497. package/src/model/metadata/SchemaDatabaseMetadataResolverStore.ts +0 -2
  498. package/src/model/migrations/ProjectMigrator.ts +36 -20
  499. package/src/model/migrations/SchemaProvider.ts +6 -7
  500. package/src/model/queries/events/EventsQuery.ts +3 -7
  501. package/src/model/queries/events/OldValuesQuery.ts +4 -4
  502. package/src/model/queries/schema/SchemaQuery.ts +5 -3
  503. package/src/model/stages/StageCreator.ts +0 -2
  504. package/src/resolvers/ResolverFactory.ts +3 -4
  505. package/src/resolvers/SystemResolverContext.ts +3 -1
  506. package/src/resolvers/mutation/MigrateMutationResolver.ts +38 -37
  507. package/src/resolvers/mutation/MigrationAlterMutationResolver.ts +0 -1
  508. package/src/resolvers/query/EventsQueryResolver.ts +8 -6
  509. package/src/schema/types.ts +69 -43
  510. package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +10 -9
  511. package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +10 -10
  512. package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +32 -34
  513. package/tests/cases/migrations/2023-09-11-174000-fix-on-delete.test.ts +65 -67
  514. package/tests/cases/migrations/2023-10-19-173000-fix-unique.test.ts +23 -25
  515. package/tests/cases/migrations/2025-03-14-110000-fix-missing-index.test.ts +18 -19
  516. package/tests/cases/unit/eventsQuery.test.ts +22 -15
  517. package/tests/.eslintrc.cjs +0 -5
  518. package/vitest.config.ts +0 -3
@@ -42,7 +42,40 @@ class SystemContainerFactory {
42
42
  );
43
43
  }
44
44
  createBuilder({ identityFetcher }) {
45
- return new dic.Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new schemaMigrations.SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver.ExecutedMigrationsResolver()).addService("schemaProvider", ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider.SchemaProvider(executedMigrationsResolver, schemaMigrator)).addService("accessEvaluator", ({}) => new authorization.AccessEvaluator.PermissionEvaluator(new PermissionsFactory.PermissionsFactory().create())).addService("authorizator", ({ accessEvaluator }) => new authorization.Authorizator.Default(accessEvaluator)).addService("migrationDescriber", ({ modificationHandlerFactory }) => new schemaMigrations.MigrationDescriber(modificationHandlerFactory)).addService("databaseMetadataResolver", () => new Database.DatabaseMetadataResolver()).addService("migrationsDatabaseMetadataResolverStoreFactory", ({ databaseMetadataResolver }) => new SchemaDatabaseMetadataResolverStore.MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver)).addService("projectMigrator", ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new ProjectMigrator.ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor)).addService("projectTruncateExecutor", () => new ProjectTruncateExecutor.ProjectTruncateExecutor()).addService("migrationAlterer", ({ schemaProvider }) => new MigrationAlterer.MigrationAlterer(schemaProvider)).addService("eventResponseBuilder", ({ identityFetcher: identityFetcher2 }) => new EventResponseBuilder.EventResponseBuilder(identityFetcher2)).addService("stagesQueryResolver", () => new StagesQueryResolver.StagesQueryResolver()).addService("executedMigrationsQueryResolver", () => new ExecutedMigrationsQueryResolver.ExecutedMigrationsQueryResolver()).addService("migrateMutationResolver", ({ projectMigrator }) => new MigrateMutationResolver.MigrateMutationResolver(projectMigrator)).addService("truncateMutationResolver", ({ projectTruncateExecutor }) => new TruncateMutationResolver.TruncateMutationResolver(projectTruncateExecutor)).addService("migrationAlterMutationResolver", ({ migrationAlterer }) => new MigrationAlterMutationResolver.MigrationAlterMutationResolver(migrationAlterer)).addService("eventsQueryResolver", ({ eventResponseBuilder }) => new EventsQueryResolver.EventsQueryResolver(eventResponseBuilder)).addService("eventOldValuesResolver", () => new EventOldValuesResolver.EventOldValuesResolver()).addService("schemaQueryResolver", () => new SchemaQueryResolver.SchemaQueryResolver()).addService("systemResolversFactory", ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) => new ResolverFactory.ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver)).addService("resolverContextFactory", ({ authorizator }) => new SystemResolverContext.SystemResolverContextFactory(authorizator));
45
+ return new dic.Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new schemaMigrations.SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver.ExecutedMigrationsResolver()).addService("schemaProvider", ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider.SchemaProvider(executedMigrationsResolver, schemaMigrator)).addService("accessEvaluator", ({}) => new authorization.AccessEvaluator.PermissionEvaluator(new PermissionsFactory.PermissionsFactory().create())).addService("authorizator", ({ accessEvaluator }) => new authorization.Authorizator.Default(accessEvaluator)).addService("migrationDescriber", ({ modificationHandlerFactory }) => new schemaMigrations.MigrationDescriber(modificationHandlerFactory)).addService("databaseMetadataResolver", () => new Database.DatabaseMetadataResolver()).addService(
46
+ "migrationsDatabaseMetadataResolverStoreFactory",
47
+ ({ databaseMetadataResolver }) => new SchemaDatabaseMetadataResolverStore.MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver)
48
+ ).addService(
49
+ "projectMigrator",
50
+ ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new ProjectMigrator.ProjectMigrator(
51
+ migrationDescriber,
52
+ schemaProvider,
53
+ executedMigrationsResolver,
54
+ migrationsDatabaseMetadataResolverStoreFactory,
55
+ this.contentQueryExecutor
56
+ )
57
+ ).addService("projectTruncateExecutor", () => new ProjectTruncateExecutor.ProjectTruncateExecutor()).addService("migrationAlterer", ({ schemaProvider }) => new MigrationAlterer.MigrationAlterer(schemaProvider)).addService("eventResponseBuilder", ({ identityFetcher: identityFetcher2 }) => new EventResponseBuilder.EventResponseBuilder(identityFetcher2)).addService("stagesQueryResolver", () => new StagesQueryResolver.StagesQueryResolver()).addService("executedMigrationsQueryResolver", () => new ExecutedMigrationsQueryResolver.ExecutedMigrationsQueryResolver()).addService("migrateMutationResolver", ({ projectMigrator }) => new MigrateMutationResolver.MigrateMutationResolver(projectMigrator)).addService("truncateMutationResolver", ({ projectTruncateExecutor }) => new TruncateMutationResolver.TruncateMutationResolver(projectTruncateExecutor)).addService("migrationAlterMutationResolver", ({ migrationAlterer }) => new MigrationAlterMutationResolver.MigrationAlterMutationResolver(migrationAlterer)).addService("eventsQueryResolver", ({ eventResponseBuilder }) => new EventsQueryResolver.EventsQueryResolver(eventResponseBuilder)).addService("eventOldValuesResolver", () => new EventOldValuesResolver.EventOldValuesResolver()).addService("schemaQueryResolver", () => new SchemaQueryResolver.SchemaQueryResolver()).addService(
58
+ "systemResolversFactory",
59
+ ({
60
+ stagesQueryResolver,
61
+ executedMigrationsQueryResolver,
62
+ migrateMutationResolver,
63
+ truncateMutationResolver,
64
+ migrationAlterMutationResolver,
65
+ eventsQueryResolver,
66
+ eventOldValuesResolver,
67
+ schemaQueryResolver
68
+ }) => new ResolverFactory.ResolverFactory(
69
+ stagesQueryResolver,
70
+ executedMigrationsQueryResolver,
71
+ migrateMutationResolver,
72
+ truncateMutationResolver,
73
+ migrationAlterMutationResolver,
74
+ eventsQueryResolver,
75
+ eventOldValuesResolver,
76
+ schemaQueryResolver
77
+ )
78
+ ).addService("resolverContextFactory", ({ authorizator }) => new SystemResolverContext.SystemResolverContextFactory(authorizator));
46
79
  }
47
80
  }
48
81
  exports.SystemContainerFactory = SystemContainerFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"SystemContainer.cjs","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport {\n\tMigrationDescriber,\n\tModificationHandlerFactory,\n\tSchemaDiffer,\n\tSchemaMigrator,\n} from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n} from './model'\nimport { UuidProvider } from './utils'\nimport {\n\tEventsQueryResolver,\n\tExecutedMigrationsQueryResolver,\n\tMigrateMutationResolver,\n\tMigrationAlterMutationResolver,\n\tResolverFactory,\n\tStagesQueryResolver,\n\tSystemResolverContextFactory,\n\tTruncateMutationResolver,\n} from './resolvers'\nimport { EventOldValuesResolver } from './resolvers/types'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport { SchemaProvider } from './model'\nimport { SchemaQueryResolver } from './resolvers/query/SchemaQueryResolver'\n\nexport interface SystemContainer {\n\tsystemResolversFactory: ResolverFactory\n\tauthorizator: Authorizator\n\tresolverContextFactory: SystemResolverContextFactory\n\tschemaProvider: SchemaProvider\n}\n\ntype Args = {\n\tidentityFetcher: IdentityFetcher\n}\n\nexport class SystemContainerFactory {\n\tconstructor(\n\t\tprivate readonly providers: UuidProvider,\n\t\tprivate readonly modificationHandlerFactory: ModificationHandlerFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {\n\t}\n\n\tpublic create(container: Args): Container<SystemContainer> {\n\t\treturn this.createBuilder(container)\n\t\t\t.build()\n\t\t\t.pick(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t'authorizator',\n\t\t\t\t'resolverContextFactory',\n\t\t\t\t'schemaProvider',\n\t\t\t)\n\t}\n\tpublic createBuilder({ identityFetcher }: Args) {\n\t\treturn new Builder({})\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('modificationHandlerFactory', () =>\n\t\t\t\tthis.modificationHandlerFactory)\n\t\t\t.addService('identityFetcher', () =>\n\t\t\t\tidentityFetcher)\n\t\t\t.addService('schemaMigrator', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew SchemaMigrator(modificationHandlerFactory))\n\t\t\t.addService('executedMigrationsResolver', ({}) =>\n\t\t\t\tnew ExecutedMigrationsResolver())\n\t\t\t.addService('schemaProvider', ({ executedMigrationsResolver, schemaMigrator }) =>\n\t\t\t\tnew SchemaProvider(executedMigrationsResolver, schemaMigrator))\n\t\t\t.addService('accessEvaluator', ({}) =>\n\t\t\t\tnew AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create()))\n\t\t\t.addService('authorizator', ({ accessEvaluator }): Authorizator =>\n\t\t\t\tnew Authorizator.Default(accessEvaluator))\n\t\t\t.addService('migrationDescriber', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew MigrationDescriber(modificationHandlerFactory))\n\t\t\t.addService('databaseMetadataResolver', () =>\n\t\t\t\tnew DatabaseMetadataResolver())\n\t\t\t.addService('migrationsDatabaseMetadataResolverStoreFactory', ({ databaseMetadataResolver }) =>\n\t\t\t\tnew MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver))\n\t\t\t.addService('projectMigrator', ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) =>\n\t\t\t\tnew ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor))\n\t\t\t.addService('projectTruncateExecutor', () =>\n\t\t\t\tnew ProjectTruncateExecutor())\n\t\t\t.addService('migrationAlterer', ({ schemaProvider }) =>\n\t\t\t\tnew MigrationAlterer(schemaProvider))\n\t\t\t.addService('eventResponseBuilder', ({ identityFetcher }) =>\n\t\t\t\tnew EventResponseBuilder(identityFetcher))\n\t\t\t.addService('stagesQueryResolver', () =>\n\t\t\t\tnew StagesQueryResolver())\n\t\t\t.addService('executedMigrationsQueryResolver', () =>\n\t\t\t\tnew ExecutedMigrationsQueryResolver())\n\t\t\t.addService('migrateMutationResolver', ({ projectMigrator }) =>\n\t\t\t\tnew MigrateMutationResolver(projectMigrator))\n\t\t\t.addService('truncateMutationResolver', ({ projectTruncateExecutor }) =>\n\t\t\t\tnew TruncateMutationResolver(projectTruncateExecutor))\n\t\t\t.addService('migrationAlterMutationResolver', ({ migrationAlterer }) =>\n\t\t\t\tnew MigrationAlterMutationResolver(migrationAlterer))\n\t\t\t.addService('eventsQueryResolver', ({ eventResponseBuilder }) =>\n\t\t\t\tnew EventsQueryResolver(eventResponseBuilder))\n\t\t\t.addService('eventOldValuesResolver', () =>\n\t\t\t\tnew EventOldValuesResolver())\n\t\t\t.addService('schemaQueryResolver', () =>\n\t\t\t\tnew SchemaQueryResolver())\n\t\t\t.addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) =>\n\t\t\t\tnew ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver))\n\t\t\t.addService('resolverContextFactory', ({ authorizator }) =>\n\t\t\t\tnew SystemResolverContextFactory(authorizator))\n\t}\n}\n"],"names":["Builder","SchemaMigrator","ExecutedMigrationsResolver","SchemaProvider","AccessEvaluator","PermissionsFactory","Authorizator","MigrationDescriber","DatabaseMetadataResolver","MigrationsDatabaseMetadataResolverStoreFactory","ProjectMigrator","ProjectTruncateExecutor","MigrationAlterer","identityFetcher","EventResponseBuilder","StagesQueryResolver","ExecutedMigrationsQueryResolver","MigrateMutationResolver","TruncateMutationResolver","MigrationAlterMutationResolver","EventsQueryResolver","EventOldValuesResolver","SchemaQueryResolver","ResolverFactory","SystemResolverContextFactory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CO,MAAM,uBAAuB;AAAA,EACnC,YACkB,WACA,4BACA,sBAChB;AAHgB,SAAA,YAAA;AACA,SAAA,6BAAA;AACA,SAAA,uBAAA;AAAA,EAAA;AAAA,EAIX,OAAO,WAA6C;AAC1D,WAAO,KAAK,cAAc,SAAS,EACjC,MACA,EAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EAAA;AAAA,EAEK,cAAc,EAAE,mBAAyB;AAC/C,WAAO,IAAIA,IAAA,QAAQ,EAAE,EACnB,WAAW,aAAa,MACxB,KAAK,SAAS,EACd,WAAW,8BAA8B,MACzC,KAAK,0BAA0B,EAC/B,WAAW,mBAAmB,MAC9B,eAAe,EACf,WAAW,kBAAkB,CAAC,EAAE,2BAA2B,MAC3D,IAAIC,iBAAAA,eAAe,0BAA0B,CAAC,EAC9C,WAAW,8BAA8B,CAAC,CAAA,MAC1C,IAAIC,2BAAAA,4BAA4B,EAChC,WAAW,kBAAkB,CAAC,EAAE,4BAA4B,eAAA,MAC5D,IAAIC,eAAAA,eAAe,4BAA4B,cAAc,CAAC,EAC9D,WAAW,mBAAmB,CAAC,CAAA,MAC/B,IAAIC,cAAAA,gBAAgB,oBAAoB,IAAIC,mBAAAA,mBAAqB,EAAA,OAAQ,CAAA,CAAC,EAC1E,WAAW,gBAAgB,CAAC,EAAE,sBAC9B,IAAIC,2BAAa,QAAQ,eAAe,CAAC,EACzC,WAAW,sBAAsB,CAAC,EAAE,2BAA2B,MAC/D,IAAIC,iBAAAA,mBAAmB,0BAA0B,CAAC,EAClD,WAAW,4BAA4B,MACvC,IAAIC,SAAyB,yBAAA,CAAC,EAC9B,WAAW,kDAAkD,CAAC,EAAE,yBAAA,MAChE,IAAIC,oCAAAA,+CAA+C,wBAAwB,CAAC,EAC5E,WAAW,mBAAmB,CAAC,EAAE,oBAAoB,gBAAgB,4BAA4B,+CAA+C,MAChJ,IAAIC,gBAAAA,gBAAgB,oBAAoB,gBAAgB,4BAA4B,gDAAgD,KAAK,oBAAoB,CAAC,EAC9J,WAAW,2BAA2B,MACtC,IAAIC,wBAAA,wBAAA,CAAyB,EAC7B,WAAW,oBAAoB,CAAC,EAAE,qBAClC,IAAIC,kCAAiB,cAAc,CAAC,EACpC,WAAW,wBAAwB,CAAC,EAAE,iBAAAC,iBAAgB,MACtD,IAAIC,qBAAAA,qBAAqBD,gBAAe,CAAC,EACzC,WAAW,uBAAuB,MAClC,IAAIE,oBAAAA,oBAAqB,CAAA,EACzB,WAAW,mCAAmC,MAC9C,IAAIC,gCAAAA,iCAAiC,EACrC,WAAW,2BAA2B,CAAC,EAAE,gBAAgB,MACzD,IAAIC,wBAAwB,wBAAA,eAAe,CAAC,EAC5C,WAAW,4BAA4B,CAAC,EAAE,wBAAwB,MAClE,IAAIC,yBAAAA,yBAAyB,uBAAuB,CAAC,EACrD,WAAW,kCAAkC,CAAC,EAAE,iBAAiB,MACjE,IAAIC,8DAA+B,gBAAgB,CAAC,EACpD,WAAW,uBAAuB,CAAC,EAAE,qBACrC,MAAA,IAAIC,wCAAoB,oBAAoB,CAAC,EAC7C,WAAW,0BAA0B,MACrC,IAAIC,8CAAwB,CAAA,EAC5B,WAAW,uBAAuB,MAClC,IAAIC,wCAAqB,CAAA,EACzB,WAAW,0BAA0B,CAAC,EAAE,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,0BAC9N,IAAIC,gCAAgB,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,mBAAmB,CAAC,EAC9N,WAAW,0BAA0B,CAAC,EAAE,aAAa,MACrD,IAAIC,sBAAA,6BAA6B,YAAY,CAAC;AAAA,EAAA;AAElD;;"}
1
+ {"version":3,"file":"SystemContainer.cjs","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport { MigrationDescriber, ModificationHandlerFactory, SchemaDiffer, SchemaMigrator } from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n} from './model'\nimport { UuidProvider } from './utils'\nimport {\n\tEventsQueryResolver,\n\tExecutedMigrationsQueryResolver,\n\tMigrateMutationResolver,\n\tMigrationAlterMutationResolver,\n\tResolverFactory,\n\tStagesQueryResolver,\n\tSystemResolverContextFactory,\n\tTruncateMutationResolver,\n} from './resolvers'\nimport { EventOldValuesResolver } from './resolvers/types'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport { SchemaProvider } from './model'\nimport { SchemaQueryResolver } from './resolvers/query/SchemaQueryResolver'\n\nexport interface SystemContainer {\n\tsystemResolversFactory: ResolverFactory\n\tauthorizator: Authorizator\n\tresolverContextFactory: SystemResolverContextFactory\n\tschemaProvider: SchemaProvider\n}\n\ntype Args = {\n\tidentityFetcher: IdentityFetcher\n}\n\nexport class SystemContainerFactory {\n\tconstructor(\n\t\tprivate readonly providers: UuidProvider,\n\t\tprivate readonly modificationHandlerFactory: ModificationHandlerFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {\n\t}\n\n\tpublic create(container: Args): Container<SystemContainer> {\n\t\treturn this.createBuilder(container)\n\t\t\t.build()\n\t\t\t.pick(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t'authorizator',\n\t\t\t\t'resolverContextFactory',\n\t\t\t\t'schemaProvider',\n\t\t\t)\n\t}\n\tpublic createBuilder({ identityFetcher }: Args) {\n\t\treturn new Builder({})\n\t\t\t.addService('providers', () => this.providers)\n\t\t\t.addService('modificationHandlerFactory', () => this.modificationHandlerFactory)\n\t\t\t.addService('identityFetcher', () => identityFetcher)\n\t\t\t.addService('schemaMigrator', ({ modificationHandlerFactory }) => new SchemaMigrator(modificationHandlerFactory))\n\t\t\t.addService('executedMigrationsResolver', ({}) => new ExecutedMigrationsResolver())\n\t\t\t.addService('schemaProvider', ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider(executedMigrationsResolver, schemaMigrator))\n\t\t\t.addService('accessEvaluator', ({}) => new AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create()))\n\t\t\t.addService('authorizator', ({ accessEvaluator }): Authorizator => new Authorizator.Default(accessEvaluator))\n\t\t\t.addService('migrationDescriber', ({ modificationHandlerFactory }) => new MigrationDescriber(modificationHandlerFactory))\n\t\t\t.addService('databaseMetadataResolver', () => new DatabaseMetadataResolver())\n\t\t\t.addService(\n\t\t\t\t'migrationsDatabaseMetadataResolverStoreFactory',\n\t\t\t\t({ databaseMetadataResolver }) => new MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver),\n\t\t\t)\n\t\t\t.addService(\n\t\t\t\t'projectMigrator',\n\t\t\t\t({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) =>\n\t\t\t\t\tnew ProjectMigrator(\n\t\t\t\t\t\tmigrationDescriber,\n\t\t\t\t\t\tschemaProvider,\n\t\t\t\t\t\texecutedMigrationsResolver,\n\t\t\t\t\t\tmigrationsDatabaseMetadataResolverStoreFactory,\n\t\t\t\t\t\tthis.contentQueryExecutor,\n\t\t\t\t\t),\n\t\t\t)\n\t\t\t.addService('projectTruncateExecutor', () => new ProjectTruncateExecutor())\n\t\t\t.addService('migrationAlterer', ({ schemaProvider }) => new MigrationAlterer(schemaProvider))\n\t\t\t.addService('eventResponseBuilder', ({ identityFetcher }) => new EventResponseBuilder(identityFetcher))\n\t\t\t.addService('stagesQueryResolver', () => new StagesQueryResolver())\n\t\t\t.addService('executedMigrationsQueryResolver', () => new ExecutedMigrationsQueryResolver())\n\t\t\t.addService('migrateMutationResolver', ({ projectMigrator }) => new MigrateMutationResolver(projectMigrator))\n\t\t\t.addService('truncateMutationResolver', ({ projectTruncateExecutor }) => new TruncateMutationResolver(projectTruncateExecutor))\n\t\t\t.addService('migrationAlterMutationResolver', ({ migrationAlterer }) => new MigrationAlterMutationResolver(migrationAlterer))\n\t\t\t.addService('eventsQueryResolver', ({ eventResponseBuilder }) => new EventsQueryResolver(eventResponseBuilder))\n\t\t\t.addService('eventOldValuesResolver', () => new EventOldValuesResolver())\n\t\t\t.addService('schemaQueryResolver', () => new SchemaQueryResolver())\n\t\t\t.addService(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t({\n\t\t\t\t\tstagesQueryResolver,\n\t\t\t\t\texecutedMigrationsQueryResolver,\n\t\t\t\t\tmigrateMutationResolver,\n\t\t\t\t\ttruncateMutationResolver,\n\t\t\t\t\tmigrationAlterMutationResolver,\n\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\teventOldValuesResolver,\n\t\t\t\t\tschemaQueryResolver,\n\t\t\t\t}) =>\n\t\t\t\t\tnew ResolverFactory(\n\t\t\t\t\t\tstagesQueryResolver,\n\t\t\t\t\t\texecutedMigrationsQueryResolver,\n\t\t\t\t\t\tmigrateMutationResolver,\n\t\t\t\t\t\ttruncateMutationResolver,\n\t\t\t\t\t\tmigrationAlterMutationResolver,\n\t\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\t\teventOldValuesResolver,\n\t\t\t\t\t\tschemaQueryResolver,\n\t\t\t\t\t),\n\t\t\t)\n\t\t\t.addService('resolverContextFactory', ({ authorizator }) => new SystemResolverContextFactory(authorizator))\n\t}\n}\n"],"names":["Builder","SchemaMigrator","ExecutedMigrationsResolver","SchemaProvider","AccessEvaluator","PermissionsFactory","Authorizator","MigrationDescriber","DatabaseMetadataResolver","MigrationsDatabaseMetadataResolverStoreFactory","ProjectMigrator","ProjectTruncateExecutor","MigrationAlterer","identityFetcher","EventResponseBuilder","StagesQueryResolver","ExecutedMigrationsQueryResolver","MigrateMutationResolver","TruncateMutationResolver","MigrationAlterMutationResolver","EventsQueryResolver","EventOldValuesResolver","SchemaQueryResolver","ResolverFactory","SystemResolverContextFactory"],"mappings":"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"}
@@ -40,7 +40,40 @@ class SystemContainerFactory {
40
40
  );
41
41
  }
42
42
  createBuilder({ identityFetcher }) {
43
- return new Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver()).addService("schemaProvider", ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider(executedMigrationsResolver, schemaMigrator)).addService("accessEvaluator", ({}) => new AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create())).addService("authorizator", ({ accessEvaluator }) => new Authorizator.Default(accessEvaluator)).addService("migrationDescriber", ({ modificationHandlerFactory }) => new MigrationDescriber(modificationHandlerFactory)).addService("databaseMetadataResolver", () => new DatabaseMetadataResolver()).addService("migrationsDatabaseMetadataResolverStoreFactory", ({ databaseMetadataResolver }) => new MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver)).addService("projectMigrator", ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor)).addService("projectTruncateExecutor", () => new ProjectTruncateExecutor()).addService("migrationAlterer", ({ schemaProvider }) => new MigrationAlterer(schemaProvider)).addService("eventResponseBuilder", ({ identityFetcher: identityFetcher2 }) => new EventResponseBuilder(identityFetcher2)).addService("stagesQueryResolver", () => new StagesQueryResolver()).addService("executedMigrationsQueryResolver", () => new ExecutedMigrationsQueryResolver()).addService("migrateMutationResolver", ({ projectMigrator }) => new MigrateMutationResolver(projectMigrator)).addService("truncateMutationResolver", ({ projectTruncateExecutor }) => new TruncateMutationResolver(projectTruncateExecutor)).addService("migrationAlterMutationResolver", ({ migrationAlterer }) => new MigrationAlterMutationResolver(migrationAlterer)).addService("eventsQueryResolver", ({ eventResponseBuilder }) => new EventsQueryResolver(eventResponseBuilder)).addService("eventOldValuesResolver", () => new EventOldValuesResolver()).addService("schemaQueryResolver", () => new SchemaQueryResolver()).addService("systemResolversFactory", ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) => new ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver)).addService("resolverContextFactory", ({ authorizator }) => new SystemResolverContextFactory(authorizator));
43
+ return new Builder({}).addService("providers", () => this.providers).addService("modificationHandlerFactory", () => this.modificationHandlerFactory).addService("identityFetcher", () => identityFetcher).addService("schemaMigrator", ({ modificationHandlerFactory }) => new SchemaMigrator(modificationHandlerFactory)).addService("executedMigrationsResolver", ({}) => new ExecutedMigrationsResolver()).addService("schemaProvider", ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider(executedMigrationsResolver, schemaMigrator)).addService("accessEvaluator", ({}) => new AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create())).addService("authorizator", ({ accessEvaluator }) => new Authorizator.Default(accessEvaluator)).addService("migrationDescriber", ({ modificationHandlerFactory }) => new MigrationDescriber(modificationHandlerFactory)).addService("databaseMetadataResolver", () => new DatabaseMetadataResolver()).addService(
44
+ "migrationsDatabaseMetadataResolverStoreFactory",
45
+ ({ databaseMetadataResolver }) => new MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver)
46
+ ).addService(
47
+ "projectMigrator",
48
+ ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) => new ProjectMigrator(
49
+ migrationDescriber,
50
+ schemaProvider,
51
+ executedMigrationsResolver,
52
+ migrationsDatabaseMetadataResolverStoreFactory,
53
+ this.contentQueryExecutor
54
+ )
55
+ ).addService("projectTruncateExecutor", () => new ProjectTruncateExecutor()).addService("migrationAlterer", ({ schemaProvider }) => new MigrationAlterer(schemaProvider)).addService("eventResponseBuilder", ({ identityFetcher: identityFetcher2 }) => new EventResponseBuilder(identityFetcher2)).addService("stagesQueryResolver", () => new StagesQueryResolver()).addService("executedMigrationsQueryResolver", () => new ExecutedMigrationsQueryResolver()).addService("migrateMutationResolver", ({ projectMigrator }) => new MigrateMutationResolver(projectMigrator)).addService("truncateMutationResolver", ({ projectTruncateExecutor }) => new TruncateMutationResolver(projectTruncateExecutor)).addService("migrationAlterMutationResolver", ({ migrationAlterer }) => new MigrationAlterMutationResolver(migrationAlterer)).addService("eventsQueryResolver", ({ eventResponseBuilder }) => new EventsQueryResolver(eventResponseBuilder)).addService("eventOldValuesResolver", () => new EventOldValuesResolver()).addService("schemaQueryResolver", () => new SchemaQueryResolver()).addService(
56
+ "systemResolversFactory",
57
+ ({
58
+ stagesQueryResolver,
59
+ executedMigrationsQueryResolver,
60
+ migrateMutationResolver,
61
+ truncateMutationResolver,
62
+ migrationAlterMutationResolver,
63
+ eventsQueryResolver,
64
+ eventOldValuesResolver,
65
+ schemaQueryResolver
66
+ }) => new ResolverFactory(
67
+ stagesQueryResolver,
68
+ executedMigrationsQueryResolver,
69
+ migrateMutationResolver,
70
+ truncateMutationResolver,
71
+ migrationAlterMutationResolver,
72
+ eventsQueryResolver,
73
+ eventOldValuesResolver,
74
+ schemaQueryResolver
75
+ )
76
+ ).addService("resolverContextFactory", ({ authorizator }) => new SystemResolverContextFactory(authorizator));
44
77
  }
45
78
  }
46
79
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"SystemContainer.js","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport {\n\tMigrationDescriber,\n\tModificationHandlerFactory,\n\tSchemaDiffer,\n\tSchemaMigrator,\n} from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n} from './model'\nimport { UuidProvider } from './utils'\nimport {\n\tEventsQueryResolver,\n\tExecutedMigrationsQueryResolver,\n\tMigrateMutationResolver,\n\tMigrationAlterMutationResolver,\n\tResolverFactory,\n\tStagesQueryResolver,\n\tSystemResolverContextFactory,\n\tTruncateMutationResolver,\n} from './resolvers'\nimport { EventOldValuesResolver } from './resolvers/types'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport { SchemaProvider } from './model'\nimport { SchemaQueryResolver } from './resolvers/query/SchemaQueryResolver'\n\nexport interface SystemContainer {\n\tsystemResolversFactory: ResolverFactory\n\tauthorizator: Authorizator\n\tresolverContextFactory: SystemResolverContextFactory\n\tschemaProvider: SchemaProvider\n}\n\ntype Args = {\n\tidentityFetcher: IdentityFetcher\n}\n\nexport class SystemContainerFactory {\n\tconstructor(\n\t\tprivate readonly providers: UuidProvider,\n\t\tprivate readonly modificationHandlerFactory: ModificationHandlerFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {\n\t}\n\n\tpublic create(container: Args): Container<SystemContainer> {\n\t\treturn this.createBuilder(container)\n\t\t\t.build()\n\t\t\t.pick(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t'authorizator',\n\t\t\t\t'resolverContextFactory',\n\t\t\t\t'schemaProvider',\n\t\t\t)\n\t}\n\tpublic createBuilder({ identityFetcher }: Args) {\n\t\treturn new Builder({})\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('modificationHandlerFactory', () =>\n\t\t\t\tthis.modificationHandlerFactory)\n\t\t\t.addService('identityFetcher', () =>\n\t\t\t\tidentityFetcher)\n\t\t\t.addService('schemaMigrator', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew SchemaMigrator(modificationHandlerFactory))\n\t\t\t.addService('executedMigrationsResolver', ({}) =>\n\t\t\t\tnew ExecutedMigrationsResolver())\n\t\t\t.addService('schemaProvider', ({ executedMigrationsResolver, schemaMigrator }) =>\n\t\t\t\tnew SchemaProvider(executedMigrationsResolver, schemaMigrator))\n\t\t\t.addService('accessEvaluator', ({}) =>\n\t\t\t\tnew AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create()))\n\t\t\t.addService('authorizator', ({ accessEvaluator }): Authorizator =>\n\t\t\t\tnew Authorizator.Default(accessEvaluator))\n\t\t\t.addService('migrationDescriber', ({ modificationHandlerFactory }) =>\n\t\t\t\tnew MigrationDescriber(modificationHandlerFactory))\n\t\t\t.addService('databaseMetadataResolver', () =>\n\t\t\t\tnew DatabaseMetadataResolver())\n\t\t\t.addService('migrationsDatabaseMetadataResolverStoreFactory', ({ databaseMetadataResolver }) =>\n\t\t\t\tnew MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver))\n\t\t\t.addService('projectMigrator', ({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) =>\n\t\t\t\tnew ProjectMigrator(migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory, this.contentQueryExecutor))\n\t\t\t.addService('projectTruncateExecutor', () =>\n\t\t\t\tnew ProjectTruncateExecutor())\n\t\t\t.addService('migrationAlterer', ({ schemaProvider }) =>\n\t\t\t\tnew MigrationAlterer(schemaProvider))\n\t\t\t.addService('eventResponseBuilder', ({ identityFetcher }) =>\n\t\t\t\tnew EventResponseBuilder(identityFetcher))\n\t\t\t.addService('stagesQueryResolver', () =>\n\t\t\t\tnew StagesQueryResolver())\n\t\t\t.addService('executedMigrationsQueryResolver', () =>\n\t\t\t\tnew ExecutedMigrationsQueryResolver())\n\t\t\t.addService('migrateMutationResolver', ({ projectMigrator }) =>\n\t\t\t\tnew MigrateMutationResolver(projectMigrator))\n\t\t\t.addService('truncateMutationResolver', ({ projectTruncateExecutor }) =>\n\t\t\t\tnew TruncateMutationResolver(projectTruncateExecutor))\n\t\t\t.addService('migrationAlterMutationResolver', ({ migrationAlterer }) =>\n\t\t\t\tnew MigrationAlterMutationResolver(migrationAlterer))\n\t\t\t.addService('eventsQueryResolver', ({ eventResponseBuilder }) =>\n\t\t\t\tnew EventsQueryResolver(eventResponseBuilder))\n\t\t\t.addService('eventOldValuesResolver', () =>\n\t\t\t\tnew EventOldValuesResolver())\n\t\t\t.addService('schemaQueryResolver', () =>\n\t\t\t\tnew SchemaQueryResolver())\n\t\t\t.addService('systemResolversFactory', ({ stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver }) =>\n\t\t\t\tnew ResolverFactory(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver))\n\t\t\t.addService('resolverContextFactory', ({ authorizator }) =>\n\t\t\t\tnew SystemResolverContextFactory(authorizator))\n\t}\n}\n"],"names":["identityFetcher"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CO,MAAM,uBAAuB;AAAA,EACnC,YACkB,WACA,4BACA,sBAChB;AAHgB,SAAA,YAAA;AACA,SAAA,6BAAA;AACA,SAAA,uBAAA;AAAA,EAAA;AAAA,EAIX,OAAO,WAA6C;AAC1D,WAAO,KAAK,cAAc,SAAS,EACjC,MACA,EAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EAAA;AAAA,EAEK,cAAc,EAAE,mBAAyB;AAC/C,WAAO,IAAI,QAAQ,EAAE,EACnB,WAAW,aAAa,MACxB,KAAK,SAAS,EACd,WAAW,8BAA8B,MACzC,KAAK,0BAA0B,EAC/B,WAAW,mBAAmB,MAC9B,eAAe,EACf,WAAW,kBAAkB,CAAC,EAAE,2BAA2B,MAC3D,IAAI,eAAe,0BAA0B,CAAC,EAC9C,WAAW,8BAA8B,CAAC,CAAA,MAC1C,IAAI,4BAA4B,EAChC,WAAW,kBAAkB,CAAC,EAAE,4BAA4B,eAAA,MAC5D,IAAI,eAAe,4BAA4B,cAAc,CAAC,EAC9D,WAAW,mBAAmB,CAAC,CAAA,MAC/B,IAAI,gBAAgB,oBAAoB,IAAI,mBAAqB,EAAA,OAAQ,CAAA,CAAC,EAC1E,WAAW,gBAAgB,CAAC,EAAE,sBAC9B,IAAI,aAAa,QAAQ,eAAe,CAAC,EACzC,WAAW,sBAAsB,CAAC,EAAE,2BAA2B,MAC/D,IAAI,mBAAmB,0BAA0B,CAAC,EAClD,WAAW,4BAA4B,MACvC,IAAI,yBAAyB,CAAC,EAC9B,WAAW,kDAAkD,CAAC,EAAE,yBAAA,MAChE,IAAI,+CAA+C,wBAAwB,CAAC,EAC5E,WAAW,mBAAmB,CAAC,EAAE,oBAAoB,gBAAgB,4BAA4B,+CAA+C,MAChJ,IAAI,gBAAgB,oBAAoB,gBAAgB,4BAA4B,gDAAgD,KAAK,oBAAoB,CAAC,EAC9J,WAAW,2BAA2B,MACtC,IAAI,wBAAA,CAAyB,EAC7B,WAAW,oBAAoB,CAAC,EAAE,qBAClC,IAAI,iBAAiB,cAAc,CAAC,EACpC,WAAW,wBAAwB,CAAC,EAAE,iBAAAA,iBAAgB,MACtD,IAAI,qBAAqBA,gBAAe,CAAC,EACzC,WAAW,uBAAuB,MAClC,IAAI,oBAAqB,CAAA,EACzB,WAAW,mCAAmC,MAC9C,IAAI,iCAAiC,EACrC,WAAW,2BAA2B,CAAC,EAAE,gBAAgB,MACzD,IAAI,wBAAwB,eAAe,CAAC,EAC5C,WAAW,4BAA4B,CAAC,EAAE,wBAAwB,MAClE,IAAI,yBAAyB,uBAAuB,CAAC,EACrD,WAAW,kCAAkC,CAAC,EAAE,iBAAiB,MACjE,IAAI,+BAA+B,gBAAgB,CAAC,EACpD,WAAW,uBAAuB,CAAC,EAAE,qBACrC,MAAA,IAAI,oBAAoB,oBAAoB,CAAC,EAC7C,WAAW,0BAA0B,MACrC,IAAI,uBAAwB,CAAA,EAC5B,WAAW,uBAAuB,MAClC,IAAI,oBAAqB,CAAA,EACzB,WAAW,0BAA0B,CAAC,EAAE,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,0BAC9N,IAAI,gBAAgB,qBAAqB,iCAAiC,yBAAyB,0BAA0B,gCAAgC,qBAAqB,wBAAwB,mBAAmB,CAAC,EAC9N,WAAW,0BAA0B,CAAC,EAAE,aAAa,MACrD,IAAI,6BAA6B,YAAY,CAAC;AAAA,EAAA;AAElD;"}
1
+ {"version":3,"file":"SystemContainer.js","sources":["../../../../packages/engine-system-api/src/SystemContainer.ts"],"sourcesContent":["import { AccessEvaluator, Authorizator } from '@contember/authorization'\nimport { Builder, Container } from '@contember/dic'\nimport { MigrationDescriber, ModificationHandlerFactory, SchemaDiffer, SchemaMigrator } from '@contember/schema-migrations'\nimport {\n\tContentQueryExecutor,\n\tEventResponseBuilder,\n\tExecutedMigrationsResolver,\n\tIdentityFetcher,\n\tMigrationAlterer,\n\tMigrationsDatabaseMetadataResolverStoreFactory,\n\tPermissionsFactory,\n\tProjectMigrator,\n\tProjectTruncateExecutor,\n} from './model'\nimport { UuidProvider } from './utils'\nimport {\n\tEventsQueryResolver,\n\tExecutedMigrationsQueryResolver,\n\tMigrateMutationResolver,\n\tMigrationAlterMutationResolver,\n\tResolverFactory,\n\tStagesQueryResolver,\n\tSystemResolverContextFactory,\n\tTruncateMutationResolver,\n} from './resolvers'\nimport { EventOldValuesResolver } from './resolvers/types'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport { SchemaProvider } from './model'\nimport { SchemaQueryResolver } from './resolvers/query/SchemaQueryResolver'\n\nexport interface SystemContainer {\n\tsystemResolversFactory: ResolverFactory\n\tauthorizator: Authorizator\n\tresolverContextFactory: SystemResolverContextFactory\n\tschemaProvider: SchemaProvider\n}\n\ntype Args = {\n\tidentityFetcher: IdentityFetcher\n}\n\nexport class SystemContainerFactory {\n\tconstructor(\n\t\tprivate readonly providers: UuidProvider,\n\t\tprivate readonly modificationHandlerFactory: ModificationHandlerFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {\n\t}\n\n\tpublic create(container: Args): Container<SystemContainer> {\n\t\treturn this.createBuilder(container)\n\t\t\t.build()\n\t\t\t.pick(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t'authorizator',\n\t\t\t\t'resolverContextFactory',\n\t\t\t\t'schemaProvider',\n\t\t\t)\n\t}\n\tpublic createBuilder({ identityFetcher }: Args) {\n\t\treturn new Builder({})\n\t\t\t.addService('providers', () => this.providers)\n\t\t\t.addService('modificationHandlerFactory', () => this.modificationHandlerFactory)\n\t\t\t.addService('identityFetcher', () => identityFetcher)\n\t\t\t.addService('schemaMigrator', ({ modificationHandlerFactory }) => new SchemaMigrator(modificationHandlerFactory))\n\t\t\t.addService('executedMigrationsResolver', ({}) => new ExecutedMigrationsResolver())\n\t\t\t.addService('schemaProvider', ({ executedMigrationsResolver, schemaMigrator }) => new SchemaProvider(executedMigrationsResolver, schemaMigrator))\n\t\t\t.addService('accessEvaluator', ({}) => new AccessEvaluator.PermissionEvaluator(new PermissionsFactory().create()))\n\t\t\t.addService('authorizator', ({ accessEvaluator }): Authorizator => new Authorizator.Default(accessEvaluator))\n\t\t\t.addService('migrationDescriber', ({ modificationHandlerFactory }) => new MigrationDescriber(modificationHandlerFactory))\n\t\t\t.addService('databaseMetadataResolver', () => new DatabaseMetadataResolver())\n\t\t\t.addService(\n\t\t\t\t'migrationsDatabaseMetadataResolverStoreFactory',\n\t\t\t\t({ databaseMetadataResolver }) => new MigrationsDatabaseMetadataResolverStoreFactory(databaseMetadataResolver),\n\t\t\t)\n\t\t\t.addService(\n\t\t\t\t'projectMigrator',\n\t\t\t\t({ migrationDescriber, schemaProvider, executedMigrationsResolver, migrationsDatabaseMetadataResolverStoreFactory }) =>\n\t\t\t\t\tnew ProjectMigrator(\n\t\t\t\t\t\tmigrationDescriber,\n\t\t\t\t\t\tschemaProvider,\n\t\t\t\t\t\texecutedMigrationsResolver,\n\t\t\t\t\t\tmigrationsDatabaseMetadataResolverStoreFactory,\n\t\t\t\t\t\tthis.contentQueryExecutor,\n\t\t\t\t\t),\n\t\t\t)\n\t\t\t.addService('projectTruncateExecutor', () => new ProjectTruncateExecutor())\n\t\t\t.addService('migrationAlterer', ({ schemaProvider }) => new MigrationAlterer(schemaProvider))\n\t\t\t.addService('eventResponseBuilder', ({ identityFetcher }) => new EventResponseBuilder(identityFetcher))\n\t\t\t.addService('stagesQueryResolver', () => new StagesQueryResolver())\n\t\t\t.addService('executedMigrationsQueryResolver', () => new ExecutedMigrationsQueryResolver())\n\t\t\t.addService('migrateMutationResolver', ({ projectMigrator }) => new MigrateMutationResolver(projectMigrator))\n\t\t\t.addService('truncateMutationResolver', ({ projectTruncateExecutor }) => new TruncateMutationResolver(projectTruncateExecutor))\n\t\t\t.addService('migrationAlterMutationResolver', ({ migrationAlterer }) => new MigrationAlterMutationResolver(migrationAlterer))\n\t\t\t.addService('eventsQueryResolver', ({ eventResponseBuilder }) => new EventsQueryResolver(eventResponseBuilder))\n\t\t\t.addService('eventOldValuesResolver', () => new EventOldValuesResolver())\n\t\t\t.addService('schemaQueryResolver', () => new SchemaQueryResolver())\n\t\t\t.addService(\n\t\t\t\t'systemResolversFactory',\n\t\t\t\t({\n\t\t\t\t\tstagesQueryResolver,\n\t\t\t\t\texecutedMigrationsQueryResolver,\n\t\t\t\t\tmigrateMutationResolver,\n\t\t\t\t\ttruncateMutationResolver,\n\t\t\t\t\tmigrationAlterMutationResolver,\n\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\teventOldValuesResolver,\n\t\t\t\t\tschemaQueryResolver,\n\t\t\t\t}) =>\n\t\t\t\t\tnew ResolverFactory(\n\t\t\t\t\t\tstagesQueryResolver,\n\t\t\t\t\t\texecutedMigrationsQueryResolver,\n\t\t\t\t\t\tmigrateMutationResolver,\n\t\t\t\t\t\ttruncateMutationResolver,\n\t\t\t\t\t\tmigrationAlterMutationResolver,\n\t\t\t\t\t\teventsQueryResolver,\n\t\t\t\t\t\teventOldValuesResolver,\n\t\t\t\t\t\tschemaQueryResolver,\n\t\t\t\t\t),\n\t\t\t)\n\t\t\t.addService('resolverContextFactory', ({ authorizator }) => new SystemResolverContextFactory(authorizator))\n\t}\n}\n"],"names":["identityFetcher"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,MAAM,uBAAuB;AAAA,EACnC,YACkB,WACA,4BACA,sBAChB;AAHgB,SAAA,YAAA;AACA,SAAA,6BAAA;AACA,SAAA,uBAAA;AAAA,EAElB;AAAA,EAEO,OAAO,WAA6C;AAC1D,WAAO,KAAK,cAAc,SAAS,EACjC,QACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEH;AAAA,EACO,cAAc,EAAE,mBAAyB;AAC/C,WAAO,IAAI,QAAQ,EAAE,EACnB,WAAW,aAAa,MAAM,KAAK,SAAS,EAC5C,WAAW,8BAA8B,MAAM,KAAK,0BAA0B,EAC9E,WAAW,mBAAmB,MAAM,eAAe,EACnD,WAAW,kBAAkB,CAAC,EAAE,iCAAiC,IAAI,eAAe,0BAA0B,CAAC,EAC/G,WAAW,8BAA8B,CAAC,CAAA,MAAO,IAAI,4BAA4B,EACjF,WAAW,kBAAkB,CAAC,EAAE,4BAA4B,eAAA,MAAqB,IAAI,eAAe,4BAA4B,cAAc,CAAC,EAC/I,WAAW,mBAAmB,CAAC,CAAA,MAAO,IAAI,gBAAgB,oBAAoB,IAAI,mBAAA,EAAqB,OAAA,CAAQ,CAAC,EAChH,WAAW,gBAAgB,CAAC,EAAE,gBAAA,MAAoC,IAAI,aAAa,QAAQ,eAAe,CAAC,EAC3G,WAAW,sBAAsB,CAAC,EAAE,2BAAA,MAAiC,IAAI,mBAAmB,0BAA0B,CAAC,EACvH,WAAW,4BAA4B,MAAM,IAAI,yBAAA,CAA0B,EAC3E;AAAA,MACA;AAAA,MACA,CAAC,EAAE,yBAAA,MAA+B,IAAI,+CAA+C,wBAAwB;AAAA,IAAA,EAE7G;AAAA,MACA;AAAA,MACA,CAAC,EAAE,oBAAoB,gBAAgB,4BAA4B,+CAAA,MAClE,IAAI;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MAAA;AAAA,IACN,EAED,WAAW,2BAA2B,MAAM,IAAI,wBAAA,CAAyB,EACzE,WAAW,oBAAoB,CAAC,EAAE,eAAA,MAAqB,IAAI,iBAAiB,cAAc,CAAC,EAC3F,WAAW,wBAAwB,CAAC,EAAE,iBAAAA,uBAAsB,IAAI,qBAAqBA,gBAAe,CAAC,EACrG,WAAW,uBAAuB,MAAM,IAAI,qBAAqB,EACjE,WAAW,mCAAmC,MAAM,IAAI,gCAAA,CAAiC,EACzF,WAAW,2BAA2B,CAAC,EAAE,gBAAA,MAAsB,IAAI,wBAAwB,eAAe,CAAC,EAC3G,WAAW,4BAA4B,CAAC,EAAE,wBAAA,MAA8B,IAAI,yBAAyB,uBAAuB,CAAC,EAC7H,WAAW,kCAAkC,CAAC,EAAE,uBAAuB,IAAI,+BAA+B,gBAAgB,CAAC,EAC3H,WAAW,uBAAuB,CAAC,EAAE,qBAAA,MAA2B,IAAI,oBAAoB,oBAAoB,CAAC,EAC7G,WAAW,0BAA0B,MAAM,IAAI,uBAAA,CAAwB,EACvE,WAAW,uBAAuB,MAAM,IAAI,oBAAA,CAAqB,EACjE;AAAA,MACA;AAAA,MACA,CAAC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,MAEA,IAAI;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACD,EAED,WAAW,0BAA0B,CAAC,EAAE,mBAAmB,IAAI,6BAA6B,YAAY,CAAC;AAAA,EAC5G;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2018-08-04-102200-init.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-04-102200-init.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE DOMAIN \"event_type\" AS TEXT CHECK (\n VALUE IN ('init', 'create', 'update', 'delete', 'run_migration')\n);\n\nCREATE TABLE \"event\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"type\" event_type NOT NULL,\n \"data\" jsonb NOT NULL,\n \"previous_id\" uuid DEFAULT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT,\n \"created_at\" timestamp NOT NULL DEFAULT now(),\n \"identity_id\" uuid NOT NULL DEFAULT current_setting('tenant.identity_id')::uuid,\n CONSTRAINT \"previous_id_not_null\" CHECK (\"previous_id\" IS NOT NULL OR \"type\" = 'init'),\n CONSTRAINT \"unique_init\" EXCLUDE (\"type\" WITH =) WHERE (\"type\" = 'init')\n);\nCREATE INDEX \"system_event_type\" ON \"event\" USING HASH (\"type\"); -- TODO: Does this make sense?\nCREATE INDEX \"system_event_previous_id\" ON \"event\"(\"previous_id\");\nCREATE INDEX \"system_event_data_table_name\" ON \"event\"((\"data\"->>'tableName'))\n WHERE \"type\" IN ('create', 'update', 'delete');\nCREATE INDEX \"system_event_data_row_id\" ON \"event\"((\"data\"->>'rowId'))\n WHERE \"type\" IN ('create', 'update', 'delete');\n\nCREATE TABLE \"stage\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"name\" text NOT NULL,\n \"slug\" text NOT NULL UNIQUE,\n \"event_id\" uuid NOT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT\n);\nCREATE INDEX \"system_stage_event_id\" ON \"stage\"(\"event_id\");\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BZ,eAAA,oBAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2018-08-04-102200-init.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-04-102200-init.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE DOMAIN \"event_type\" AS TEXT CHECK (\n VALUE IN ('init', 'create', 'update', 'delete', 'run_migration')\n);\n\nCREATE TABLE \"event\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"type\" event_type NOT NULL,\n \"data\" jsonb NOT NULL,\n \"previous_id\" uuid DEFAULT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT,\n \"created_at\" timestamp NOT NULL DEFAULT now(),\n \"identity_id\" uuid NOT NULL DEFAULT current_setting('tenant.identity_id')::uuid,\n CONSTRAINT \"previous_id_not_null\" CHECK (\"previous_id\" IS NOT NULL OR \"type\" = 'init'),\n CONSTRAINT \"unique_init\" EXCLUDE (\"type\" WITH =) WHERE (\"type\" = 'init')\n);\nCREATE INDEX \"system_event_type\" ON \"event\" USING HASH (\"type\"); -- TODO: Does this make sense?\nCREATE INDEX \"system_event_previous_id\" ON \"event\"(\"previous_id\");\nCREATE INDEX \"system_event_data_table_name\" ON \"event\"((\"data\"->>'tableName'))\n WHERE \"type\" IN ('create', 'update', 'delete');\nCREATE INDEX \"system_event_data_row_id\" ON \"event\"((\"data\"->>'rowId'))\n WHERE \"type\" IN ('create', 'update', 'delete');\n\nCREATE TABLE \"stage\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"name\" text NOT NULL,\n \"slug\" text NOT NULL UNIQUE,\n \"event_id\" uuid NOT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT\n);\nCREATE INDEX \"system_stage_event_id\" ON \"stage\"(\"event_id\");\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BZ,eAAA,oBAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2018-08-04-102200-init.js","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-04-102200-init.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE DOMAIN \"event_type\" AS TEXT CHECK (\n VALUE IN ('init', 'create', 'update', 'delete', 'run_migration')\n);\n\nCREATE TABLE \"event\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"type\" event_type NOT NULL,\n \"data\" jsonb NOT NULL,\n \"previous_id\" uuid DEFAULT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT,\n \"created_at\" timestamp NOT NULL DEFAULT now(),\n \"identity_id\" uuid NOT NULL DEFAULT current_setting('tenant.identity_id')::uuid,\n CONSTRAINT \"previous_id_not_null\" CHECK (\"previous_id\" IS NOT NULL OR \"type\" = 'init'),\n CONSTRAINT \"unique_init\" EXCLUDE (\"type\" WITH =) WHERE (\"type\" = 'init')\n);\nCREATE INDEX \"system_event_type\" ON \"event\" USING HASH (\"type\"); -- TODO: Does this make sense?\nCREATE INDEX \"system_event_previous_id\" ON \"event\"(\"previous_id\");\nCREATE INDEX \"system_event_data_table_name\" ON \"event\"((\"data\"->>'tableName'))\n WHERE \"type\" IN ('create', 'update', 'delete');\nCREATE INDEX \"system_event_data_row_id\" ON \"event\"((\"data\"->>'rowId'))\n WHERE \"type\" IN ('create', 'update', 'delete');\n\nCREATE TABLE \"stage\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"name\" text NOT NULL,\n \"slug\" text NOT NULL UNIQUE,\n \"event_id\" uuid NOT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT\n);\nCREATE INDEX \"system_stage_event_id\" ON \"stage\"(\"event_id\");\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BZ,eAAA,oBAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2018-08-04-102200-init.js","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-04-102200-init.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE DOMAIN \"event_type\" AS TEXT CHECK (\n VALUE IN ('init', 'create', 'update', 'delete', 'run_migration')\n);\n\nCREATE TABLE \"event\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"type\" event_type NOT NULL,\n \"data\" jsonb NOT NULL,\n \"previous_id\" uuid DEFAULT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT,\n \"created_at\" timestamp NOT NULL DEFAULT now(),\n \"identity_id\" uuid NOT NULL DEFAULT current_setting('tenant.identity_id')::uuid,\n CONSTRAINT \"previous_id_not_null\" CHECK (\"previous_id\" IS NOT NULL OR \"type\" = 'init'),\n CONSTRAINT \"unique_init\" EXCLUDE (\"type\" WITH =) WHERE (\"type\" = 'init')\n);\nCREATE INDEX \"system_event_type\" ON \"event\" USING HASH (\"type\"); -- TODO: Does this make sense?\nCREATE INDEX \"system_event_previous_id\" ON \"event\"(\"previous_id\");\nCREATE INDEX \"system_event_data_table_name\" ON \"event\"((\"data\"->>'tableName'))\n WHERE \"type\" IN ('create', 'update', 'delete');\nCREATE INDEX \"system_event_data_row_id\" ON \"event\"((\"data\"->>'rowId'))\n WHERE \"type\" IN ('create', 'update', 'delete');\n\nCREATE TABLE \"stage\" (\n \"id\" uuid PRIMARY KEY NOT NULL,\n \"name\" text NOT NULL,\n \"slug\" text NOT NULL UNIQUE,\n \"event_id\" uuid NOT NULL REFERENCES \"event\"(\"id\") ON DELETE RESTRICT\n);\nCREATE INDEX \"system_stage_event_id\" ON \"stage\"(\"event_id\");\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BZ,eAAA,oBAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2018-08-05-130501-trigger-event-function.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-05-130501-trigger-event-function.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nDO\n$BLOCK$\n BEGIN\n IF NOT EXISTS(\n SELECT\n FROM pg_proc\n JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid\n WHERE pg_namespace.nspname in(current_schema(), 'pg_catalog') AND pg_proc.proname = 'uuid_generate_v4'\n ) THEN\n CREATE FUNCTION \"uuid_generate_v4\"() RETURNS UUID\n AS\n $$\n SELECT OVERLAY(OVERLAY(md5(random()::TEXT || ':' || clock_timestamp()::TEXT) PLACING '4' FROM 13) PLACING\n to_hex(floor(random() * (11 - 8 + 1) + 8)::INT)::TEXT FROM 17)::UUID;\n $$ LANGUAGE SQL;\n END IF;\n END\n$BLOCK$;\n\n\nCREATE FUNCTION \"make_diff\"(old jsonb, new jsonb) RETURNS jsonb AS $$\n\n DECLARE col record;\n DECLARE diff jsonb := '{}'::jsonb;\n\n BEGIN\n FOR col IN SELECT n.key, n.value FROM jsonb_each(old) o, jsonb_each(new) n\n WHERE n.key = o.key AND n.value IS DISTINCT FROM o.value\n LOOP\n diff := diff || jsonb_build_object(col.key, col.value);\n END LOOP;\n\n RETURN diff;\n END;\n\n$$ LANGUAGE plpgsql;\n\n\nCREATE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW))\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6FZ,eAAA,oCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2018-08-05-130501-trigger-event-function.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-05-130501-trigger-event-function.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nDO\n$BLOCK$\n BEGIN\n IF NOT EXISTS(\n SELECT\n FROM pg_proc\n JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid\n WHERE pg_namespace.nspname in(current_schema(), 'pg_catalog') AND pg_proc.proname = 'uuid_generate_v4'\n ) THEN\n CREATE FUNCTION \"uuid_generate_v4\"() RETURNS UUID\n AS\n $$\n SELECT OVERLAY(OVERLAY(md5(random()::TEXT || ':' || clock_timestamp()::TEXT) PLACING '4' FROM 13) PLACING\n to_hex(floor(random() * (11 - 8 + 1) + 8)::INT)::TEXT FROM 17)::UUID;\n $$ LANGUAGE SQL;\n END IF;\n END\n$BLOCK$;\n\n\nCREATE FUNCTION \"make_diff\"(old jsonb, new jsonb) RETURNS jsonb AS $$\n\n DECLARE col record;\n DECLARE diff jsonb := '{}'::jsonb;\n\n BEGIN\n FOR col IN SELECT n.key, n.value FROM jsonb_each(old) o, jsonb_each(new) n\n WHERE n.key = o.key AND n.value IS DISTINCT FROM o.value\n LOOP\n diff := diff || jsonb_build_object(col.key, col.value);\n END LOOP;\n\n RETURN diff;\n END;\n\n$$ LANGUAGE plpgsql;\n\n\nCREATE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW))\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6FZ,eAAA,oCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2018-08-05-130501-trigger-event-function.js","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-05-130501-trigger-event-function.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nDO\n$BLOCK$\n BEGIN\n IF NOT EXISTS(\n SELECT\n FROM pg_proc\n JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid\n WHERE pg_namespace.nspname in(current_schema(), 'pg_catalog') AND pg_proc.proname = 'uuid_generate_v4'\n ) THEN\n CREATE FUNCTION \"uuid_generate_v4\"() RETURNS UUID\n AS\n $$\n SELECT OVERLAY(OVERLAY(md5(random()::TEXT || ':' || clock_timestamp()::TEXT) PLACING '4' FROM 13) PLACING\n to_hex(floor(random() * (11 - 8 + 1) + 8)::INT)::TEXT FROM 17)::UUID;\n $$ LANGUAGE SQL;\n END IF;\n END\n$BLOCK$;\n\n\nCREATE FUNCTION \"make_diff\"(old jsonb, new jsonb) RETURNS jsonb AS $$\n\n DECLARE col record;\n DECLARE diff jsonb := '{}'::jsonb;\n\n BEGIN\n FOR col IN SELECT n.key, n.value FROM jsonb_each(old) o, jsonb_each(new) n\n WHERE n.key = o.key AND n.value IS DISTINCT FROM o.value\n LOOP\n diff := diff || jsonb_build_object(col.key, col.value);\n END LOOP;\n\n RETURN diff;\n END;\n\n$$ LANGUAGE plpgsql;\n\n\nCREATE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW))\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6FZ,eAAA,oCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2018-08-05-130501-trigger-event-function.js","sources":["../../../../../packages/engine-system-api/src/migrations/2018-08-05-130501-trigger-event-function.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nDO\n$BLOCK$\n BEGIN\n IF NOT EXISTS(\n SELECT\n FROM pg_proc\n JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid\n WHERE pg_namespace.nspname in(current_schema(), 'pg_catalog') AND pg_proc.proname = 'uuid_generate_v4'\n ) THEN\n CREATE FUNCTION \"uuid_generate_v4\"() RETURNS UUID\n AS\n $$\n SELECT OVERLAY(OVERLAY(md5(random()::TEXT || ':' || clock_timestamp()::TEXT) PLACING '4' FROM 13) PLACING\n to_hex(floor(random() * (11 - 8 + 1) + 8)::INT)::TEXT FROM 17)::UUID;\n $$ LANGUAGE SQL;\n END IF;\n END\n$BLOCK$;\n\n\nCREATE FUNCTION \"make_diff\"(old jsonb, new jsonb) RETURNS jsonb AS $$\n\n DECLARE col record;\n DECLARE diff jsonb := '{}'::jsonb;\n\n BEGIN\n FOR col IN SELECT n.key, n.value FROM jsonb_each(old) o, jsonb_each(new) n\n WHERE n.key = o.key AND n.value IS DISTINCT FROM o.value\n LOOP\n diff := diff || jsonb_build_object(col.key, col.value);\n END LOOP;\n\n RETURN diff;\n END;\n\n$$ LANGUAGE plpgsql;\n\n\nCREATE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW))\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6FZ,eAAA,oCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-01-14-143432-event-trx-id.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-01-14-143432-event-trx-id.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n\tADD COLUMN transaction_id uuid DEFAULT NULL;\nUPDATE \"event\"\nSET transaction_id = uuid_generate_v4();\n\nALTER TABLE \"event\"\n\tALTER \"transaction_id\" SET DEFAULT current_setting('system.transaction_id')::uuid,\n\tALTER \"transaction_id\" SET NOT NULL;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWZ,eAAA,0BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2019-01-14-143432-event-trx-id.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-01-14-143432-event-trx-id.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n\tADD COLUMN transaction_id uuid DEFAULT NULL;\nUPDATE \"event\"\nSET transaction_id = uuid_generate_v4();\n\nALTER TABLE \"event\"\n\tALTER \"transaction_id\" SET DEFAULT current_setting('system.transaction_id')::uuid,\n\tALTER \"transaction_id\" SET NOT NULL;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWZ,eAAA,0BAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-01-14-143432-event-trx-id.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-01-14-143432-event-trx-id.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n\tADD COLUMN transaction_id uuid DEFAULT NULL;\nUPDATE \"event\"\nSET transaction_id = uuid_generate_v4();\n\nALTER TABLE \"event\"\n\tALTER \"transaction_id\" SET DEFAULT current_setting('system.transaction_id')::uuid,\n\tALTER \"transaction_id\" SET NOT NULL;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWZ,eAAA,0BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2019-01-14-143432-event-trx-id.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-01-14-143432-event-trx-id.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n\tADD COLUMN transaction_id uuid DEFAULT NULL;\nUPDATE \"event\"\nSET transaction_id = uuid_generate_v4();\n\nALTER TABLE \"event\"\n\tALTER \"transaction_id\" SET DEFAULT current_setting('system.transaction_id')::uuid,\n\tALTER \"transaction_id\" SET NOT NULL;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWZ,eAAA,0BAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-02-04-154500-event-rebase.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-02-04-154500-event-rebase.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\n\nDROP FUNCTION IF EXISTS rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]);\n\nCREATE OR REPLACE FUNCTION rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]) RETURNS TABLE (\n\tnew_id UUID,\n\told_id UUID\n) AS\n$$\n\nWITH RECURSIVE events(id, type, data, previous_id, created_at, identity_id, transaction_id, index) AS (\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0\n\tFROM event\n\tWHERE event.id = head AND event.id <> oldBase\n\tUNION\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, index + 1\n\tFROM event, events\n\tWHERE event.id = events.previous_id AND events.previous_id <> oldBase\n),\n\tfiltered_with_ids AS (\n\t\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0, event.id AS new_id,\n\t\t\tNULL AS new_trx_id, 0 AS number\n\t\tFROM event\n\t\tWHERE id = newBase\n\t\tUNION\n\t\tSELECT *,\n\t\t\tuuid_generate_v4() AS new_id,\n\t\t\tuuid_generate_v4() AS new_trx_id,\n\t\t\trow_number() OVER (ORDER BY events.index DESC) AS number\n\t\tFROM events\n\t\tWHERE NOT (id = ANY (appliedEvents))\n\t),\n\twith_ids_by_window AS (\n\t\tSELECT *,\n\t\t\tfirst_value(filtered_with_ids.new_id) OVER (ORDER BY number ROWS 1 PRECEDING) AS new_previous_id,\n\t\t\tfirst_value(filtered_with_ids.new_trx_id) OVER (PARTITION BY filtered_with_ids.transaction_id) AS new_trx_id2\n\t\tFROM filtered_with_ids\n\t),\n\tinsert AS (\n\t\tINSERT\n\t\t\tINTO event(id, type, data, previous_id, created_at, identity_id, transaction_id)\n\t\t\t\tSELECT new_id, type, data, new_previous_id, created_at, identity_id, new_trx_id2\n\t\t\t\tFROM with_ids_by_window\n\t\t\t\tWHERE with_ids_by_window.number > 0 RETURNING *\n\t)\nSELECT insert.id as new_id, with_ids_by_window.id as old_id\nFROM with_ids_by_window\n\t\t JOIN insert ON insert.id = with_ids_by_window.new_id\nORDER BY number DESC\n$$\n\tLANGUAGE SQL;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqDZ,eAAA,2BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2019-02-04-154500-event-rebase.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-02-04-154500-event-rebase.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\n\nDROP FUNCTION IF EXISTS rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]);\n\nCREATE OR REPLACE FUNCTION rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]) RETURNS TABLE (\n\tnew_id UUID,\n\told_id UUID\n) AS\n$$\n\nWITH RECURSIVE events(id, type, data, previous_id, created_at, identity_id, transaction_id, index) AS (\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0\n\tFROM event\n\tWHERE event.id = head AND event.id <> oldBase\n\tUNION\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, index + 1\n\tFROM event, events\n\tWHERE event.id = events.previous_id AND events.previous_id <> oldBase\n),\n\tfiltered_with_ids AS (\n\t\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0, event.id AS new_id,\n\t\t\tNULL AS new_trx_id, 0 AS number\n\t\tFROM event\n\t\tWHERE id = newBase\n\t\tUNION\n\t\tSELECT *,\n\t\t\tuuid_generate_v4() AS new_id,\n\t\t\tuuid_generate_v4() AS new_trx_id,\n\t\t\trow_number() OVER (ORDER BY events.index DESC) AS number\n\t\tFROM events\n\t\tWHERE NOT (id = ANY (appliedEvents))\n\t),\n\twith_ids_by_window AS (\n\t\tSELECT *,\n\t\t\tfirst_value(filtered_with_ids.new_id) OVER (ORDER BY number ROWS 1 PRECEDING) AS new_previous_id,\n\t\t\tfirst_value(filtered_with_ids.new_trx_id) OVER (PARTITION BY filtered_with_ids.transaction_id) AS new_trx_id2\n\t\tFROM filtered_with_ids\n\t),\n\tinsert AS (\n\t\tINSERT\n\t\t\tINTO event(id, type, data, previous_id, created_at, identity_id, transaction_id)\n\t\t\t\tSELECT new_id, type, data, new_previous_id, created_at, identity_id, new_trx_id2\n\t\t\t\tFROM with_ids_by_window\n\t\t\t\tWHERE with_ids_by_window.number > 0 RETURNING *\n\t)\nSELECT insert.id as new_id, with_ids_by_window.id as old_id\nFROM with_ids_by_window\n\t\t JOIN insert ON insert.id = with_ids_by_window.new_id\nORDER BY number DESC\n$$\n\tLANGUAGE SQL;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqDZ,eAAA,2BAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-02-04-154500-event-rebase.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-02-04-154500-event-rebase.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\n\nDROP FUNCTION IF EXISTS rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]);\n\nCREATE OR REPLACE FUNCTION rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]) RETURNS TABLE (\n\tnew_id UUID,\n\told_id UUID\n) AS\n$$\n\nWITH RECURSIVE events(id, type, data, previous_id, created_at, identity_id, transaction_id, index) AS (\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0\n\tFROM event\n\tWHERE event.id = head AND event.id <> oldBase\n\tUNION\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, index + 1\n\tFROM event, events\n\tWHERE event.id = events.previous_id AND events.previous_id <> oldBase\n),\n\tfiltered_with_ids AS (\n\t\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0, event.id AS new_id,\n\t\t\tNULL AS new_trx_id, 0 AS number\n\t\tFROM event\n\t\tWHERE id = newBase\n\t\tUNION\n\t\tSELECT *,\n\t\t\tuuid_generate_v4() AS new_id,\n\t\t\tuuid_generate_v4() AS new_trx_id,\n\t\t\trow_number() OVER (ORDER BY events.index DESC) AS number\n\t\tFROM events\n\t\tWHERE NOT (id = ANY (appliedEvents))\n\t),\n\twith_ids_by_window AS (\n\t\tSELECT *,\n\t\t\tfirst_value(filtered_with_ids.new_id) OVER (ORDER BY number ROWS 1 PRECEDING) AS new_previous_id,\n\t\t\tfirst_value(filtered_with_ids.new_trx_id) OVER (PARTITION BY filtered_with_ids.transaction_id) AS new_trx_id2\n\t\tFROM filtered_with_ids\n\t),\n\tinsert AS (\n\t\tINSERT\n\t\t\tINTO event(id, type, data, previous_id, created_at, identity_id, transaction_id)\n\t\t\t\tSELECT new_id, type, data, new_previous_id, created_at, identity_id, new_trx_id2\n\t\t\t\tFROM with_ids_by_window\n\t\t\t\tWHERE with_ids_by_window.number > 0 RETURNING *\n\t)\nSELECT insert.id as new_id, with_ids_by_window.id as old_id\nFROM with_ids_by_window\n\t\t JOIN insert ON insert.id = with_ids_by_window.new_id\nORDER BY number DESC\n$$\n\tLANGUAGE SQL;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqDZ,eAAA,2BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2019-02-04-154500-event-rebase.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-02-04-154500-event-rebase.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\n\nDROP FUNCTION IF EXISTS rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]);\n\nCREATE OR REPLACE FUNCTION rebase_events_unsafe(head UUID, oldBase UUID, newBase UUID, appliedEvents UUID[]) RETURNS TABLE (\n\tnew_id UUID,\n\told_id UUID\n) AS\n$$\n\nWITH RECURSIVE events(id, type, data, previous_id, created_at, identity_id, transaction_id, index) AS (\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0\n\tFROM event\n\tWHERE event.id = head AND event.id <> oldBase\n\tUNION\n\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, index + 1\n\tFROM event, events\n\tWHERE event.id = events.previous_id AND events.previous_id <> oldBase\n),\n\tfiltered_with_ids AS (\n\t\tSELECT event.id, event.type, event.data, event.previous_id, event.created_at, event.identity_id, event.transaction_id, 0, event.id AS new_id,\n\t\t\tNULL AS new_trx_id, 0 AS number\n\t\tFROM event\n\t\tWHERE id = newBase\n\t\tUNION\n\t\tSELECT *,\n\t\t\tuuid_generate_v4() AS new_id,\n\t\t\tuuid_generate_v4() AS new_trx_id,\n\t\t\trow_number() OVER (ORDER BY events.index DESC) AS number\n\t\tFROM events\n\t\tWHERE NOT (id = ANY (appliedEvents))\n\t),\n\twith_ids_by_window AS (\n\t\tSELECT *,\n\t\t\tfirst_value(filtered_with_ids.new_id) OVER (ORDER BY number ROWS 1 PRECEDING) AS new_previous_id,\n\t\t\tfirst_value(filtered_with_ids.new_trx_id) OVER (PARTITION BY filtered_with_ids.transaction_id) AS new_trx_id2\n\t\tFROM filtered_with_ids\n\t),\n\tinsert AS (\n\t\tINSERT\n\t\t\tINTO event(id, type, data, previous_id, created_at, identity_id, transaction_id)\n\t\t\t\tSELECT new_id, type, data, new_previous_id, created_at, identity_id, new_trx_id2\n\t\t\t\tFROM with_ids_by_window\n\t\t\t\tWHERE with_ids_by_window.number > 0 RETURNING *\n\t)\nSELECT insert.id as new_id, with_ids_by_window.id as old_id\nFROM with_ids_by_window\n\t\t JOIN insert ON insert.id = with_ids_by_window.new_id\nORDER BY number DESC\n$$\n\tLANGUAGE SQL;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqDZ,eAAA,2BAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-03-18-104147-event-run-migration-struct.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-03-18-104147-event-run-migration-struct.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nUPDATE event\nSET data = jsonb_build_object('version', coalesce(substring(data ->> 'file', 0, 17), data ->> 'version'))\nWHERE type = 'run_migration';\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMZ,eAAA,uCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2019-03-18-104147-event-run-migration-struct.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-03-18-104147-event-run-migration-struct.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nUPDATE event\nSET data = jsonb_build_object('version', coalesce(substring(data ->> 'file', 0, 17), data ->> 'version'))\nWHERE type = 'run_migration';\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMZ,eAAA,uCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-03-18-104147-event-run-migration-struct.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-03-18-104147-event-run-migration-struct.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nUPDATE event\nSET data = jsonb_build_object('version', coalesce(substring(data ->> 'file', 0, 17), data ->> 'version'))\nWHERE type = 'run_migration';\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMZ,eAAA,uCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2019-03-18-104147-event-run-migration-struct.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-03-18-104147-event-run-migration-struct.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nUPDATE event\nSET data = jsonb_build_object('version', coalesce(substring(data ->> 'file', 0, 17), data ->> 'version'))\nWHERE type = 'run_migration';\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMZ,eAAA,uCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-07-29-103000-trigger-event-function-fix.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-07-29-103000-trigger-event-function-fix.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n DECLARE update_diff jsonb;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n update_diff := \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW));\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', update_diff\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4DZ,eAAA,uCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2019-07-29-103000-trigger-event-function-fix.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-07-29-103000-trigger-event-function-fix.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n DECLARE update_diff jsonb;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n update_diff := \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW));\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', update_diff\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4DZ,eAAA,uCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-07-29-103000-trigger-event-function-fix.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-07-29-103000-trigger-event-function-fix.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n DECLARE update_diff jsonb;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n update_diff := \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW));\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', update_diff\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4DZ,eAAA,uCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2019-07-29-103000-trigger-event-function-fix.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-07-29-103000-trigger-event-function-fix.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\n\n DECLARE new_event_id uuid := uuid_generate_v4();\n DECLARE new_event_type text;\n DECLARE new_event_data jsonb;\n DECLARE current_stage record;\n DECLARE update_diff jsonb;\n\n BEGIN\n CASE TG_OP\n WHEN 'INSERT' THEN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', NEW.id::text,\n 'values', to_jsonb(NEW) - 'id'\n );\n\n WHEN 'UPDATE' THEN\n update_diff := \"make_diff\"(to_jsonb(OLD), to_jsonb(NEW));\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text,\n 'values', update_diff\n );\n\n WHEN 'DELETE' THEN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', OLD.id::text\n );\n\n ELSE\n RAISE EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n\n SELECT \"id\", \"event_id\" FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE\n INTO current_stage;\n\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n UPDATE \"stage\"\n SET \"event_id\" = new_event_id\n WHERE \"id\" = current_stage.id;\n\n RETURN NULL;\n END;\n\n$$ LANGUAGE plpgsql;\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4DZ,eAAA,uCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-11-28-100000-missing-setting-fallback.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-11-28-100000-missing-setting-fallback.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n ALTER COLUMN \"identity_id\" SET DEFAULT\n coalesce(\n current_setting('tenant.identity_id', true)::uuid,\n '00000000-0000-0000-0000-000000000000'\n ),\n\n ALTER COLUMN \"transaction_id\" SET DEFAULT\n coalesce(\n nullif(current_setting('system.transaction_id', true), '')::uuid,\n set_config('system.transaction_id', uuid_generate_v4()::text, true)::uuid\n );\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeZ,eAAA,sCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
1
+ {"version":3,"file":"2019-11-28-100000-missing-setting-fallback.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2019-11-28-100000-missing-setting-fallback.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n ALTER COLUMN \"identity_id\" SET DEFAULT\n coalesce(\n current_setting('tenant.identity_id', true)::uuid,\n '00000000-0000-0000-0000-000000000000'\n ),\n\n ALTER COLUMN \"transaction_id\" SET DEFAULT\n coalesce(\n nullif(current_setting('system.transaction_id', true), '')::uuid,\n set_config('system.transaction_id', uuid_generate_v4()::text, true)::uuid\n );\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeZ,eAAA,sCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2019-11-28-100000-missing-setting-fallback.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-11-28-100000-missing-setting-fallback.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n ALTER COLUMN \"identity_id\" SET DEFAULT\n coalesce(\n current_setting('tenant.identity_id', true)::uuid,\n '00000000-0000-0000-0000-000000000000'\n ),\n\n ALTER COLUMN \"transaction_id\" SET DEFAULT\n coalesce(\n nullif(current_setting('system.transaction_id', true), '')::uuid,\n set_config('system.transaction_id', uuid_generate_v4()::text, true)::uuid\n );\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeZ,eAAA,sCAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
1
+ {"version":3,"file":"2019-11-28-100000-missing-setting-fallback.js","sources":["../../../../../packages/engine-system-api/src/migrations/2019-11-28-100000-missing-setting-fallback.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nALTER TABLE \"event\"\n ALTER COLUMN \"identity_id\" SET DEFAULT\n coalesce(\n current_setting('tenant.identity_id', true)::uuid,\n '00000000-0000-0000-0000-000000000000'\n ),\n\n ALTER COLUMN \"transaction_id\" SET DEFAULT\n coalesce(\n nullif(current_setting('system.transaction_id', true), '')::uuid,\n set_config('system.transaction_id', uuid_generate_v4()::text, true)::uuid\n );\n`\n\nexport default async function(builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeZ,eAAA,sCAA8B,SAA2B;AACxD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2020-03-27-130000-project-migrations.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-03-27-130000-project-migrations.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\n\nexport default async function (builder: MigrationBuilder, args: SystemMigrationArgs) {\n\tbuilder.createTable(\n\t\t{\n\t\t\tname: 'schema_migration',\n\t\t},\n\t\t{\n\t\t\tid: { notNull: true, type: 'SERIAL4' },\n\t\t\tversion: { notNull: true, type: 'varchar(20)', unique: true },\n\t\t\tname: { notNull: true, type: 'varchar(255)', unique: true },\n\t\t\tmigration: { notNull: true, type: 'json' },\n\t\t\tchecksum: { notNull: true, type: 'char(32)' },\n\t\t\texecuted_at: { notNull: true, type: 'timestamp', default: 'now()' },\n\t\t},\n\t)\n\tbuilder.createIndex({ name: 'schema_migration' }, ['version'], {\n\t\tname: 'system_schema_migration_version',\n\t})\n}\n"],"names":[],"mappings":";AAGA,eAAA,iCAA+B,SAA2B,MAA2B;AAC5E,UAAA;AAAA,IACP;AAAA,MACC,MAAM;AAAA,IACP;AAAA,IACA;AAAA,MACC,IAAI,EAAE,SAAS,MAAM,MAAM,UAAU;AAAA,MACrC,SAAS,EAAE,SAAS,MAAM,MAAM,eAAe,QAAQ,KAAK;AAAA,MAC5D,MAAM,EAAE,SAAS,MAAM,MAAM,gBAAgB,QAAQ,KAAK;AAAA,MAC1D,WAAW,EAAE,SAAS,MAAM,MAAM,OAAO;AAAA,MACzC,UAAU,EAAE,SAAS,MAAM,MAAM,WAAW;AAAA,MAC5C,aAAa,EAAE,SAAS,MAAM,MAAM,aAAa,SAAS,QAAQ;AAAA,IAAA;AAAA,EAEpE;AACA,UAAQ,YAAY,EAAE,MAAM,mBAAsB,GAAA,CAAC,SAAS,GAAG;AAAA,IAC9D,MAAM;AAAA,EAAA,CACN;AACF;;"}
1
+ {"version":3,"file":"2020-03-27-130000-project-migrations.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-03-27-130000-project-migrations.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\n\nexport default async function(builder: MigrationBuilder, args: SystemMigrationArgs) {\n\tbuilder.createTable(\n\t\t{\n\t\t\tname: 'schema_migration',\n\t\t},\n\t\t{\n\t\t\tid: { notNull: true, type: 'SERIAL4' },\n\t\t\tversion: { notNull: true, type: 'varchar(20)', unique: true },\n\t\t\tname: { notNull: true, type: 'varchar(255)', unique: true },\n\t\t\tmigration: { notNull: true, type: 'json' },\n\t\t\tchecksum: { notNull: true, type: 'char(32)' },\n\t\t\texecuted_at: { notNull: true, type: 'timestamp', default: 'now()' },\n\t\t},\n\t)\n\tbuilder.createIndex({ name: 'schema_migration' }, ['version'], {\n\t\tname: 'system_schema_migration_version',\n\t})\n}\n"],"names":[],"mappings":";AAGA,eAAA,iCAA8B,SAA2B,MAA2B;AACnF,UAAQ;AAAA,IACP;AAAA,MACC,MAAM;AAAA,IAAA;AAAA,IAEP;AAAA,MACC,IAAI,EAAE,SAAS,MAAM,MAAM,UAAA;AAAA,MAC3B,SAAS,EAAE,SAAS,MAAM,MAAM,eAAe,QAAQ,KAAA;AAAA,MACvD,MAAM,EAAE,SAAS,MAAM,MAAM,gBAAgB,QAAQ,KAAA;AAAA,MACrD,WAAW,EAAE,SAAS,MAAM,MAAM,OAAA;AAAA,MAClC,UAAU,EAAE,SAAS,MAAM,MAAM,WAAA;AAAA,MACjC,aAAa,EAAE,SAAS,MAAM,MAAM,aAAa,SAAS,QAAA;AAAA,IAAQ;AAAA,EACnE;AAED,UAAQ,YAAY,EAAE,MAAM,sBAAsB,CAAC,SAAS,GAAG;AAAA,IAC9D,MAAM;AAAA,EAAA,CACN;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2020-03-27-130000-project-migrations.js","sources":["../../../../../packages/engine-system-api/src/migrations/2020-03-27-130000-project-migrations.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\n\nexport default async function (builder: MigrationBuilder, args: SystemMigrationArgs) {\n\tbuilder.createTable(\n\t\t{\n\t\t\tname: 'schema_migration',\n\t\t},\n\t\t{\n\t\t\tid: { notNull: true, type: 'SERIAL4' },\n\t\t\tversion: { notNull: true, type: 'varchar(20)', unique: true },\n\t\t\tname: { notNull: true, type: 'varchar(255)', unique: true },\n\t\t\tmigration: { notNull: true, type: 'json' },\n\t\t\tchecksum: { notNull: true, type: 'char(32)' },\n\t\t\texecuted_at: { notNull: true, type: 'timestamp', default: 'now()' },\n\t\t},\n\t)\n\tbuilder.createIndex({ name: 'schema_migration' }, ['version'], {\n\t\tname: 'system_schema_migration_version',\n\t})\n}\n"],"names":[],"mappings":"AAGA,eAAA,iCAA+B,SAA2B,MAA2B;AAC5E,UAAA;AAAA,IACP;AAAA,MACC,MAAM;AAAA,IACP;AAAA,IACA;AAAA,MACC,IAAI,EAAE,SAAS,MAAM,MAAM,UAAU;AAAA,MACrC,SAAS,EAAE,SAAS,MAAM,MAAM,eAAe,QAAQ,KAAK;AAAA,MAC5D,MAAM,EAAE,SAAS,MAAM,MAAM,gBAAgB,QAAQ,KAAK;AAAA,MAC1D,WAAW,EAAE,SAAS,MAAM,MAAM,OAAO;AAAA,MACzC,UAAU,EAAE,SAAS,MAAM,MAAM,WAAW;AAAA,MAC5C,aAAa,EAAE,SAAS,MAAM,MAAM,aAAa,SAAS,QAAQ;AAAA,IAAA;AAAA,EAEpE;AACA,UAAQ,YAAY,EAAE,MAAM,mBAAsB,GAAA,CAAC,SAAS,GAAG;AAAA,IAC9D,MAAM;AAAA,EAAA,CACN;AACF;"}
1
+ {"version":3,"file":"2020-03-27-130000-project-migrations.js","sources":["../../../../../packages/engine-system-api/src/migrations/2020-03-27-130000-project-migrations.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\n\nexport default async function(builder: MigrationBuilder, args: SystemMigrationArgs) {\n\tbuilder.createTable(\n\t\t{\n\t\t\tname: 'schema_migration',\n\t\t},\n\t\t{\n\t\t\tid: { notNull: true, type: 'SERIAL4' },\n\t\t\tversion: { notNull: true, type: 'varchar(20)', unique: true },\n\t\t\tname: { notNull: true, type: 'varchar(255)', unique: true },\n\t\t\tmigration: { notNull: true, type: 'json' },\n\t\t\tchecksum: { notNull: true, type: 'char(32)' },\n\t\t\texecuted_at: { notNull: true, type: 'timestamp', default: 'now()' },\n\t\t},\n\t)\n\tbuilder.createIndex({ name: 'schema_migration' }, ['version'], {\n\t\tname: 'system_schema_migration_version',\n\t})\n}\n"],"names":[],"mappings":"AAGA,eAAA,iCAA8B,SAA2B,MAA2B;AACnF,UAAQ;AAAA,IACP;AAAA,MACC,MAAM;AAAA,IAAA;AAAA,IAEP;AAAA,MACC,IAAI,EAAE,SAAS,MAAM,MAAM,UAAA;AAAA,MAC3B,SAAS,EAAE,SAAS,MAAM,MAAM,eAAe,QAAQ,KAAA;AAAA,MACvD,MAAM,EAAE,SAAS,MAAM,MAAM,gBAAgB,QAAQ,KAAA;AAAA,MACrD,WAAW,EAAE,SAAS,MAAM,MAAM,OAAA;AAAA,MAClC,UAAU,EAAE,SAAS,MAAM,MAAM,WAAA;AAAA,MACjC,aAAa,EAAE,SAAS,MAAM,MAAM,aAAa,SAAS,QAAA;AAAA,IAAQ;AAAA,EACnE;AAED,UAAQ,YAAY,EAAE,MAAM,sBAAsB,CAAC,SAAS,GAAG;AAAA,IAC9D,MAAM;AAAA,EAAA,CACN;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"2020-05-06-150000-composed-primary.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["escapeValue","getJunctionTables","schema"],"mappings":"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"}
1
+ {"version":3,"file":"2020-05-06-150000-composed-primary.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function(builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["escapeValue","getJunctionTables","schema"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"2020-05-06-150000-composed-primary.js","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["schema"],"mappings":"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"}
1
+ {"version":3,"file":"2020-05-06-150000-composed-primary.js","sources":["../../../../../packages/engine-system-api/src/migrations/2020-05-06-150000-composed-primary.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventTrigger = (builder: MigrationBuilder, tableName: Name, primaryColumns: string[]) => {\n\tbuilder.createTrigger(tableName, 'log_event', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event',\n\t\t},\n\t\tfunctionParams: primaryColumns,\n\t})\n}\n\nconst migrateEvents = (builder: MigrationBuilder, tableName: string, primaryKeys: [string, string]) => {\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\t\trecent_events(id, type, previous_id, data, created_at, stage) AS (\n\t\t\t\tSELECT event.id, type, previous_id, data, created_at, stage.slug\n\t\t\t\tFROM event\n\t\t\t\tJOIN stage ON stage.event_id = event.id\n\n\t\t\t\tUNION ALL\n\n\t\t\t\tSELECT event.id, event.type, event.previous_id, event.data, event.created_at, recent_events.stage\n\t\t\t\tFROM event, recent_events\n\t\t\t\tWHERE event.id = recent_events.previous_id\n\t\t\t),\n\t\t\taffected_events AS (\n\t\t\t\tSELECT\n\t\t\t\t\tdelete_event.id AS delete_id,\n\t\t\t\t\tcreate_event.id AS create_id,\n\t\t\t\t\tjson_build_array(\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[0])},\n\t\t\t\t\t\tcreate_event.data -> 'values' ->> ${escapeValue(primaryKeys[1])}\n\t\t\t\t\t) AS id\n\t\t\t\tFROM recent_events AS create_event\n\t\t\t\tLEFT JOIN recent_events AS delete_event\n\t\t\t\t\tON\n\t\t\t\t\t\tdelete_event.data ->> 'rowId' = create_event.data ->> 'rowId'\n\t\t\t\t\t\tAND delete_event.type = 'delete'\n\t\t\t\t\t\tAND delete_event.data ->> 'tableName' = create_event.data ->> 'tableName'\n\t\t\t\tWHERE create_event.type = 'create' AND create_event.data ->> 'tableName' = ${escapeValue(tableName)}\n\t\t\t)\n\t\tUPDATE event\n\t\tSET\n\t\t\tdata = event.data || jsonb_build_object('rowId', affected_events.id)\n\t\tFROM affected_events\n\t\tWHERE\n\t\t event.id = affected_events.create_id\n\t\t OR event.id = affected_events.delete_id\n\t\tRETURNING event.data\n`)\n}\n\nexport default async function(builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst tablesToMigrate = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tfor (const table of tablesToMigrate) {\n\t\tconst primaryColumns: [string, string] = [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName]\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropColumn({ name: table.tableName, schema }, 'id')\n\t\t\tbuilder.dropConstraint(\n\t\t\t\t{ name: table.tableName, schema },\n\t\t\t\ttable.tableName + '_uniq_' + table.joiningColumn.columnName + '_' + table.inverseJoiningColumn.columnName,\n\t\t\t)\n\t\t\tbuilder.addConstraint({ name: table.tableName, schema }, null, {\n\t\t\t\tprimaryKey: [table.joiningColumn.columnName, table.inverseJoiningColumn.columnName],\n\t\t\t})\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: table.tableName, schema }, primaryColumns)\n\t\t}\n\t\tmigrateEvents(builder, table.tableName, primaryColumns)\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event')\n\t\t\tcreateEventTrigger(builder, { name: entity.tableName, schema }, [entity.primaryColumn])\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tUPDATE event\n\t\tSET data = data || jsonb_build_object('rowId', json_build_array(data ->> 'rowId'))\n\t\tWHERE jsonb_typeof(data -> 'rowId') = 'string'\n\t`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n$$\n\nDECLARE\n\tnew_event_id UUID := uuid_generate_v4();\n\tDECLARE new_event_type TEXT;\n\tDECLARE new_event_data JSONB;\n\tDECLARE current_stage RECORD;\n\tDECLARE update_diff JSONB;\n\tDECLARE primary_values JSONB;\n\tDECLARE old_row JSONB;\n\tDECLARE new_row JSONB;\nBEGIN\n\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n\tprimary_values = (\n\t\tSELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n\t\tFROM jsonb_each(COALESCE(old_row, new_row))\n\t\tWHERE key = ANY (TG_ARGV)\n\t);\n\n\tCASE TG_OP\n\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\tnew_event_type := 'create';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', COALESCE((\n\t\t\t\t SELECT jsonb_object_agg(key, value)\n\t\t\t\t FROM jsonb_each(new_row)\n\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n\t\t\t ), '{}'::JSONB)\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\tupdate_diff := (\n\t\t\t\tSELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n\t\t\t\tFROM jsonb_each(old_row) o\n\t\t\t\t\t\t FULL OUTER JOIN\n\t\t\t\tjsonb_each(new_row) n ON n.key = o.key\n\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t);\n\t\t\tIF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n\t\t\t\tRETURN NULL;\n\t\t\t\tEND IF;\n\t\t\tnew_event_type := 'update';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values,\n\t\t\t 'values', update_diff\n\t\t\t\t);\n\t\tEND;\n\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\tnew_event_type := 'delete';\n\t\t\tnew_event_data := jsonb_build_object(\n\t\t\t 'tableName', TG_TABLE_NAME,\n\t\t\t 'rowId', primary_values\n\t\t\t\t);\n\t\tEND;\n\t\tELSE RAISE\n\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\tEND CASE;\n\n\tSELECT \"id\", \"event_id\"\n\tFROM \"stage\"\n\tWHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n\t\tFOR NO KEY UPDATE\n\tINTO current_stage;\n\n\tINSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n\tVALUES (new_event_id, new_event_type, new_event_data, current_stage.event_id);\n\n\tUPDATE \"stage\"\n\tSET \"event_id\" = new_event_id\n\tWHERE \"id\" = current_stage.id;\n\n\tRETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql;\n`)\n\tbuilder.dropFunction(\n\t\t{\n\t\t\tname: 'make_diff',\n\t\t},\n\t\t[\n\t\t\t{ name: 'old', type: 'jsonb' },\n\t\t\t{ name: 'new', type: 'jsonb' },\n\t\t],\n\t)\n}\n"],"names":["schema"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"2020-06-01-103000-event-trigger-perf.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-06-01-103000-event-trigger-perf.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventStatementTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_statement', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'STATEMENT',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'statement_trigger_event',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\nDECLARE\n DECLARE new_event_type TEXT;\n DECLARE previous_id UUID;\n DECLARE new_event_data JSONB;\n DECLARE update_diff JSONB;\n DECLARE primary_values JSONB;\n DECLARE old_row JSONB;\n DECLARE new_row JSONB;\nBEGIN\n old_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n primary_values := (\n SELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n FROM jsonb_each(COALESCE(old_row, new_row))\n WHERE key = ANY (TG_ARGV)\n );\n\n\n CASE TG_OP\n WHEN 'INSERT' THEN BEGIN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', COALESCE((\n SELECT jsonb_object_agg(key, value)\n FROM jsonb_each(new_row)\n WHERE NOT (key = ANY (TG_ARGV))\n ), '{}'::JSONB)\n );\n END;\n WHEN 'UPDATE' THEN BEGIN\n update_diff := (\n SELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n FROM jsonb_each(old_row) o\n FULL OUTER JOIN\n jsonb_each(new_row) n ON n.key = o.key\n WHERE n.value IS DISTINCT FROM o.value\n );\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', update_diff\n );\n END;\n WHEN 'DELETE' THEN BEGIN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values\n );\n END;\n ELSE RAISE\n EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n CASE WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NULL THEN\n PERFORM set_config('system.current_stage_id' || TG_TABLE_SCHEMA, \"id\"::TEXT, TRUE), set_config('system.current_stage_event' || TG_TABLE_SCHEMA, \"event_id\"::TEXT, TRUE)\n FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE;\n ELSE\n -- do nothing\n END CASE;\n previous_id := current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID;\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (set_config('system.current_stage_event' || TG_TABLE_SCHEMA, system.uuid_generate_v4()::TEXT, TRUE)::UUID, new_event_type, new_event_data, previous_id);\n\n RETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"statement_trigger_event\"() RETURNS TRIGGER AS\n$$\nBEGIN\n CASE\n WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NOT NULL THEN\n UPDATE stage SET event_id = current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID WHERE id = current_setting('system.current_stage_id' || TG_TABLE_SCHEMA)::UUID;\n ELSE\n -- do nothing\n END CASE;\n RETURN NULL;\nEND;\n$$\n LANGUAGE plpgsql`)\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["getJunctionTables","schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,8BAA8B,CAAC,SAA2B,cAAoB;AAC3E,UAAA,cAAc,WAAW,uBAAuB;AAAA,IACvD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEA,eAAA,gCAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,iBAAiBA,aAAAA,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAChE,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBA2EO;AACnB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYQ;AACpB,aAAW,SAAS,gBAAgB;AACnC,eAAWC,WAAU,SAAS;AAC7B,kCAA4B,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EACvE;AAED,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,kCAA4B,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EACxE;AAEF;;"}
1
+ {"version":3,"file":"2020-06-01-103000-event-trigger-perf.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2020-06-01-103000-event-trigger-perf.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createEventStatementTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_statement', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'STATEMENT',\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'statement_trigger_event',\n\t\t},\n\t})\n}\n\nexport default async function(builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS $$\nDECLARE\n DECLARE new_event_type TEXT;\n DECLARE previous_id UUID;\n DECLARE new_event_data JSONB;\n DECLARE update_diff JSONB;\n DECLARE primary_values JSONB;\n DECLARE old_row JSONB;\n DECLARE new_row JSONB;\nBEGIN\n old_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN to_jsonb(old) ELSE NULL END;\n new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN to_jsonb(new) ELSE NULL END;\n primary_values := (\n SELECT jsonb_agg(value ORDER BY array_position(TG_ARGV, key))\n FROM jsonb_each(COALESCE(old_row, new_row))\n WHERE key = ANY (TG_ARGV)\n );\n\n\n CASE TG_OP\n WHEN 'INSERT' THEN BEGIN\n new_event_type := 'create';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', COALESCE((\n SELECT jsonb_object_agg(key, value)\n FROM jsonb_each(new_row)\n WHERE NOT (key = ANY (TG_ARGV))\n ), '{}'::JSONB)\n );\n END;\n WHEN 'UPDATE' THEN BEGIN\n update_diff := (\n SELECT jsonb_object_agg(coalesce(n.key, o.key), n.value)\n FROM jsonb_each(old_row) o\n FULL OUTER JOIN\n jsonb_each(new_row) n ON n.key = o.key\n WHERE n.value IS DISTINCT FROM o.value\n );\n IF (SELECT count(*) FROM jsonb_object_keys(update_diff)) = 0 THEN\n RETURN NULL;\n END IF;\n new_event_type := 'update';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values,\n 'values', update_diff\n );\n END;\n WHEN 'DELETE' THEN BEGIN\n new_event_type := 'delete';\n new_event_data := jsonb_build_object(\n 'tableName', TG_TABLE_NAME,\n 'rowId', primary_values\n );\n END;\n ELSE RAISE\n EXCEPTION 'Unknown TG_OP value %', TG_OP;\n END CASE;\n CASE WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NULL THEN\n PERFORM set_config('system.current_stage_id' || TG_TABLE_SCHEMA, \"id\"::TEXT, TRUE), set_config('system.current_stage_event' || TG_TABLE_SCHEMA, \"event_id\"::TEXT, TRUE)\n FROM \"stage\"\n WHERE \"slug\" = right(TG_TABLE_SCHEMA, -length('stage_'))\n FOR NO KEY UPDATE;\n ELSE\n -- do nothing\n END CASE;\n previous_id := current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID;\n INSERT INTO \"event\" (\"id\", \"type\", \"data\", \"previous_id\")\n VALUES (set_config('system.current_stage_event' || TG_TABLE_SCHEMA, system.uuid_generate_v4()::TEXT, TRUE)::UUID, new_event_type, new_event_data, previous_id);\n\n RETURN NULL;\nEND;\n\n$$ LANGUAGE plpgsql`)\n\tbuilder.sql(`CREATE OR REPLACE FUNCTION \"statement_trigger_event\"() RETURNS TRIGGER AS\n$$\nBEGIN\n CASE\n WHEN NULLIF(current_setting('system.current_stage_id' || TG_TABLE_SCHEMA, TRUE), '') IS NOT NULL THEN\n UPDATE stage SET event_id = current_setting('system.current_stage_event' || TG_TABLE_SCHEMA)::UUID WHERE id = current_setting('system.current_stage_id' || TG_TABLE_SCHEMA)::UUID;\n ELSE\n -- do nothing\n END CASE;\n RETURN NULL;\nEND;\n$$\n LANGUAGE plpgsql`)\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tcreateEventStatementTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["getJunctionTables","schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,8BAA8B,CAAC,SAA2B,cAAoB;AACnF,UAAQ,cAAc,WAAW,uBAAuB;AAAA,IACvD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEA,eAAA,gCAA8B,SAA2B,MAA0C;AAClG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,iBAAiBA,aAAAA,kBAAkB,OAAO,KAAK;AACrD,QAAM,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAA,OAAM,SAAS,GAAG,IAAI,EAAE;AAChE,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBA2EO;AACnB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYQ;AACpB,aAAW,SAAS,gBAAgB;AACnC,eAAWC,WAAU,SAAS;AAC7B,kCAA4B,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IACvE;AAAA,EACD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,kCAA4B,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IACxE;AAAA,EACD;AACD;;"}