@contember/engine-system-api 2.1.0-beta.1 → 2.2.0-alpha.1

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 (627) hide show
  1. package/CLAUDE.md +16 -2
  2. package/dist/development/src/SystemContainer.cjs.map +1 -1
  3. package/dist/development/src/SystemContainer.js.map +1 -1
  4. package/dist/development/src/migrations/2020-03-27-130000-project-migrations.cjs.map +1 -1
  5. package/dist/development/src/migrations/2020-03-27-130000-project-migrations.js.map +1 -1
  6. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  7. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  8. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  9. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  10. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  11. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  12. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  13. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  14. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  15. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  16. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  17. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  18. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  19. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  20. package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -1
  21. package/dist/development/src/migrations/2024-06-28-153001-schema-init.js.map +1 -1
  22. package/dist/development/src/migrations/2025-03-14-110000-fix-missing-index.cjs.map +1 -1
  23. package/dist/development/src/migrations/2025-03-14-110000-fix-missing-index.js.map +1 -1
  24. package/dist/development/src/migrations/2026-06-01-120000-event-truncate.cjs +13 -0
  25. package/dist/development/src/migrations/2026-06-01-120000-event-truncate.cjs.map +1 -0
  26. package/dist/development/src/migrations/2026-06-01-120000-event-truncate.js +14 -0
  27. package/dist/development/src/migrations/2026-06-01-120000-event-truncate.js.map +1 -0
  28. package/dist/development/src/migrations/runner.cjs +3 -1
  29. package/dist/development/src/migrations/runner.cjs.map +1 -1
  30. package/dist/development/src/migrations/runner.js +3 -1
  31. package/dist/development/src/migrations/runner.js.map +1 -1
  32. package/dist/development/src/migrations/snapshot-factory.cjs.map +1 -1
  33. package/dist/development/src/migrations/snapshot-factory.js.map +1 -1
  34. package/dist/development/src/migrations/snapshot.cjs +5 -4
  35. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  36. package/dist/development/src/migrations/snapshot.js +5 -4
  37. package/dist/development/src/migrations/snapshot.js.map +1 -1
  38. package/dist/development/src/model/ProjectInitializer.cjs.map +1 -1
  39. package/dist/development/src/model/ProjectInitializer.js.map +1 -1
  40. package/dist/development/src/model/ProjectTruncateExecutor.cjs +3 -3
  41. package/dist/development/src/model/ProjectTruncateExecutor.cjs.map +1 -1
  42. package/dist/development/src/model/ProjectTruncateExecutor.js +3 -3
  43. package/dist/development/src/model/ProjectTruncateExecutor.js.map +1 -1
  44. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  45. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  46. package/dist/development/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  47. package/dist/development/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  48. package/dist/development/src/model/authorization/StageScope.cjs.map +1 -1
  49. package/dist/development/src/model/authorization/StageScope.js.map +1 -1
  50. package/dist/development/src/model/commands/CommandBus.cjs.map +1 -1
  51. package/dist/development/src/model/commands/CommandBus.js.map +1 -1
  52. package/dist/development/src/model/commands/events/TruncateEventsCommand.cjs +25 -2
  53. package/dist/development/src/model/commands/events/TruncateEventsCommand.cjs.map +1 -1
  54. package/dist/development/src/model/commands/events/TruncateEventsCommand.js +26 -3
  55. package/dist/development/src/model/commands/events/TruncateEventsCommand.js.map +1 -1
  56. package/dist/development/src/model/commands/migrations/DeleteMigrationCommand.cjs.map +1 -1
  57. package/dist/development/src/model/commands/migrations/DeleteMigrationCommand.js.map +1 -1
  58. package/dist/development/src/model/commands/migrations/ModifyMigrationCommand.cjs.map +1 -1
  59. package/dist/development/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  60. package/dist/development/src/model/commands/migrations/SaveMigrationCommand.cjs.map +1 -1
  61. package/dist/development/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  62. package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -1
  63. package/dist/development/src/model/commands/schema/SaveSchemaCommand.js.map +1 -1
  64. package/dist/development/src/model/commands/stages/CreateStageCommand.cjs.map +1 -1
  65. package/dist/development/src/model/commands/stages/CreateStageCommand.js.map +1 -1
  66. package/dist/development/src/model/database/DatabaseContext.cjs.map +1 -1
  67. package/dist/development/src/model/database/DatabaseContext.js.map +1 -1
  68. package/dist/development/src/model/events/EventResponseBuilder.cjs +6 -1
  69. package/dist/development/src/model/events/EventResponseBuilder.cjs.map +1 -1
  70. package/dist/development/src/model/events/EventResponseBuilder.js +6 -1
  71. package/dist/development/src/model/events/EventResponseBuilder.js.map +1 -1
  72. package/dist/development/src/model/events/EventResponseHelper.cjs.map +1 -1
  73. package/dist/development/src/model/events/EventResponseHelper.js.map +1 -1
  74. package/dist/development/src/model/events/identityUtils.cjs.map +1 -1
  75. package/dist/development/src/model/events/identityUtils.js.map +1 -1
  76. package/dist/development/src/model/events/types.cjs +17 -0
  77. package/dist/development/src/model/events/types.cjs.map +1 -1
  78. package/dist/development/src/model/events/types.js +17 -0
  79. package/dist/development/src/model/events/types.js.map +1 -1
  80. package/dist/development/src/model/helpers/stageHelpers.cjs.map +1 -1
  81. package/dist/development/src/model/helpers/stageHelpers.js.map +1 -1
  82. package/dist/development/src/model/metadata/SchemaDatabaseMetadataResolverStore.cjs.map +1 -1
  83. package/dist/development/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -1
  84. package/dist/development/src/model/migrations/ExecutedMigrationsResolver.cjs.map +1 -1
  85. package/dist/development/src/model/migrations/ExecutedMigrationsResolver.js.map +1 -1
  86. package/dist/development/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  87. package/dist/development/src/model/migrations/MigrationAlterer.js.map +1 -1
  88. package/dist/development/src/model/migrations/ProjectMigrator.cjs +94 -5
  89. package/dist/development/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  90. package/dist/development/src/model/migrations/ProjectMigrator.js +96 -7
  91. package/dist/development/src/model/migrations/ProjectMigrator.js.map +1 -1
  92. package/dist/development/src/model/migrations/SchemaProvider.cjs +1 -1
  93. package/dist/development/src/model/migrations/SchemaProvider.cjs.map +1 -1
  94. package/dist/development/src/model/migrations/SchemaProvider.js +1 -1
  95. package/dist/development/src/model/migrations/SchemaProvider.js.map +1 -1
  96. package/dist/development/src/model/queries/events/EventQueryHelpers.cjs +16 -8
  97. package/dist/development/src/model/queries/events/EventQueryHelpers.cjs.map +1 -1
  98. package/dist/development/src/model/queries/events/EventQueryHelpers.js +17 -9
  99. package/dist/development/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  100. package/dist/development/src/model/queries/events/EventsQuery.cjs.map +1 -1
  101. package/dist/development/src/model/queries/events/EventsQuery.js.map +1 -1
  102. package/dist/development/src/model/queries/migrations/ExecutedMigrationByVersionQuery.cjs.map +1 -1
  103. package/dist/development/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  104. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQuery.cjs.map +1 -1
  105. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  106. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQueryHelper.cjs.map +1 -1
  107. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js.map +1 -1
  108. package/dist/development/src/model/queries/schema/SchemaQuery.cjs +5 -1
  109. package/dist/development/src/model/queries/schema/SchemaQuery.cjs.map +1 -1
  110. package/dist/development/src/model/queries/schema/SchemaQuery.js +5 -1
  111. package/dist/development/src/model/queries/schema/SchemaQuery.js.map +1 -1
  112. package/dist/development/src/model/queries/stages/StageBySlugQuery.cjs.map +1 -1
  113. package/dist/development/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  114. package/dist/development/src/model/queries/stages/StageQueryFactory.cjs.map +1 -1
  115. package/dist/development/src/model/queries/stages/StageQueryFactory.js.map +1 -1
  116. package/dist/development/src/model/queries/stages/StagesQuery.cjs.map +1 -1
  117. package/dist/development/src/model/queries/stages/StagesQuery.js.map +1 -1
  118. package/dist/development/src/model/stages/StageCreator.cjs.map +1 -1
  119. package/dist/development/src/model/stages/StageCreator.js.map +1 -1
  120. package/dist/development/src/resolvers/ResolverFactory.cjs +4 -1
  121. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  122. package/dist/development/src/resolvers/ResolverFactory.js +4 -1
  123. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  124. package/dist/development/src/resolvers/SystemResolverContext.cjs.map +1 -1
  125. package/dist/development/src/resolvers/SystemResolverContext.js.map +1 -1
  126. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs +49 -1
  127. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  128. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js +49 -1
  129. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  130. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  131. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  132. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
  133. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  134. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
  135. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  136. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  137. package/dist/development/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  138. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  139. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  140. package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -1
  141. package/dist/development/src/resolvers/query/SchemaQueryResolver.js.map +1 -1
  142. package/dist/development/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  143. package/dist/development/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  144. package/dist/development/src/resolvers/types/EventOldValuesResolver.cjs.map +1 -1
  145. package/dist/development/src/resolvers/types/EventOldValuesResolver.js.map +1 -1
  146. package/dist/development/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  147. package/dist/development/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  148. package/dist/development/src/schema/dev.graphql.cjs +1 -1
  149. package/dist/development/src/schema/dev.graphql.cjs.map +1 -1
  150. package/dist/development/src/schema/dev.graphql.js +1 -1
  151. package/dist/development/src/schema/dev.graphql.js.map +1 -1
  152. package/dist/development/src/schema/system.graphql.cjs +39 -3
  153. package/dist/development/src/schema/system.graphql.cjs.map +1 -1
  154. package/dist/development/src/schema/system.graphql.js +39 -3
  155. package/dist/development/src/schema/system.graphql.js.map +1 -1
  156. package/dist/development/src/schema/types.cjs +2 -0
  157. package/dist/development/src/schema/types.cjs.map +1 -1
  158. package/dist/development/src/schema/types.js +2 -0
  159. package/dist/development/src/schema/types.js.map +1 -1
  160. package/dist/development/src/utils/batchQuery.cjs.map +1 -1
  161. package/dist/development/src/utils/batchQuery.js.map +1 -1
  162. package/dist/production/src/SystemContainer.cjs.map +1 -1
  163. package/dist/production/src/SystemContainer.js.map +1 -1
  164. package/dist/production/src/migrations/2020-03-27-130000-project-migrations.cjs.map +1 -1
  165. package/dist/production/src/migrations/2020-03-27-130000-project-migrations.js.map +1 -1
  166. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  167. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  168. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  169. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  170. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  171. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  172. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  173. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  174. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  175. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  176. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  177. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  178. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  179. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  180. package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -1
  181. package/dist/production/src/migrations/2024-06-28-153001-schema-init.js.map +1 -1
  182. package/dist/production/src/migrations/2025-03-14-110000-fix-missing-index.cjs.map +1 -1
  183. package/dist/production/src/migrations/2025-03-14-110000-fix-missing-index.js.map +1 -1
  184. package/dist/production/src/migrations/2026-06-01-120000-event-truncate.cjs +13 -0
  185. package/dist/production/src/migrations/2026-06-01-120000-event-truncate.cjs.map +1 -0
  186. package/dist/production/src/migrations/2026-06-01-120000-event-truncate.js +14 -0
  187. package/dist/production/src/migrations/2026-06-01-120000-event-truncate.js.map +1 -0
  188. package/dist/production/src/migrations/runner.cjs +3 -1
  189. package/dist/production/src/migrations/runner.cjs.map +1 -1
  190. package/dist/production/src/migrations/runner.js +3 -1
  191. package/dist/production/src/migrations/runner.js.map +1 -1
  192. package/dist/production/src/migrations/snapshot-factory.cjs.map +1 -1
  193. package/dist/production/src/migrations/snapshot-factory.js.map +1 -1
  194. package/dist/production/src/migrations/snapshot.cjs +5 -4
  195. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  196. package/dist/production/src/migrations/snapshot.js +5 -4
  197. package/dist/production/src/migrations/snapshot.js.map +1 -1
  198. package/dist/production/src/model/ProjectInitializer.cjs.map +1 -1
  199. package/dist/production/src/model/ProjectInitializer.js.map +1 -1
  200. package/dist/production/src/model/ProjectTruncateExecutor.cjs +3 -3
  201. package/dist/production/src/model/ProjectTruncateExecutor.cjs.map +1 -1
  202. package/dist/production/src/model/ProjectTruncateExecutor.js +3 -3
  203. package/dist/production/src/model/ProjectTruncateExecutor.js.map +1 -1
  204. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  205. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  206. package/dist/production/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  207. package/dist/production/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  208. package/dist/production/src/model/authorization/StageScope.cjs.map +1 -1
  209. package/dist/production/src/model/authorization/StageScope.js.map +1 -1
  210. package/dist/production/src/model/commands/CommandBus.cjs.map +1 -1
  211. package/dist/production/src/model/commands/CommandBus.js.map +1 -1
  212. package/dist/production/src/model/commands/events/TruncateEventsCommand.cjs +25 -2
  213. package/dist/production/src/model/commands/events/TruncateEventsCommand.cjs.map +1 -1
  214. package/dist/production/src/model/commands/events/TruncateEventsCommand.js +26 -3
  215. package/dist/production/src/model/commands/events/TruncateEventsCommand.js.map +1 -1
  216. package/dist/production/src/model/commands/migrations/DeleteMigrationCommand.cjs.map +1 -1
  217. package/dist/production/src/model/commands/migrations/DeleteMigrationCommand.js.map +1 -1
  218. package/dist/production/src/model/commands/migrations/ModifyMigrationCommand.cjs.map +1 -1
  219. package/dist/production/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  220. package/dist/production/src/model/commands/migrations/SaveMigrationCommand.cjs.map +1 -1
  221. package/dist/production/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  222. package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -1
  223. package/dist/production/src/model/commands/schema/SaveSchemaCommand.js.map +1 -1
  224. package/dist/production/src/model/commands/stages/CreateStageCommand.cjs.map +1 -1
  225. package/dist/production/src/model/commands/stages/CreateStageCommand.js.map +1 -1
  226. package/dist/production/src/model/database/DatabaseContext.cjs.map +1 -1
  227. package/dist/production/src/model/database/DatabaseContext.js.map +1 -1
  228. package/dist/production/src/model/events/EventResponseBuilder.cjs +6 -1
  229. package/dist/production/src/model/events/EventResponseBuilder.cjs.map +1 -1
  230. package/dist/production/src/model/events/EventResponseBuilder.js +6 -1
  231. package/dist/production/src/model/events/EventResponseBuilder.js.map +1 -1
  232. package/dist/production/src/model/events/EventResponseHelper.cjs.map +1 -1
  233. package/dist/production/src/model/events/EventResponseHelper.js.map +1 -1
  234. package/dist/production/src/model/events/identityUtils.cjs.map +1 -1
  235. package/dist/production/src/model/events/identityUtils.js.map +1 -1
  236. package/dist/production/src/model/events/types.cjs +17 -0
  237. package/dist/production/src/model/events/types.cjs.map +1 -1
  238. package/dist/production/src/model/events/types.js +17 -0
  239. package/dist/production/src/model/events/types.js.map +1 -1
  240. package/dist/production/src/model/helpers/stageHelpers.cjs.map +1 -1
  241. package/dist/production/src/model/helpers/stageHelpers.js.map +1 -1
  242. package/dist/production/src/model/metadata/SchemaDatabaseMetadataResolverStore.cjs.map +1 -1
  243. package/dist/production/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -1
  244. package/dist/production/src/model/migrations/ExecutedMigrationsResolver.cjs.map +1 -1
  245. package/dist/production/src/model/migrations/ExecutedMigrationsResolver.js.map +1 -1
  246. package/dist/production/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  247. package/dist/production/src/model/migrations/MigrationAlterer.js.map +1 -1
  248. package/dist/production/src/model/migrations/ProjectMigrator.cjs +94 -5
  249. package/dist/production/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  250. package/dist/production/src/model/migrations/ProjectMigrator.js +96 -7
  251. package/dist/production/src/model/migrations/ProjectMigrator.js.map +1 -1
  252. package/dist/production/src/model/migrations/SchemaProvider.cjs +1 -1
  253. package/dist/production/src/model/migrations/SchemaProvider.cjs.map +1 -1
  254. package/dist/production/src/model/migrations/SchemaProvider.js +1 -1
  255. package/dist/production/src/model/migrations/SchemaProvider.js.map +1 -1
  256. package/dist/production/src/model/queries/events/EventQueryHelpers.cjs +16 -8
  257. package/dist/production/src/model/queries/events/EventQueryHelpers.cjs.map +1 -1
  258. package/dist/production/src/model/queries/events/EventQueryHelpers.js +17 -9
  259. package/dist/production/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  260. package/dist/production/src/model/queries/events/EventsQuery.cjs.map +1 -1
  261. package/dist/production/src/model/queries/events/EventsQuery.js.map +1 -1
  262. package/dist/production/src/model/queries/migrations/ExecutedMigrationByVersionQuery.cjs.map +1 -1
  263. package/dist/production/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  264. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQuery.cjs.map +1 -1
  265. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  266. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQueryHelper.cjs.map +1 -1
  267. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js.map +1 -1
  268. package/dist/production/src/model/queries/schema/SchemaQuery.cjs +5 -1
  269. package/dist/production/src/model/queries/schema/SchemaQuery.cjs.map +1 -1
  270. package/dist/production/src/model/queries/schema/SchemaQuery.js +5 -1
  271. package/dist/production/src/model/queries/schema/SchemaQuery.js.map +1 -1
  272. package/dist/production/src/model/queries/stages/StageBySlugQuery.cjs.map +1 -1
  273. package/dist/production/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  274. package/dist/production/src/model/queries/stages/StageQueryFactory.cjs.map +1 -1
  275. package/dist/production/src/model/queries/stages/StageQueryFactory.js.map +1 -1
  276. package/dist/production/src/model/queries/stages/StagesQuery.cjs.map +1 -1
  277. package/dist/production/src/model/queries/stages/StagesQuery.js.map +1 -1
  278. package/dist/production/src/model/stages/StageCreator.cjs.map +1 -1
  279. package/dist/production/src/model/stages/StageCreator.js.map +1 -1
  280. package/dist/production/src/resolvers/ResolverFactory.cjs +4 -1
  281. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  282. package/dist/production/src/resolvers/ResolverFactory.js +4 -1
  283. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  284. package/dist/production/src/resolvers/SystemResolverContext.cjs.map +1 -1
  285. package/dist/production/src/resolvers/SystemResolverContext.js.map +1 -1
  286. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs +49 -1
  287. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  288. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js +49 -1
  289. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  290. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  291. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  292. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
  293. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  294. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
  295. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  296. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  297. package/dist/production/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  298. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  299. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  300. package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -1
  301. package/dist/production/src/resolvers/query/SchemaQueryResolver.js.map +1 -1
  302. package/dist/production/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  303. package/dist/production/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  304. package/dist/production/src/resolvers/types/EventOldValuesResolver.cjs.map +1 -1
  305. package/dist/production/src/resolvers/types/EventOldValuesResolver.js.map +1 -1
  306. package/dist/production/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  307. package/dist/production/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  308. package/dist/production/src/schema/dev.graphql.cjs +1 -1
  309. package/dist/production/src/schema/dev.graphql.cjs.map +1 -1
  310. package/dist/production/src/schema/dev.graphql.js +1 -1
  311. package/dist/production/src/schema/dev.graphql.js.map +1 -1
  312. package/dist/production/src/schema/system.graphql.cjs +39 -3
  313. package/dist/production/src/schema/system.graphql.cjs.map +1 -1
  314. package/dist/production/src/schema/system.graphql.js +39 -3
  315. package/dist/production/src/schema/system.graphql.js.map +1 -1
  316. package/dist/production/src/schema/types.cjs +2 -0
  317. package/dist/production/src/schema/types.cjs.map +1 -1
  318. package/dist/production/src/schema/types.js +2 -0
  319. package/dist/production/src/schema/types.js.map +1 -1
  320. package/dist/production/src/utils/batchQuery.cjs.map +1 -1
  321. package/dist/production/src/utils/batchQuery.js.map +1 -1
  322. package/dist/tests/cases/unit/projectMigratorSchemaState.test.d.ts +2 -0
  323. package/dist/tests/cases/unit/projectMigratorSchemaState.test.d.ts.map +1 -0
  324. package/dist/tests/cases/unit/truncateEventsCommand.test.d.ts +2 -0
  325. package/dist/tests/cases/unit/truncateEventsCommand.test.d.ts.map +1 -0
  326. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  327. package/dist/types/SystemContainer.d.ts +6 -6
  328. package/dist/types/SystemContainer.d.ts.map +1 -1
  329. package/dist/types/index.d.ts +7 -7
  330. package/dist/types/index.d.ts.map +1 -1
  331. package/dist/types/migrations/2020-03-27-130000-project-migrations.d.ts +1 -1
  332. package/dist/types/migrations/2020-03-27-130000-project-migrations.d.ts.map +1 -1
  333. package/dist/types/migrations/2020-05-06-150000-composed-primary.d.ts +1 -1
  334. package/dist/types/migrations/2020-05-06-150000-composed-primary.d.ts.map +1 -1
  335. package/dist/types/migrations/2020-06-01-103000-event-trigger-perf.d.ts +1 -1
  336. package/dist/types/migrations/2020-06-01-103000-event-trigger-perf.d.ts.map +1 -1
  337. package/dist/types/migrations/2021-05-07-155800-event-log-rework.d.ts +1 -1
  338. package/dist/types/migrations/2021-05-07-155800-event-log-rework.d.ts.map +1 -1
  339. package/dist/types/migrations/2021-05-19-1232000-event-log-fix-constraint.d.ts +1 -1
  340. package/dist/types/migrations/2021-05-19-1232000-event-log-fix-constraint.d.ts.map +1 -1
  341. package/dist/types/migrations/2022-10-03-110000-table-on-delete.d.ts +1 -1
  342. package/dist/types/migrations/2022-10-03-110000-table-on-delete.d.ts.map +1 -1
  343. package/dist/types/migrations/2023-09-11-174000-fix-on-delete.d.ts +1 -1
  344. package/dist/types/migrations/2023-09-11-174000-fix-on-delete.d.ts.map +1 -1
  345. package/dist/types/migrations/2023-10-19-173000-fix-unique.d.ts +1 -1
  346. package/dist/types/migrations/2023-10-19-173000-fix-unique.d.ts.map +1 -1
  347. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts +1 -1
  348. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts.map +1 -1
  349. package/dist/types/migrations/2025-03-14-110000-fix-missing-index.d.ts +1 -1
  350. package/dist/types/migrations/2025-03-14-110000-fix-missing-index.d.ts.map +1 -1
  351. package/dist/types/migrations/2026-06-01-120000-event-truncate.d.ts +3 -0
  352. package/dist/types/migrations/2026-06-01-120000-event-truncate.d.ts.map +1 -0
  353. package/dist/types/migrations/index.d.ts +2 -2
  354. package/dist/types/migrations/index.d.ts.map +1 -1
  355. package/dist/types/migrations/runner.d.ts +2 -2
  356. package/dist/types/migrations/runner.d.ts.map +1 -1
  357. package/dist/types/migrations/snapshot-factory.d.ts +1 -1
  358. package/dist/types/migrations/snapshot-factory.d.ts.map +1 -1
  359. package/dist/types/migrations/snapshot.d.ts +1 -1
  360. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  361. package/dist/types/migrations/types.d.ts +2 -2
  362. package/dist/types/migrations/types.d.ts.map +1 -1
  363. package/dist/types/model/ProjectInitializer.d.ts +4 -4
  364. package/dist/types/model/ProjectInitializer.d.ts.map +1 -1
  365. package/dist/types/model/ProjectTruncateExecutor.d.ts +3 -3
  366. package/dist/types/model/ProjectTruncateExecutor.d.ts.map +1 -1
  367. package/dist/types/model/authorization/StagePermissionsFactory.d.ts +1 -1
  368. package/dist/types/model/authorization/StagePermissionsFactory.d.ts.map +1 -1
  369. package/dist/types/model/authorization/StageScope.d.ts +2 -2
  370. package/dist/types/model/authorization/StageScope.d.ts.map +1 -1
  371. package/dist/types/model/authorization/index.d.ts +3 -3
  372. package/dist/types/model/authorization/index.d.ts.map +1 -1
  373. package/dist/types/model/commands/Command.d.ts +2 -2
  374. package/dist/types/model/commands/Command.d.ts.map +1 -1
  375. package/dist/types/model/commands/CommandBus.d.ts +2 -2
  376. package/dist/types/model/commands/CommandBus.d.ts.map +1 -1
  377. package/dist/types/model/commands/events/TruncateEventsCommand.d.ts +12 -3
  378. package/dist/types/model/commands/events/TruncateEventsCommand.d.ts.map +1 -1
  379. package/dist/types/model/commands/events/index.d.ts +1 -1
  380. package/dist/types/model/commands/events/index.d.ts.map +1 -1
  381. package/dist/types/model/commands/index.d.ts +5 -5
  382. package/dist/types/model/commands/index.d.ts.map +1 -1
  383. package/dist/types/model/commands/migrations/DeleteMigrationCommand.d.ts +1 -1
  384. package/dist/types/model/commands/migrations/DeleteMigrationCommand.d.ts.map +1 -1
  385. package/dist/types/model/commands/migrations/ModifyMigrationCommand.d.ts +1 -1
  386. package/dist/types/model/commands/migrations/ModifyMigrationCommand.d.ts.map +1 -1
  387. package/dist/types/model/commands/migrations/SaveMigrationCommand.d.ts +2 -2
  388. package/dist/types/model/commands/migrations/SaveMigrationCommand.d.ts.map +1 -1
  389. package/dist/types/model/commands/migrations/index.d.ts +2 -2
  390. package/dist/types/model/commands/migrations/index.d.ts.map +1 -1
  391. package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts +2 -2
  392. package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts.map +1 -1
  393. package/dist/types/model/commands/stages/CreateStageCommand.d.ts +2 -2
  394. package/dist/types/model/commands/stages/CreateStageCommand.d.ts.map +1 -1
  395. package/dist/types/model/commands/stages/TruncateStagesCommand.d.ts +1 -1
  396. package/dist/types/model/commands/stages/TruncateStagesCommand.d.ts.map +1 -1
  397. package/dist/types/model/commands/stages/index.d.ts +2 -2
  398. package/dist/types/model/commands/stages/index.d.ts.map +1 -1
  399. package/dist/types/model/database/DatabaseContext.d.ts +2 -2
  400. package/dist/types/model/database/DatabaseContext.d.ts.map +1 -1
  401. package/dist/types/model/database/index.d.ts +1 -1
  402. package/dist/types/model/database/index.d.ts.map +1 -1
  403. package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts +2 -2
  404. package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts.map +1 -1
  405. package/dist/types/model/dependencies/index.d.ts +2 -2
  406. package/dist/types/model/dependencies/index.d.ts.map +1 -1
  407. package/dist/types/model/dependencies/tenant/index.d.ts +1 -1
  408. package/dist/types/model/dependencies/tenant/index.d.ts.map +1 -1
  409. package/dist/types/model/dtos/index.d.ts +2 -2
  410. package/dist/types/model/dtos/index.d.ts.map +1 -1
  411. package/dist/types/model/events/EventResponseBuilder.d.ts +4 -4
  412. package/dist/types/model/events/EventResponseBuilder.d.ts.map +1 -1
  413. package/dist/types/model/events/EventResponseHelper.d.ts +1 -1
  414. package/dist/types/model/events/EventResponseHelper.d.ts.map +1 -1
  415. package/dist/types/model/events/identityUtils.d.ts +1 -1
  416. package/dist/types/model/events/identityUtils.d.ts.map +1 -1
  417. package/dist/types/model/events/index.d.ts +2 -2
  418. package/dist/types/model/events/index.d.ts.map +1 -1
  419. package/dist/types/model/events/types.d.ts +12 -2
  420. package/dist/types/model/events/types.d.ts.map +1 -1
  421. package/dist/types/model/helpers/index.d.ts +2 -2
  422. package/dist/types/model/helpers/index.d.ts.map +1 -1
  423. package/dist/types/model/helpers/stageHelpers.d.ts +1 -1
  424. package/dist/types/model/helpers/stageHelpers.d.ts.map +1 -1
  425. package/dist/types/model/index.d.ts +13 -13
  426. package/dist/types/model/index.d.ts.map +1 -1
  427. package/dist/types/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts +1 -1
  428. package/dist/types/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts.map +1 -1
  429. package/dist/types/model/metadata/index.d.ts +1 -1
  430. package/dist/types/model/metadata/index.d.ts.map +1 -1
  431. package/dist/types/model/migrations/ExecutedMigrationsResolver.d.ts +2 -2
  432. package/dist/types/model/migrations/ExecutedMigrationsResolver.d.ts.map +1 -1
  433. package/dist/types/model/migrations/MigrationAlterer.d.ts +3 -3
  434. package/dist/types/model/migrations/MigrationAlterer.d.ts.map +1 -1
  435. package/dist/types/model/migrations/MigrationInput.d.ts +6 -0
  436. package/dist/types/model/migrations/MigrationInput.d.ts.map +1 -1
  437. package/dist/types/model/migrations/ProjectMigrator.d.ts +28 -10
  438. package/dist/types/model/migrations/ProjectMigrator.d.ts.map +1 -1
  439. package/dist/types/model/migrations/SchemaProvider.d.ts +2 -2
  440. package/dist/types/model/migrations/SchemaProvider.d.ts.map +1 -1
  441. package/dist/types/model/migrations/index.d.ts +4 -4
  442. package/dist/types/model/migrations/index.d.ts.map +1 -1
  443. package/dist/types/model/queries/events/EventQueryHelpers.d.ts +4 -4
  444. package/dist/types/model/queries/events/EventQueryHelpers.d.ts.map +1 -1
  445. package/dist/types/model/queries/events/EventsQuery.d.ts +2 -2
  446. package/dist/types/model/queries/events/EventsQuery.d.ts.map +1 -1
  447. package/dist/types/model/queries/events/index.d.ts +3 -3
  448. package/dist/types/model/queries/events/index.d.ts.map +1 -1
  449. package/dist/types/model/queries/index.d.ts +4 -4
  450. package/dist/types/model/queries/index.d.ts.map +1 -1
  451. package/dist/types/model/queries/migrations/ExecutedMigrationByVersionQuery.d.ts +1 -1
  452. package/dist/types/model/queries/migrations/ExecutedMigrationByVersionQuery.d.ts.map +1 -1
  453. package/dist/types/model/queries/migrations/ExecutedMigrationsQuery.d.ts +1 -1
  454. package/dist/types/model/queries/migrations/ExecutedMigrationsQuery.d.ts.map +1 -1
  455. package/dist/types/model/queries/migrations/ExecutedMigrationsQueryHelper.d.ts +1 -1
  456. package/dist/types/model/queries/migrations/ExecutedMigrationsQueryHelper.d.ts.map +1 -1
  457. package/dist/types/model/queries/migrations/index.d.ts +3 -3
  458. package/dist/types/model/queries/migrations/index.d.ts.map +1 -1
  459. package/dist/types/model/queries/schema/SchemaQuery.d.ts +3 -2
  460. package/dist/types/model/queries/schema/SchemaQuery.d.ts.map +1 -1
  461. package/dist/types/model/queries/schema/index.d.ts +1 -1
  462. package/dist/types/model/queries/schema/index.d.ts.map +1 -1
  463. package/dist/types/model/queries/stages/StageBySlugQuery.d.ts +1 -1
  464. package/dist/types/model/queries/stages/StageBySlugQuery.d.ts.map +1 -1
  465. package/dist/types/model/queries/stages/StageQueryFactory.d.ts +1 -1
  466. package/dist/types/model/queries/stages/StageQueryFactory.d.ts.map +1 -1
  467. package/dist/types/model/queries/stages/StagesQuery.d.ts +1 -1
  468. package/dist/types/model/queries/stages/StagesQuery.d.ts.map +1 -1
  469. package/dist/types/model/queries/stages/index.d.ts +3 -3
  470. package/dist/types/model/queries/stages/index.d.ts.map +1 -1
  471. package/dist/types/model/stages/StageCreator.d.ts +2 -2
  472. package/dist/types/model/stages/StageCreator.d.ts.map +1 -1
  473. package/dist/types/model/stages/index.d.ts +1 -1
  474. package/dist/types/model/stages/index.d.ts.map +1 -1
  475. package/dist/types/resolvers/Resolver.d.ts +1 -1
  476. package/dist/types/resolvers/Resolver.d.ts.map +1 -1
  477. package/dist/types/resolvers/ResolverFactory.d.ts +5 -5
  478. package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
  479. package/dist/types/resolvers/SystemResolverContext.d.ts +4 -4
  480. package/dist/types/resolvers/SystemResolverContext.d.ts.map +1 -1
  481. package/dist/types/resolvers/index.d.ts +5 -5
  482. package/dist/types/resolvers/index.d.ts.map +1 -1
  483. package/dist/types/resolvers/mutation/MigrateMutationResolver.d.ts +6 -4
  484. package/dist/types/resolvers/mutation/MigrateMutationResolver.d.ts.map +1 -1
  485. package/dist/types/resolvers/mutation/MigrationAlterMutationResolver.d.ts +4 -4
  486. package/dist/types/resolvers/mutation/MigrationAlterMutationResolver.d.ts.map +1 -1
  487. package/dist/types/resolvers/mutation/TruncateMutationResolver.d.ts +4 -4
  488. package/dist/types/resolvers/mutation/TruncateMutationResolver.d.ts.map +1 -1
  489. package/dist/types/resolvers/mutation/index.d.ts +3 -3
  490. package/dist/types/resolvers/mutation/index.d.ts.map +1 -1
  491. package/dist/types/resolvers/query/EventsQueryResolver.d.ts +4 -4
  492. package/dist/types/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
  493. package/dist/types/resolvers/query/ExecutedMigrationsQueryResolver.d.ts +3 -3
  494. package/dist/types/resolvers/query/ExecutedMigrationsQueryResolver.d.ts.map +1 -1
  495. package/dist/types/resolvers/query/SchemaQueryResolver.d.ts +2 -2
  496. package/dist/types/resolvers/query/SchemaQueryResolver.d.ts.map +1 -1
  497. package/dist/types/resolvers/query/StagesQueryResolver.d.ts +3 -3
  498. package/dist/types/resolvers/query/StagesQueryResolver.d.ts.map +1 -1
  499. package/dist/types/resolvers/query/index.d.ts +3 -3
  500. package/dist/types/resolvers/query/index.d.ts.map +1 -1
  501. package/dist/types/resolvers/types/EventOldValuesResolver.d.ts +2 -2
  502. package/dist/types/resolvers/types/EventOldValuesResolver.d.ts.map +1 -1
  503. package/dist/types/resolvers/types/OldValuesHelpers.d.ts +2 -2
  504. package/dist/types/resolvers/types/OldValuesHelpers.d.ts.map +1 -1
  505. package/dist/types/resolvers/types/index.d.ts +1 -1
  506. package/dist/types/resolvers/types/index.d.ts.map +1 -1
  507. package/dist/types/schema/index.d.ts +2 -2
  508. package/dist/types/schema/index.d.ts.map +1 -1
  509. package/dist/types/schema/system.graphql.d.ts.map +1 -1
  510. package/dist/types/schema/types.d.ts +80 -54
  511. package/dist/types/schema/types.d.ts.map +1 -1
  512. package/dist/types/tsconfig.tsbuildinfo +1 -1
  513. package/dist/types/utils/index.d.ts +7 -7
  514. package/dist/types/utils/index.d.ts.map +1 -1
  515. package/dist/types/utils/providers.d.ts +1 -1
  516. package/dist/types/utils/providers.d.ts.map +1 -1
  517. package/package.json +12 -12
  518. package/src/SystemContainer.ts +6 -6
  519. package/src/bin/runMigrations.ts +2 -2
  520. package/src/index.ts +7 -7
  521. package/src/migrations/2020-03-27-130000-project-migrations.ts +1 -1
  522. package/src/migrations/2020-05-06-150000-composed-primary.ts +2 -2
  523. package/src/migrations/2020-06-01-103000-event-trigger-perf.ts +2 -2
  524. package/src/migrations/2021-05-07-155800-event-log-rework.ts +2 -2
  525. package/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts +2 -2
  526. package/src/migrations/2022-10-03-110000-table-on-delete.ts +1 -1
  527. package/src/migrations/2023-09-11-174000-fix-on-delete.ts +1 -1
  528. package/src/migrations/2023-10-19-173000-fix-unique.ts +1 -1
  529. package/src/migrations/2024-06-28-153001-schema-init.ts +1 -1
  530. package/src/migrations/2025-03-14-110000-fix-missing-index.ts +1 -1
  531. package/src/migrations/2026-06-01-120000-event-truncate.ts +18 -0
  532. package/src/migrations/index.ts +2 -2
  533. package/src/migrations/runner.ts +31 -29
  534. package/src/migrations/snapshot-factory.ts +1 -1
  535. package/src/migrations/snapshot-template-start.txt +1 -1
  536. package/src/migrations/snapshot.ts +6 -5
  537. package/src/migrations/types.ts +2 -2
  538. package/src/model/ProjectInitializer.ts +4 -4
  539. package/src/model/ProjectTruncateExecutor.ts +8 -8
  540. package/src/model/authorization/PermissionsFactory.ts +1 -1
  541. package/src/model/authorization/StagePermissionsFactory.ts +2 -2
  542. package/src/model/authorization/StageScope.ts +3 -3
  543. package/src/model/authorization/index.ts +3 -3
  544. package/src/model/commands/Command.ts +2 -2
  545. package/src/model/commands/CommandBus.ts +2 -2
  546. package/src/model/commands/events/TruncateEventsCommand.ts +45 -5
  547. package/src/model/commands/events/index.ts +1 -1
  548. package/src/model/commands/index.ts +5 -5
  549. package/src/model/commands/migrations/DeleteMigrationCommand.ts +1 -1
  550. package/src/model/commands/migrations/ModifyMigrationCommand.ts +2 -2
  551. package/src/model/commands/migrations/SaveMigrationCommand.ts +2 -2
  552. package/src/model/commands/migrations/index.ts +2 -2
  553. package/src/model/commands/schema/SaveSchemaCommand.ts +2 -2
  554. package/src/model/commands/stages/CreateStageCommand.ts +3 -3
  555. package/src/model/commands/stages/TruncateStagesCommand.ts +1 -1
  556. package/src/model/commands/stages/index.ts +2 -2
  557. package/src/model/database/DatabaseContext.ts +2 -2
  558. package/src/model/database/index.ts +1 -1
  559. package/src/model/dependencies/content/ContentQueryExecutor.ts +2 -2
  560. package/src/model/dependencies/index.ts +2 -2
  561. package/src/model/dependencies/tenant/index.ts +1 -1
  562. package/src/model/dtos/index.ts +2 -2
  563. package/src/model/events/EventResponseBuilder.ts +12 -7
  564. package/src/model/events/EventResponseHelper.ts +1 -1
  565. package/src/model/events/identityUtils.ts +2 -2
  566. package/src/model/events/index.ts +2 -2
  567. package/src/model/events/types.ts +15 -1
  568. package/src/model/helpers/index.ts +2 -2
  569. package/src/model/helpers/stageHelpers.ts +1 -1
  570. package/src/model/index.ts +13 -13
  571. package/src/model/metadata/SchemaDatabaseMetadataResolverStore.ts +1 -1
  572. package/src/model/metadata/index.ts +1 -1
  573. package/src/model/migrations/ExecutedMigrationsResolver.ts +3 -3
  574. package/src/model/migrations/MigrationAlterer.ts +6 -6
  575. package/src/model/migrations/MigrationInput.ts +7 -0
  576. package/src/model/migrations/ProjectMigrator.ts +133 -17
  577. package/src/model/migrations/SchemaProvider.ts +4 -4
  578. package/src/model/migrations/index.ts +4 -4
  579. package/src/model/queries/events/EventQueryHelpers.ts +21 -13
  580. package/src/model/queries/events/EventsQuery.ts +3 -3
  581. package/src/model/queries/events/index.ts +3 -3
  582. package/src/model/queries/index.ts +4 -4
  583. package/src/model/queries/migrations/ExecutedMigrationByVersionQuery.ts +2 -2
  584. package/src/model/queries/migrations/ExecutedMigrationsQuery.ts +2 -2
  585. package/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts +1 -1
  586. package/src/model/queries/migrations/index.ts +3 -3
  587. package/src/model/queries/schema/SchemaQuery.ts +5 -1
  588. package/src/model/queries/schema/index.ts +1 -1
  589. package/src/model/queries/stages/StageBySlugQuery.ts +2 -2
  590. package/src/model/queries/stages/StageQueryFactory.ts +1 -1
  591. package/src/model/queries/stages/StagesQuery.ts +2 -2
  592. package/src/model/queries/stages/index.ts +3 -3
  593. package/src/model/stages/StageCreator.ts +4 -4
  594. package/src/model/stages/index.ts +1 -1
  595. package/src/resolvers/Resolver.ts +1 -1
  596. package/src/resolvers/ResolverFactory.ts +9 -6
  597. package/src/resolvers/SystemResolverContext.ts +6 -6
  598. package/src/resolvers/index.ts +5 -5
  599. package/src/resolvers/mutation/MigrateMutationResolver.ts +64 -7
  600. package/src/resolvers/mutation/MigrationAlterMutationResolver.ts +4 -4
  601. package/src/resolvers/mutation/TruncateMutationResolver.ts +5 -5
  602. package/src/resolvers/mutation/index.ts +3 -3
  603. package/src/resolvers/query/EventsQueryResolver.ts +4 -4
  604. package/src/resolvers/query/ExecutedMigrationsQueryResolver.ts +4 -4
  605. package/src/resolvers/query/SchemaQueryResolver.ts +3 -3
  606. package/src/resolvers/query/StagesQueryResolver.ts +4 -4
  607. package/src/resolvers/query/index.ts +3 -3
  608. package/src/resolvers/types/EventOldValuesResolver.ts +3 -3
  609. package/src/resolvers/types/OldValuesHelpers.ts +3 -3
  610. package/src/resolvers/types/index.ts +1 -1
  611. package/src/schema/dev.graphql.ts +1 -1
  612. package/src/schema/index.ts +4 -2
  613. package/src/schema/system.graphql.ts +39 -3
  614. package/src/schema/types.ts +108 -38
  615. package/src/utils/batchQuery.ts +1 -1
  616. package/src/utils/index.ts +7 -7
  617. package/src/utils/providers.ts +1 -1
  618. package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +1 -1
  619. package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +1 -1
  620. package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +1 -1
  621. package/tests/cases/migrations/2023-09-11-174000-fix-on-delete.test.ts +1 -1
  622. package/tests/cases/migrations/2023-10-19-173000-fix-unique.test.ts +1 -1
  623. package/tests/cases/migrations/2025-03-14-110000-fix-missing-index.test.ts +1 -1
  624. package/tests/cases/unit/eventsQuery.test.ts +3 -3
  625. package/tests/cases/unit/projectMigratorSchemaState.test.ts +48 -0
  626. package/tests/cases/unit/truncateEventsCommand.test.ts +54 -0
  627. package/vitest.config.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectMigrator.js","sources":["../../../../../../packages/engine-system-api/src/model/migrations/ProjectMigrator.ts"],"sourcesContent":["import { calculateMigrationChecksum, Migration, MigrationDescriber, MigrationVersionHelper } from '@contember/schema-migrations'\nimport { Client, DatabaseMetadata, QueryError, wrapIdentifier } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SaveMigrationCommand } from '../commands'\nimport { Stage } from '../dtos'\nimport { DatabaseContext } from '../database'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'\nimport { MigrateErrorCode } from '../../schema'\nimport { calculateSchemaChecksum, SchemaValidator, SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { logger } from '@contember/logger'\nimport { MigrationsDatabaseMetadataResolverStoreFactory, SchemaDatabaseMetadataResolverStore } from '../metadata'\nimport { ContentMigrationQuery, MigrationInput } from './MigrationInput'\nimport { ContentQueryExecutor } from '../dependencies'\nimport { SchemaProvider } from './SchemaProvider'\nimport { SaveSchemaCommand } from '../commands/schema/SaveSchemaCommand'\nimport { ImplementationException } from '../../utils'\n\ntype MigrationVariables = {\n\tsystem_schema: string\n\tproject_slug: string\n}\n\nexport class ProjectMigrator {\n\tconstructor(\n\t\tprivate readonly migrationDescriber: MigrationDescriber,\n\t\tprivate readonly schemaProvider: SchemaProvider,\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly migrationsDatabaseMetadataResolverStoreFactory: MigrationsDatabaseMetadataResolverStoreFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {}\n\n\tpublic async migrate({ db, project, identity, options: { ignoreOrder = false, skipExecuted = false }, migrationsToExecute, stages }: {\n\t\tdb: DatabaseContext\n\t\tproject: { slug: string; systemSchema: string }\n\t\tidentity: { id: string }\n\t\tstages: Stage[]\n\t\tmigrationsToExecute: readonly MigrationInput[]\n\t\toptions: {\n\t\t\tignoreOrder?: boolean\n\t\t\tskipExecuted?: boolean\n\t\t}\n\t}) {\n\t\tif (migrationsToExecute.length === 0) {\n\t\t\treturn\n\t\t}\n\t\tconst schemaWithMeta = await this.schemaProvider.fetch({ db })\n\t\tlet schema = schemaWithMeta.schema\n\t\tlet id = schemaWithMeta.meta.id\n\n\t\tconst validated = await this.validateMigrations(db, schema, schemaWithMeta.meta.version ?? null, migrationsToExecute, { ignoreOrder, skipExecuted })\n\t\tif (validated.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst sorted = [...validated].sort((a, b) => a.version.localeCompare(b.version))\n\n\t\tconst metadataStore = this.migrationsDatabaseMetadataResolverStoreFactory.create(db)\n\n\t\tfor (const migration of sorted) {\n\t\t\tif (migration.type === 'schema') {\n\t\t\t\tconst formatVersion = migration.formatVersion\n\n\t\t\t\tfor (const modification of migration.modifications) {\n\t\t\t\t\t;[schema] = await this.applyModification(\n\t\t\t\t\t\tdb.client,\n\t\t\t\t\t\tstages,\n\t\t\t\t\t\tschema,\n\t\t\t\t\t\tmodification,\n\t\t\t\t\t\tformatVersion,\n\t\t\t\t\t\tmigration.version,\n\t\t\t\t\t\tproject,\n\t\t\t\t\t\tmetadataStore,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} else if (migration.type === 'content') {\n\t\t\t\tif (!id) {\n\t\t\t\t\tthrow new FailedContentMigrationError(migration.version, `Cannot execute content migration without schema`)\n\t\t\t\t}\n\t\t\t\tfor (const query of migration.queries) {\n\t\t\t\t\tawait this.executeContentMigration({\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tdb,\n\t\t\t\t\t\tschema,\n\t\t\t\t\t\tschemaMeta: { id },\n\t\t\t\t\t\tstages,\n\t\t\t\t\t\tdatabaseMetadata: await metadataStore.getMetadata(db.client.schema),\n\t\t\t\t\t\tidentity,\n\t\t\t\t\t\tproject,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t// event log uses deferred constraint triggers, we need to fire them before ALTER\n\t\t\t\tawait db.client.query(`SET CONSTRAINTS ALL IMMEDIATE`)\n\t\t\t\tawait db.client.query(`SET CONSTRAINTS ALL DEFERRED`)\n\t\t\t}\n\t\t\tid = await db.commandBus.execute(new SaveMigrationCommand(migration))\n\t\t}\n\t\tif (!id) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\n\t\tawait db.commandBus.execute(\n\t\t\tnew SaveSchemaCommand({\n\t\t\t\tschema,\n\t\t\t\tmeta: {\n\t\t\t\t\tid,\n\t\t\t\t\tupdatedAt: new Date(),\n\t\t\t\t\tversion: sorted[sorted.length - 1].version,\n\t\t\t\t\tchecksum: calculateSchemaChecksum(schema),\n\t\t\t\t},\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate async executeContentMigration({ query, stages, version, ...ctx }: {\n\t\tversion: string\n\t\tdb: DatabaseContext\n\t\tquery: ContentMigrationQuery\n\t\tstages: Stage[]\n\t\tschema: Schema\n\t\tschemaMeta: { id: number }\n\t\tproject: { slug: string; systemSchema: string }\n\t\tidentity: { id: string }\n\t\tdatabaseMetadata: DatabaseMetadata\n\t}) {\n\t\tconst queryStages = query.stage ? stages.filter(it => it.slug === query.stage) : stages\n\t\tfor (const stage of queryStages) {\n\t\t\tconst response = await this.contentQueryExecutor.execute({\n\t\t\t\tstage,\n\t\t\t\t...ctx,\n\t\t\t}, query)\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new FailedContentMigrationError(version, response.errors.join(', '))\n\t\t\t}\n\t\t\tif (query.checkMutationResult !== false) {\n\t\t\t\tfor (const [key, value] of Object.entries(response.result.data ?? {})) {\n\t\t\t\t\tif (typeof value === 'object' && value !== null && 'ok' in value && !value.ok) {\n\t\t\t\t\t\tconst errorDetails = 'errorMessage' in value ? value.errorMessage : 'No details available. Please fetch errorMessage field.'\n\t\t\t\t\t\tthrow new NotSuccessfulContentMigrationError(version, `Mutation ${key} failed: ${errorDetails}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async validateMigrations(\n\t\tdb: DatabaseContext,\n\t\tschema: Schema,\n\t\tversion: string | null,\n\t\tmigrationsToExecute: readonly MigrationInput[],\n\t\t{ ignoreOrder, skipExecuted }: {\n\t\t\tignoreOrder: boolean\n\t\t\tskipExecuted: boolean\n\t\t},\n\t): Promise<readonly MigrationInput[]> {\n\t\tconst executedMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\t\tconst toExecute: MigrationInput[] = []\n\t\tlet skippedErrors: SchemaValidatorSkippedErrors[] = []\n\t\tfor (const migration of migrationsToExecute) {\n\t\t\tconst executedMigration = executedMigrations.find(it => it.version === migration.version)\n\t\t\tif (executedMigration) {\n\t\t\t\tif (skipExecuted && (migration.type !== 'schema' || executedMigration.checksum === calculateMigrationChecksum(migration))) {\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tthrow new AlreadyExecutedMigrationError(migration.version, `Migration is already executed`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (version && migration.version < version && !ignoreOrder) {\n\t\t\t\tthrow new MustFollowLatestMigrationError(migration.version, `Must follow latest executed migration ${version}`)\n\t\t\t}\n\t\t\tif (migration.type === 'schema') {\n\t\t\t\tconst described = this.migrationDescriber.describeModifications(schema, migration)\n\t\t\t\tif (described.length === 0) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst latestModification = described[described.length - 1]\n\t\t\t\tschema = latestModification.schema\n\t\t\t\tskippedErrors = [\n\t\t\t\t\t...skippedErrors.filter(it => it.skipUntil && MigrationVersionHelper.extractVersion(it.skipUntil) >= migration.version),\n\t\t\t\t\t...migration.skippedErrors ?? [],\n\t\t\t\t]\n\t\t\t\tconst errors = SchemaValidator.validate(schema, skippedErrors)\n\t\t\t\tif (errors.length > 0) {\n\t\t\t\t\tthrow new InvalidSchemaError(\n\t\t\t\t\t\tmigration.version,\n\t\t\t\t\t\t'Migration generates invalid schema: \\n'\n\t\t\t\t\t\t\t+ errors.map(it => `${it.path.join('.')}: [${it.code}] ${it.message}`).join('\\n'),\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttoExecute.push(migration)\n\t\t}\n\t\t// intentionally not using skippedErrors here\n\t\tconst errors = SchemaValidator.validate(schema)\n\t\tif (errors.length > 0) {\n\t\t\tthrow new InvalidSchemaError(\n\t\t\t\ttoExecute[toExecute.length - 1].version,\n\t\t\t\t'Migration generates invalid schema: \\n'\n\t\t\t\t\t+ errors.map(it => it.path.join('.') + ': ' + it.message).join('\\n'),\n\t\t\t)\n\t\t}\n\t\treturn toExecute\n\t}\n\n\tprivate sqlPreprocessor(text: string, variables: MigrationVariables): string {\n\t\treturn Object.entries(variables).reduce(\n\t\t\t(content, [key, value]) => content.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), value),\n\t\t\ttext,\n\t\t)\n\t}\n\n\tprivate async applyModification(\n\t\tdb: Client,\n\t\tstages: Stage[],\n\t\tschema: Schema,\n\t\tmodification: Migration.Modification,\n\t\tformatVersion: number,\n\t\tmigrationVersion: string,\n\t\tproject: { slug: string; systemSchema: string },\n\t\tmetadataStore: SchemaDatabaseMetadataResolverStore,\n\t): Promise<[Schema]> {\n\t\tconst {\n\t\t\tgetSql,\n\t\t\tschema: newSchema,\n\t\t} = this.migrationDescriber.describeModification(schema, modification, { formatVersion })\n\t\tfor (const stage of stages) {\n\t\t\tconst databaseMetadata = await metadataStore.getMetadata(stage.schema)\n\t\t\tconst sql = getSql({\n\t\t\t\tsystemSchema: project.systemSchema,\n\t\t\t\tdatabaseMetadata,\n\t\t\t\tinvalidateDatabaseMetadata: () => metadataStore.invalidate(stage.schema),\n\t\t\t})\n\t\t\tconst processedSql = this.sqlPreprocessor(sql, {\n\t\t\t\tproject_slug: project.slug,\n\t\t\t\tsystem_schema: project.systemSchema,\n\t\t\t})\n\t\t\tawait this.executeOnStage(db, stage, processedSql, migrationVersion)\n\t\t}\n\t\treturn [newSchema]\n\t}\n\n\tprivate async executeOnStage(db: Client, stage: Stage, sql: string, migrationVersion: string) {\n\t\tawait db.query('SET LOCAL search_path TO ' + wrapIdentifier(stage.schema))\n\t\ttry {\n\t\t\tawait db.query(sql)\n\t\t} catch (e) {\n\t\t\tif (e instanceof QueryError) {\n\t\t\t\tlogger.error(e, { message: 'Migration failed' })\n\t\t\t\tthrow new MigrationFailedError(migrationVersion, e.message)\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\t}\n}\n\nexport abstract class MigrationError extends Error {\n\tpublic abstract code: MigrateErrorCode\n\n\tconstructor(public readonly version: string, public readonly migrationError: string) {\n\t\tsuper(`${version}: ${migrationError}`)\n\t}\n}\n\nexport class MustFollowLatestMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.MustFollowLatest\n}\n\nexport class AlreadyExecutedMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.AlreadyExecuted\n}\n\nexport class MigrationFailedError extends MigrationError {\n\tcode = MigrateErrorCode.MigrationFailed\n}\n\nexport class InvalidSchemaError extends MigrationError {\n\tcode = MigrateErrorCode.InvalidSchema\n}\n\nexport class FailedContentMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.ContentMigrationFailed\n}\n\nexport class NotSuccessfulContentMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.ContentMigrationNotSuccessful\n}\n"],"names":["errors"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectMigrator.js","sources":["../../../../../../packages/engine-system-api/src/model/migrations/ProjectMigrator.ts"],"sourcesContent":["import { calculateMigrationChecksum, Migration, MigrationDescriber, MigrationVersionHelper } from '@contember/schema-migrations'\nimport { Client, DatabaseMetadata, QueryError, wrapIdentifier } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SaveMigrationCommand } from '../commands/index.js'\nimport { Stage } from '../dtos/index.js'\nimport { DatabaseContext } from '../database/index.js'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver.js'\nimport { MigrateErrorCode } from '../../schema/index.js'\nimport { calculateSchemaChecksum, emptySchema, SchemaValidator, SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { logger } from '@contember/logger'\nimport { MigrationsDatabaseMetadataResolverStoreFactory, SchemaDatabaseMetadataResolverStore } from '../metadata/index.js'\nimport { ContentMigrationQuery, MigrationInput, SchemaStateInput } from './MigrationInput.js'\nimport { ContentQueryExecutor } from '../dependencies/index.js'\nimport { SchemaProvider } from './SchemaProvider.js'\nimport { SaveSchemaCommand } from '../commands/schema/SaveSchemaCommand.js'\nimport { ImplementationException } from '../../utils/index.js'\n\ntype MigrationVariables = {\n\tsystem_schema: string\n\tproject_slug: string\n}\n\nexport class ProjectMigrator {\n\tconstructor(\n\t\tprivate readonly migrationDescriber: MigrationDescriber,\n\t\tprivate readonly schemaProvider: SchemaProvider,\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly migrationsDatabaseMetadataResolverStoreFactory: MigrationsDatabaseMetadataResolverStoreFactory,\n\t\tprivate readonly contentQueryExecutor: ContentQueryExecutor,\n\t) {}\n\n\tpublic async migrate({ db, project, identity, options: { ignoreOrder = false, skipExecuted = false }, migrationsToExecute, stages, schemaState }: {\n\t\tdb: DatabaseContext\n\t\tproject: { slug: string; systemSchema: string }\n\t\tidentity: { id: string }\n\t\tstages: Stage[]\n\t\tmigrationsToExecute: readonly MigrationInput[]\n\t\tschemaState?: SchemaStateInput\n\t\toptions: {\n\t\t\tignoreOrder?: boolean\n\t\t\tskipExecuted?: boolean\n\t\t}\n\t}) {\n\t\tif (migrationsToExecute.length === 0 && !schemaState) {\n\t\t\treturn\n\t\t}\n\t\tconst schemaWithMeta = await this.schemaProvider.fetch({ db })\n\t\tlet schema = schemaWithMeta.schema\n\t\tlet id = schemaWithMeta.meta.id\n\n\t\tconst validated = await this.validateMigrations(db, schema, schemaWithMeta.meta.version ?? null, migrationsToExecute, { ignoreOrder, skipExecuted })\n\n\t\tif (validated.length === 0 && !schemaState) {\n\t\t\treturn\n\t\t}\n\n\t\tconst sorted = [...validated].sort((a, b) => a.version.localeCompare(b.version))\n\n\t\tconst metadataStore = this.migrationsDatabaseMetadataResolverStoreFactory.create(db)\n\n\t\tfor (const migration of sorted) {\n\t\t\tif (migration.type === 'schema') {\n\t\t\t\tconst formatVersion = migration.formatVersion\n\n\t\t\t\tfor (const modification of migration.modifications) {\n\t\t\t\t\t;[schema] = await this.applyModification(\n\t\t\t\t\t\tdb.client,\n\t\t\t\t\t\tstages,\n\t\t\t\t\t\tschema,\n\t\t\t\t\t\tmodification,\n\t\t\t\t\t\tformatVersion,\n\t\t\t\t\t\tmigration.version,\n\t\t\t\t\t\tproject,\n\t\t\t\t\t\tmetadataStore,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} else if (migration.type === 'content') {\n\t\t\t\tif (!id) {\n\t\t\t\t\tthrow new FailedContentMigrationError(migration.version, `Cannot execute content migration without schema`)\n\t\t\t\t}\n\t\t\t\tfor (const query of migration.queries) {\n\t\t\t\t\tawait this.executeContentMigration({\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tdb,\n\t\t\t\t\t\tschema,\n\t\t\t\t\t\tschemaMeta: { id },\n\t\t\t\t\t\tstages,\n\t\t\t\t\t\tdatabaseMetadata: await metadataStore.getMetadata(db.client.schema),\n\t\t\t\t\t\tidentity,\n\t\t\t\t\t\tproject,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t// event log uses deferred constraint triggers, we need to fire them before ALTER\n\t\t\t\tawait db.client.query(`SET CONSTRAINTS ALL IMMEDIATE`)\n\t\t\t\tawait db.client.query(`SET CONSTRAINTS ALL DEFERRED`)\n\t\t\t}\n\t\t\tid = await db.commandBus.execute(new SaveMigrationCommand(migration))\n\t\t}\n\n\t\tconst latestVersion = sorted.length > 0\n\t\t\t? sorted[sorted.length - 1].version\n\t\t\t: schemaWithMeta.meta.version\n\n\t\tif (schemaState) {\n\t\t\tschema = {\n\t\t\t\t...schema,\n\t\t\t\tacl: schemaState.acl as Schema['acl'],\n\t\t\t\tvalidation: schemaState.validation as Schema['validation'],\n\t\t\t\tactions: schemaState.actions as Schema['actions'],\n\t\t\t\tsettings: schemaState.settings as Schema['settings'],\n\t\t\t}\n\t\t\t// Client-supplied state is otherwise saved blindly; validate it as the normal migration flow would.\n\t\t\tconst errors = SchemaValidator.validate(schema)\n\t\t\tif (errors.length > 0) {\n\t\t\t\tthrow new InvalidSchemaError(\n\t\t\t\t\tlatestVersion ?? '(schema state)',\n\t\t\t\t\t'Schema state is invalid: \\n'\n\t\t\t\t\t\t+ errors.map(it => `${it.path.join('.')}: [${it.code}] ${it.message}`).join('\\n'),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tif (!latestVersion) {\n\t\t\tif (schemaState) {\n\t\t\t\t// State-only update on a fresh project with no migrations — there is no schema\n\t\t\t\t// row to attach the state to yet, so there is nothing to save.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthrow new ImplementationException()\n\t\t}\n\n\t\tif (!id) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\n\t\tawait db.commandBus.execute(\n\t\t\tnew SaveSchemaCommand({\n\t\t\t\tschema,\n\t\t\t\tmeta: {\n\t\t\t\t\tid,\n\t\t\t\t\tupdatedAt: new Date(),\n\t\t\t\t\tversion: latestVersion,\n\t\t\t\t\tchecksum: calculateSchemaChecksum(schema),\n\t\t\t\t},\n\t\t\t}),\n\t\t)\n\t}\n\n\tpublic async migrateFromSnapshot({ db, project, stages, snapshot, covers, schemaState }: {\n\t\tdb: DatabaseContext\n\t\tproject: { slug: string; systemSchema: string }\n\t\tstages: Stage[]\n\t\tsnapshot: { formatVersion: number; modifications: Migration.Modification[] }\n\t\tcovers: readonly MigrationInput[]\n\t\tschemaState?: SchemaStateInput\n\t}) {\n\t\tconst sortedCovers = [...covers].sort((a, b) => a.version.localeCompare(b.version))\n\t\tconst latestVersion = sortedCovers.length > 0 ? sortedCovers[sortedCovers.length - 1].version : null\n\t\tif (!latestVersion) {\n\t\t\tthrow new ImplementationException('Snapshot must cover at least one migration')\n\t\t}\n\n\t\t// Hard safety gate: a snapshot may only bootstrap a project that has executed nothing yet.\n\t\tconst executedMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\t\tif (executedMigrations.length > 0) {\n\t\t\tthrow new ProjectNotEmptyError(latestVersion, 'Cannot apply snapshot: project already has executed migrations')\n\t\t}\n\n\t\tconst metadataStore = this.migrationsDatabaseMetadataResolverStoreFactory.create(db)\n\t\tlet schema = emptySchema\n\t\tfor (const modification of snapshot.modifications) {\n\t\t\t;[schema] = await this.applyModification(\n\t\t\t\tdb.client,\n\t\t\t\tstages,\n\t\t\t\tschema,\n\t\t\t\tmodification,\n\t\t\t\tsnapshot.formatVersion,\n\t\t\t\tlatestVersion,\n\t\t\t\tproject,\n\t\t\t\tmetadataStore,\n\t\t\t)\n\t\t}\n\n\t\tconst errors = SchemaValidator.validate(schema)\n\t\tif (errors.length > 0) {\n\t\t\tthrow new InvalidSchemaError(\n\t\t\t\tlatestVersion,\n\t\t\t\t'Snapshot generates invalid schema: \\n'\n\t\t\t\t\t+ errors.map(it => `${it.path.join('.')}: [${it.code}] ${it.message}`).join('\\n'),\n\t\t\t)\n\t\t}\n\n\t\t// Record covered migrations as executed without replaying their SQL, so the registry\n\t\t// ends up identical to a full replay (status, checksums and schema rebuild stay correct).\n\t\tlet id: number | undefined\n\t\tfor (const migration of sortedCovers) {\n\t\t\tid = await db.commandBus.execute(new SaveMigrationCommand(migration))\n\t\t}\n\t\tif (!id) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\n\t\tif (schemaState) {\n\t\t\tschema = {\n\t\t\t\t...schema,\n\t\t\t\tacl: schemaState.acl as Schema['acl'],\n\t\t\t\tvalidation: schemaState.validation as Schema['validation'],\n\t\t\t\tactions: schemaState.actions as Schema['actions'],\n\t\t\t\tsettings: schemaState.settings as Schema['settings'],\n\t\t\t}\n\t\t}\n\n\t\tawait db.commandBus.execute(\n\t\t\tnew SaveSchemaCommand({\n\t\t\t\tschema,\n\t\t\t\tmeta: {\n\t\t\t\t\tid,\n\t\t\t\t\tupdatedAt: new Date(),\n\t\t\t\t\tversion: latestVersion,\n\t\t\t\t\tchecksum: calculateSchemaChecksum(schema),\n\t\t\t\t},\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate async executeContentMigration({ query, stages, version, ...ctx }: {\n\t\tversion: string\n\t\tdb: DatabaseContext\n\t\tquery: ContentMigrationQuery\n\t\tstages: Stage[]\n\t\tschema: Schema\n\t\tschemaMeta: { id: number }\n\t\tproject: { slug: string; systemSchema: string }\n\t\tidentity: { id: string }\n\t\tdatabaseMetadata: DatabaseMetadata\n\t}) {\n\t\tconst queryStages = query.stage ? stages.filter(it => it.slug === query.stage) : stages\n\t\tfor (const stage of queryStages) {\n\t\t\tconst response = await this.contentQueryExecutor.execute({\n\t\t\t\tstage,\n\t\t\t\t...ctx,\n\t\t\t}, query)\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new FailedContentMigrationError(version, response.errors.join(', '))\n\t\t\t}\n\t\t\tif (query.checkMutationResult !== false) {\n\t\t\t\tfor (const [key, value] of Object.entries(response.result.data ?? {})) {\n\t\t\t\t\tif (typeof value === 'object' && value !== null && 'ok' in value && !value.ok) {\n\t\t\t\t\t\tconst errorDetails = 'errorMessage' in value ? value.errorMessage : 'No details available. Please fetch errorMessage field.'\n\t\t\t\t\t\tthrow new NotSuccessfulContentMigrationError(version, `Mutation ${key} failed: ${errorDetails}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async validateMigrations(\n\t\tdb: DatabaseContext,\n\t\tschema: Schema,\n\t\tversion: string | null,\n\t\tmigrationsToExecute: readonly MigrationInput[],\n\t\t{ ignoreOrder, skipExecuted }: {\n\t\t\tignoreOrder: boolean\n\t\t\tskipExecuted: boolean\n\t\t},\n\t): Promise<readonly MigrationInput[]> {\n\t\tconst executedMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\t\tconst toExecute: MigrationInput[] = []\n\t\tlet skippedErrors: SchemaValidatorSkippedErrors[] = []\n\t\tfor (const migration of migrationsToExecute) {\n\t\t\tconst executedMigration = executedMigrations.find(it => it.version === migration.version)\n\t\t\tif (executedMigration) {\n\t\t\t\tif (skipExecuted && (migration.type !== 'schema' || executedMigration.checksum === calculateMigrationChecksum(migration))) {\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tthrow new AlreadyExecutedMigrationError(migration.version, `Migration is already executed`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (version && migration.version < version && !ignoreOrder) {\n\t\t\t\tthrow new MustFollowLatestMigrationError(migration.version, `Must follow latest executed migration ${version}`)\n\t\t\t}\n\t\t\tif (migration.type === 'schema') {\n\t\t\t\tconst described = this.migrationDescriber.describeModifications(schema, migration)\n\t\t\t\tif (described.length === 0) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst latestModification = described[described.length - 1]\n\t\t\t\tschema = latestModification.schema\n\t\t\t\tskippedErrors = [\n\t\t\t\t\t...skippedErrors.filter(it => it.skipUntil && MigrationVersionHelper.extractVersion(it.skipUntil) >= migration.version),\n\t\t\t\t\t...migration.skippedErrors ?? [],\n\t\t\t\t]\n\t\t\t\tconst errors = SchemaValidator.validate(schema, skippedErrors)\n\t\t\t\tif (errors.length > 0) {\n\t\t\t\t\tthrow new InvalidSchemaError(\n\t\t\t\t\t\tmigration.version,\n\t\t\t\t\t\t'Migration generates invalid schema: \\n'\n\t\t\t\t\t\t\t+ errors.map(it => `${it.path.join('.')}: [${it.code}] ${it.message}`).join('\\n'),\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttoExecute.push(migration)\n\t\t}\n\t\t// intentionally not using skippedErrors here\n\t\tconst errors = SchemaValidator.validate(schema)\n\t\tif (errors.length > 0) {\n\t\t\tthrow new InvalidSchemaError(\n\t\t\t\ttoExecute[toExecute.length - 1]?.version ?? version ?? '(schema)',\n\t\t\t\t'Migration generates invalid schema: \\n'\n\t\t\t\t\t+ errors.map(it => it.path.join('.') + ': ' + it.message).join('\\n'),\n\t\t\t)\n\t\t}\n\t\treturn toExecute\n\t}\n\n\tprivate sqlPreprocessor(text: string, variables: MigrationVariables): string {\n\t\treturn Object.entries(variables).reduce(\n\t\t\t(content, [key, value]) => content.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), value),\n\t\t\ttext,\n\t\t)\n\t}\n\n\tprivate async applyModification(\n\t\tdb: Client,\n\t\tstages: Stage[],\n\t\tschema: Schema,\n\t\tmodification: Migration.Modification,\n\t\tformatVersion: number,\n\t\tmigrationVersion: string,\n\t\tproject: { slug: string; systemSchema: string },\n\t\tmetadataStore: SchemaDatabaseMetadataResolverStore,\n\t): Promise<[Schema]> {\n\t\tconst {\n\t\t\tgetSql,\n\t\t\tschema: newSchema,\n\t\t} = this.migrationDescriber.describeModification(schema, modification, { formatVersion })\n\t\tfor (const stage of stages) {\n\t\t\tconst databaseMetadata = await metadataStore.getMetadata(stage.schema)\n\t\t\tconst sql = getSql({\n\t\t\t\tsystemSchema: project.systemSchema,\n\t\t\t\tdatabaseMetadata,\n\t\t\t\tinvalidateDatabaseMetadata: () => metadataStore.invalidate(stage.schema),\n\t\t\t})\n\t\t\tconst processedSql = this.sqlPreprocessor(sql, {\n\t\t\t\tproject_slug: project.slug,\n\t\t\t\tsystem_schema: project.systemSchema,\n\t\t\t})\n\t\t\tawait this.executeOnStage(db, stage, processedSql, migrationVersion)\n\t\t}\n\t\treturn [newSchema]\n\t}\n\n\tprivate async executeOnStage(db: Client, stage: Stage, sql: string, migrationVersion: string) {\n\t\tawait db.query('SET LOCAL search_path TO ' + wrapIdentifier(stage.schema))\n\t\ttry {\n\t\t\tawait db.query(sql)\n\t\t} catch (e) {\n\t\t\tif (e instanceof QueryError) {\n\t\t\t\tlogger.error(e, { message: 'Migration failed' })\n\t\t\t\tthrow new MigrationFailedError(migrationVersion, e.message)\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\t}\n}\n\nexport abstract class MigrationError extends Error {\n\tpublic abstract code: MigrateErrorCode\n\n\tconstructor(public readonly version: string, public readonly migrationError: string) {\n\t\tsuper(`${version}: ${migrationError}`)\n\t}\n}\n\nexport class MustFollowLatestMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.MustFollowLatest\n}\n\nexport class AlreadyExecutedMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.AlreadyExecuted\n}\n\nexport class MigrationFailedError extends MigrationError {\n\tcode = MigrateErrorCode.MigrationFailed\n}\n\nexport class InvalidSchemaError extends MigrationError {\n\tcode = MigrateErrorCode.InvalidSchema\n}\n\nexport class FailedContentMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.ContentMigrationFailed\n}\n\nexport class NotSuccessfulContentMigrationError extends MigrationError {\n\tcode = MigrateErrorCode.ContentMigrationNotSuccessful\n}\n\nexport class ProjectNotEmptyError extends MigrationError {\n\tcode = MigrateErrorCode.ProjectNotEmpty\n}\n"],"names":["errors"],"mappings":"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"}
@@ -43,7 +43,7 @@ class SchemaProvider {
43
43
  };
44
44
  }
45
45
  async fetch({ db, currentSchema }) {
46
- const newSchema = await db.queryHandler.fetch(new SchemaQuery.SchemaQuery(currentSchema?.meta.checksum));
46
+ const newSchema = await db.queryHandler.fetch(new SchemaQuery.SchemaQuery(currentSchema?.meta.checksum, currentSchema?.meta.version));
47
47
  if (!newSchema) {
48
48
  return currentSchema ?? emptyVersionedSchema;
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaProvider.cjs","sources":["../../../../../../packages/engine-system-api/src/model/migrations/SchemaProvider.ts"],"sourcesContent":["import { SchemaQuery } from '../queries'\nimport { DatabaseContext } from '../database'\nimport { calculateSchemaChecksum, emptySchema, normalizeSchema } from '@contember/schema-utils'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { Schema } from '@contember/schema'\n\nexport type SchemaMeta = {\n\tchecksum: string\n\tversion: string\n\tupdatedAt: Date\n\tid: number\n}\n\nexport const emptyVersionedSchema: SchemaWithMeta = {\n\tschema: emptySchema,\n\tmeta: {},\n}\n\nexport type SchemaWithMeta = {\n\tschema: Schema\n\tmeta: SchemaMeta | { [K in keyof SchemaMeta]?: undefined }\n}\n\nexport class SchemaProvider {\n\tconstructor(\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t) {\n\t}\n\n\tasync buildSchemaFromMigrations(db: DatabaseContext): Promise<SchemaWithMeta> {\n\t\tconst newMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\n\t\tconst partialResult = newMigrations.reduce<SchemaWithMeta>(\n\t\t\t(schema, migration) => {\n\t\t\t\treturn {\n\t\t\t\t\tschema: migration.type !== 'schema'\n\t\t\t\t\t\t? schema.schema\n\t\t\t\t\t\t: this.schemaMigrator.applyModifications(schema.schema, migration.modifications, migration.formatVersion),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tid: migration.id,\n\t\t\t\t\t\tupdatedAt: migration.executedAt,\n\t\t\t\t\t\tchecksum: '',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\temptyVersionedSchema,\n\t\t)\n\n\t\tif (!partialResult.meta.version) {\n\t\t\treturn emptyVersionedSchema\n\t\t}\n\n\t\treturn {\n\t\t\tschema: partialResult.schema,\n\t\t\tmeta: {\n\t\t\t\t...partialResult.meta,\n\t\t\t\tchecksum: calculateSchemaChecksum(partialResult.schema),\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic async fetch({ db, currentSchema }: {\n\t\tdb: DatabaseContext\n\t\tcurrentSchema?: SchemaWithMeta | null\n\t}): Promise<SchemaWithMeta> {\n\t\tconst newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum))\n\t\tif (!newSchema) {\n\t\t\treturn currentSchema ?? emptyVersionedSchema\n\t\t}\n\n\t\treturn newSchema\n\t}\n}\n"],"names":["emptySchema","calculateSchemaChecksum","SchemaQuery"],"mappings":";;;;;;;;AAcO,MAAM,uBAAuC;AAAA,EACnD,QAAQA,YAAAA;AAAAA,EACR,MAAM,CAAA;AACP;AAOO,MAAM,eAAe;AAAA,EAC3B,YACkB,4BACA,gBAChB;AAFgB,SAAA,6BAAA;AACA,SAAA,iBAAA;AAAA,EAElB;AAAA,EAEA,MAAM,0BAA0B,IAA8C;AAC7E,UAAM,gBAAgB,MAAM,KAAK,2BAA2B,cAAc,EAAE;AAE5E,UAAM,gBAAgB,cAAc;AAAA,MACnC,CAAC,QAAQ,cAAc;AACtB,eAAO;AAAA,UACN,QAAQ,UAAU,SAAS,WACxB,OAAO,SACP,KAAK,eAAe,mBAAmB,OAAO,QAAQ,UAAU,eAAe,UAAU,aAAa;AAAA,UACzG,MAAM;AAAA,YACL,SAAS,UAAU;AAAA,YACnB,IAAI,UAAU;AAAA,YACd,WAAW,UAAU;AAAA,YACrB,UAAU;AAAA,UAAA;AAAA,QACX;AAAA,MAEF;AAAA,MACA;AAAA,IAAA;AAGD,QAAI,CAAC,cAAc,KAAK,SAAS;AAChC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,MACN,QAAQ,cAAc;AAAA,MACtB,MAAM;AAAA,QACL,GAAG,cAAc;AAAA,QACjB,UAAUC,YAAAA,wBAAwB,cAAc,MAAM;AAAA,MAAA;AAAA,IACvD;AAAA,EAEF;AAAA,EAEA,MAAa,MAAM,EAAE,IAAI,iBAGG;AAC3B,UAAM,YAAY,MAAM,GAAG,aAAa,MAAM,IAAIC,YAAAA,YAAY,eAAe,KAAK,QAAQ,CAAC;AAC3F,QAAI,CAAC,WAAW;AACf,aAAO,iBAAiB;AAAA,IACzB;AAEA,WAAO;AAAA,EACR;AACD;;;"}
1
+ {"version":3,"file":"SchemaProvider.cjs","sources":["../../../../../../packages/engine-system-api/src/model/migrations/SchemaProvider.ts"],"sourcesContent":["import { SchemaQuery } from '../queries/index.js'\nimport { DatabaseContext } from '../database/index.js'\nimport { calculateSchemaChecksum, emptySchema, normalizeSchema } from '@contember/schema-utils'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver.js'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { Schema } from '@contember/schema'\n\nexport type SchemaMeta = {\n\tchecksum: string\n\tversion: string\n\tupdatedAt: Date\n\tid: number\n}\n\nexport const emptyVersionedSchema: SchemaWithMeta = {\n\tschema: emptySchema,\n\tmeta: {},\n}\n\nexport type SchemaWithMeta = {\n\tschema: Schema\n\tmeta: SchemaMeta | { [K in keyof SchemaMeta]?: undefined }\n}\n\nexport class SchemaProvider {\n\tconstructor(\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t) {\n\t}\n\n\tasync buildSchemaFromMigrations(db: DatabaseContext): Promise<SchemaWithMeta> {\n\t\tconst newMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\n\t\tconst partialResult = newMigrations.reduce<SchemaWithMeta>(\n\t\t\t(schema, migration) => {\n\t\t\t\treturn {\n\t\t\t\t\tschema: migration.type !== 'schema'\n\t\t\t\t\t\t? schema.schema\n\t\t\t\t\t\t: this.schemaMigrator.applyModifications(schema.schema, migration.modifications, migration.formatVersion),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tid: migration.id,\n\t\t\t\t\t\tupdatedAt: migration.executedAt,\n\t\t\t\t\t\tchecksum: '',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\temptyVersionedSchema,\n\t\t)\n\n\t\tif (!partialResult.meta.version) {\n\t\t\treturn emptyVersionedSchema\n\t\t}\n\n\t\treturn {\n\t\t\tschema: partialResult.schema,\n\t\t\tmeta: {\n\t\t\t\t...partialResult.meta,\n\t\t\t\tchecksum: calculateSchemaChecksum(partialResult.schema),\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic async fetch({ db, currentSchema }: {\n\t\tdb: DatabaseContext\n\t\tcurrentSchema?: SchemaWithMeta | null\n\t}): Promise<SchemaWithMeta> {\n\t\tconst newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum, currentSchema?.meta.version))\n\t\tif (!newSchema) {\n\t\t\treturn currentSchema ?? emptyVersionedSchema\n\t\t}\n\n\t\treturn newSchema\n\t}\n}\n"],"names":["emptySchema","calculateSchemaChecksum","SchemaQuery"],"mappings":";;;;;;;;AAcO,MAAM,uBAAuC;AAAA,EACnD,QAAQA,YAAAA;AAAAA,EACR,MAAM,CAAA;AACP;AAOO,MAAM,eAAe;AAAA,EAC3B,YACkB,4BACA,gBAChB;AAFgB,SAAA,6BAAA;AACA,SAAA,iBAAA;AAAA,EAElB;AAAA,EAEA,MAAM,0BAA0B,IAA8C;AAC7E,UAAM,gBAAgB,MAAM,KAAK,2BAA2B,cAAc,EAAE;AAE5E,UAAM,gBAAgB,cAAc;AAAA,MACnC,CAAC,QAAQ,cAAc;AACtB,eAAO;AAAA,UACN,QAAQ,UAAU,SAAS,WACxB,OAAO,SACP,KAAK,eAAe,mBAAmB,OAAO,QAAQ,UAAU,eAAe,UAAU,aAAa;AAAA,UACzG,MAAM;AAAA,YACL,SAAS,UAAU;AAAA,YACnB,IAAI,UAAU;AAAA,YACd,WAAW,UAAU;AAAA,YACrB,UAAU;AAAA,UAAA;AAAA,QACX;AAAA,MAEF;AAAA,MACA;AAAA,IAAA;AAGD,QAAI,CAAC,cAAc,KAAK,SAAS;AAChC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,MACN,QAAQ,cAAc;AAAA,MACtB,MAAM;AAAA,QACL,GAAG,cAAc;AAAA,QACjB,UAAUC,YAAAA,wBAAwB,cAAc,MAAM;AAAA,MAAA;AAAA,IACvD;AAAA,EAEF;AAAA,EAEA,MAAa,MAAM,EAAE,IAAI,iBAGG;AAC3B,UAAM,YAAY,MAAM,GAAG,aAAa,MAAM,IAAIC,YAAAA,YAAY,eAAe,KAAK,UAAU,eAAe,KAAK,OAAO,CAAC;AACxH,QAAI,CAAC,WAAW;AACf,aAAO,iBAAiB;AAAA,IACzB;AAEA,WAAO;AAAA,EACR;AACD;;;"}
@@ -41,7 +41,7 @@ class SchemaProvider {
41
41
  };
42
42
  }
43
43
  async fetch({ db, currentSchema }) {
44
- const newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum));
44
+ const newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum, currentSchema?.meta.version));
45
45
  if (!newSchema) {
46
46
  return currentSchema ?? emptyVersionedSchema;
47
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaProvider.js","sources":["../../../../../../packages/engine-system-api/src/model/migrations/SchemaProvider.ts"],"sourcesContent":["import { SchemaQuery } from '../queries'\nimport { DatabaseContext } from '../database'\nimport { calculateSchemaChecksum, emptySchema, normalizeSchema } from '@contember/schema-utils'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { Schema } from '@contember/schema'\n\nexport type SchemaMeta = {\n\tchecksum: string\n\tversion: string\n\tupdatedAt: Date\n\tid: number\n}\n\nexport const emptyVersionedSchema: SchemaWithMeta = {\n\tschema: emptySchema,\n\tmeta: {},\n}\n\nexport type SchemaWithMeta = {\n\tschema: Schema\n\tmeta: SchemaMeta | { [K in keyof SchemaMeta]?: undefined }\n}\n\nexport class SchemaProvider {\n\tconstructor(\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t) {\n\t}\n\n\tasync buildSchemaFromMigrations(db: DatabaseContext): Promise<SchemaWithMeta> {\n\t\tconst newMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\n\t\tconst partialResult = newMigrations.reduce<SchemaWithMeta>(\n\t\t\t(schema, migration) => {\n\t\t\t\treturn {\n\t\t\t\t\tschema: migration.type !== 'schema'\n\t\t\t\t\t\t? schema.schema\n\t\t\t\t\t\t: this.schemaMigrator.applyModifications(schema.schema, migration.modifications, migration.formatVersion),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tid: migration.id,\n\t\t\t\t\t\tupdatedAt: migration.executedAt,\n\t\t\t\t\t\tchecksum: '',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\temptyVersionedSchema,\n\t\t)\n\n\t\tif (!partialResult.meta.version) {\n\t\t\treturn emptyVersionedSchema\n\t\t}\n\n\t\treturn {\n\t\t\tschema: partialResult.schema,\n\t\t\tmeta: {\n\t\t\t\t...partialResult.meta,\n\t\t\t\tchecksum: calculateSchemaChecksum(partialResult.schema),\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic async fetch({ db, currentSchema }: {\n\t\tdb: DatabaseContext\n\t\tcurrentSchema?: SchemaWithMeta | null\n\t}): Promise<SchemaWithMeta> {\n\t\tconst newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum))\n\t\tif (!newSchema) {\n\t\t\treturn currentSchema ?? emptyVersionedSchema\n\t\t}\n\n\t\treturn newSchema\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAcO,MAAM,uBAAuC;AAAA,EACnD,QAAQ;AAAA,EACR,MAAM,CAAA;AACP;AAOO,MAAM,eAAe;AAAA,EAC3B,YACkB,4BACA,gBAChB;AAFgB,SAAA,6BAAA;AACA,SAAA,iBAAA;AAAA,EAElB;AAAA,EAEA,MAAM,0BAA0B,IAA8C;AAC7E,UAAM,gBAAgB,MAAM,KAAK,2BAA2B,cAAc,EAAE;AAE5E,UAAM,gBAAgB,cAAc;AAAA,MACnC,CAAC,QAAQ,cAAc;AACtB,eAAO;AAAA,UACN,QAAQ,UAAU,SAAS,WACxB,OAAO,SACP,KAAK,eAAe,mBAAmB,OAAO,QAAQ,UAAU,eAAe,UAAU,aAAa;AAAA,UACzG,MAAM;AAAA,YACL,SAAS,UAAU;AAAA,YACnB,IAAI,UAAU;AAAA,YACd,WAAW,UAAU;AAAA,YACrB,UAAU;AAAA,UAAA;AAAA,QACX;AAAA,MAEF;AAAA,MACA;AAAA,IAAA;AAGD,QAAI,CAAC,cAAc,KAAK,SAAS;AAChC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,MACN,QAAQ,cAAc;AAAA,MACtB,MAAM;AAAA,QACL,GAAG,cAAc;AAAA,QACjB,UAAU,wBAAwB,cAAc,MAAM;AAAA,MAAA;AAAA,IACvD;AAAA,EAEF;AAAA,EAEA,MAAa,MAAM,EAAE,IAAI,iBAGG;AAC3B,UAAM,YAAY,MAAM,GAAG,aAAa,MAAM,IAAI,YAAY,eAAe,KAAK,QAAQ,CAAC;AAC3F,QAAI,CAAC,WAAW;AACf,aAAO,iBAAiB;AAAA,IACzB;AAEA,WAAO;AAAA,EACR;AACD;"}
1
+ {"version":3,"file":"SchemaProvider.js","sources":["../../../../../../packages/engine-system-api/src/model/migrations/SchemaProvider.ts"],"sourcesContent":["import { SchemaQuery } from '../queries/index.js'\nimport { DatabaseContext } from '../database/index.js'\nimport { calculateSchemaChecksum, emptySchema, normalizeSchema } from '@contember/schema-utils'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver.js'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { Schema } from '@contember/schema'\n\nexport type SchemaMeta = {\n\tchecksum: string\n\tversion: string\n\tupdatedAt: Date\n\tid: number\n}\n\nexport const emptyVersionedSchema: SchemaWithMeta = {\n\tschema: emptySchema,\n\tmeta: {},\n}\n\nexport type SchemaWithMeta = {\n\tschema: Schema\n\tmeta: SchemaMeta | { [K in keyof SchemaMeta]?: undefined }\n}\n\nexport class SchemaProvider {\n\tconstructor(\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t) {\n\t}\n\n\tasync buildSchemaFromMigrations(db: DatabaseContext): Promise<SchemaWithMeta> {\n\t\tconst newMigrations = await this.executedMigrationsResolver.getMigrations(db)\n\n\t\tconst partialResult = newMigrations.reduce<SchemaWithMeta>(\n\t\t\t(schema, migration) => {\n\t\t\t\treturn {\n\t\t\t\t\tschema: migration.type !== 'schema'\n\t\t\t\t\t\t? schema.schema\n\t\t\t\t\t\t: this.schemaMigrator.applyModifications(schema.schema, migration.modifications, migration.formatVersion),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tid: migration.id,\n\t\t\t\t\t\tupdatedAt: migration.executedAt,\n\t\t\t\t\t\tchecksum: '',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\temptyVersionedSchema,\n\t\t)\n\n\t\tif (!partialResult.meta.version) {\n\t\t\treturn emptyVersionedSchema\n\t\t}\n\n\t\treturn {\n\t\t\tschema: partialResult.schema,\n\t\t\tmeta: {\n\t\t\t\t...partialResult.meta,\n\t\t\t\tchecksum: calculateSchemaChecksum(partialResult.schema),\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic async fetch({ db, currentSchema }: {\n\t\tdb: DatabaseContext\n\t\tcurrentSchema?: SchemaWithMeta | null\n\t}): Promise<SchemaWithMeta> {\n\t\tconst newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum, currentSchema?.meta.version))\n\t\tif (!newSchema) {\n\t\t\treturn currentSchema ?? emptyVersionedSchema\n\t\t}\n\n\t\treturn newSchema\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAcO,MAAM,uBAAuC;AAAA,EACnD,QAAQ;AAAA,EACR,MAAM,CAAA;AACP;AAOO,MAAM,eAAe;AAAA,EAC3B,YACkB,4BACA,gBAChB;AAFgB,SAAA,6BAAA;AACA,SAAA,iBAAA;AAAA,EAElB;AAAA,EAEA,MAAM,0BAA0B,IAA8C;AAC7E,UAAM,gBAAgB,MAAM,KAAK,2BAA2B,cAAc,EAAE;AAE5E,UAAM,gBAAgB,cAAc;AAAA,MACnC,CAAC,QAAQ,cAAc;AACtB,eAAO;AAAA,UACN,QAAQ,UAAU,SAAS,WACxB,OAAO,SACP,KAAK,eAAe,mBAAmB,OAAO,QAAQ,UAAU,eAAe,UAAU,aAAa;AAAA,UACzG,MAAM;AAAA,YACL,SAAS,UAAU;AAAA,YACnB,IAAI,UAAU;AAAA,YACd,WAAW,UAAU;AAAA,YACrB,UAAU;AAAA,UAAA;AAAA,QACX;AAAA,MAEF;AAAA,MACA;AAAA,IAAA;AAGD,QAAI,CAAC,cAAc,KAAK,SAAS;AAChC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,MACN,QAAQ,cAAc;AAAA,MACtB,MAAM;AAAA,QACL,GAAG,cAAc;AAAA,QACjB,UAAU,wBAAwB,cAAc,MAAM;AAAA,MAAA;AAAA,IACvD;AAAA,EAEF;AAAA,EAEA,MAAa,MAAM,EAAE,IAAI,iBAGG;AAC3B,UAAM,YAAY,MAAM,GAAG,aAAa,MAAM,IAAI,YAAY,eAAe,KAAK,UAAU,eAAe,KAAK,OAAO,CAAC;AACxH,QAAI,CAAC,WAAW;AACf,aAAO,iBAAiB;AAAA,IACzB;AAEA,WAAO;AAAA,EACR;AACD;"}
@@ -14,9 +14,9 @@ const createEventsFromRows = (rows) => {
14
14
  event.applied_at,
15
15
  event.identity_id,
16
16
  event.transaction_id,
17
- event.row_ids,
18
- event.table_name,
19
- event.values
17
+ event.row_ids ?? [],
18
+ event.table_name ?? "",
19
+ event.values ?? {}
20
20
  );
21
21
  case types.EventType.update:
22
22
  return new types.UpdateEvent(
@@ -25,9 +25,9 @@ const createEventsFromRows = (rows) => {
25
25
  event.applied_at,
26
26
  event.identity_id,
27
27
  event.transaction_id,
28
- event.row_ids,
29
- event.table_name,
30
- event.values
28
+ event.row_ids ?? [],
29
+ event.table_name ?? "",
30
+ event.values ?? {}
31
31
  );
32
32
  case types.EventType.delete:
33
33
  return new types.DeleteEvent(
@@ -36,8 +36,16 @@ const createEventsFromRows = (rows) => {
36
36
  event.applied_at,
37
37
  event.identity_id,
38
38
  event.transaction_id,
39
- event.row_ids,
40
- event.table_name
39
+ event.row_ids ?? [],
40
+ event.table_name ?? ""
41
+ );
42
+ case types.EventType.truncate:
43
+ return new types.TruncateEvent(
44
+ event.id,
45
+ event.created_at,
46
+ event.applied_at,
47
+ event.identity_id,
48
+ event.transaction_id
41
49
  );
42
50
  default:
43
51
  assertNever.assertNever(event.type);
@@ -1 +1 @@
1
- {"version":3,"file":"EventQueryHelpers.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventQueryHelpers.ts"],"sourcesContent":["import { ContentEvent, CreateEvent, DeleteEvent, EventType, UpdateEvent } from '../../events'\nimport { assertNever } from '../../../utils'\n\nexport type EventRow = {\n\tid: string\n\ttype: EventType\n\ttable_name: string\n\trow_ids: string[]\n\tvalues: Record<string, any>\n\tcreated_at: Date\n\tapplied_at: Date\n\tidentity_id: string\n\ttransaction_id: string\n}\n\nexport const createEventsFromRows = (rows: EventRow[]): ContentEvent[] => {\n\treturn rows.map(event => {\n\t\tswitch (event.type) {\n\t\t\tcase EventType.create:\n\t\t\t\treturn new CreateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids,\n\t\t\t\t\tevent.table_name,\n\t\t\t\t\tevent.values,\n\t\t\t\t)\n\t\t\tcase EventType.update:\n\t\t\t\treturn new UpdateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids,\n\t\t\t\t\tevent.table_name,\n\t\t\t\t\tevent.values,\n\t\t\t\t)\n\t\t\tcase EventType.delete:\n\t\t\t\treturn new DeleteEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids,\n\t\t\t\t\tevent.table_name,\n\t\t\t\t)\n\t\t\tdefault:\n\t\t\t\tassertNever(event.type)\n\t\t}\n\t})\n}\n"],"names":["EventType","CreateEvent","UpdateEvent","DeleteEvent","assertNever"],"mappings":";;;;;;AAeO,MAAM,uBAAuB,CAAC,SAAqC;AACzE,SAAO,KAAK,IAAI,CAAA,UAAS;AACxB,YAAQ,MAAM,MAAA;AAAA,MACb,KAAKA,MAAAA,UAAU;AACd,eAAO,IAAIC,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER,KAAKD,MAAAA,UAAU;AACd,eAAO,IAAIE,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER,KAAKF,MAAAA,UAAU;AACd,eAAO,IAAIG,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER;AACCC,oBAAAA,YAAY,MAAM,IAAI;AAAA,IAAA;AAAA,EAEzB,CAAC;AACF;;"}
1
+ {"version":3,"file":"EventQueryHelpers.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventQueryHelpers.ts"],"sourcesContent":["import { ContentEvent, CreateEvent, DeleteEvent, EventType, TruncateEvent, UpdateEvent } from '../../events/index.js'\nimport { assertNever } from '../../../utils/index.js'\n\nexport type EventRow = {\n\tid: string\n\ttype: EventType\n\ttable_name: string | null\n\trow_ids: string[] | null\n\tvalues: Record<string, any> | null\n\tcreated_at: Date\n\tapplied_at: Date\n\tidentity_id: string\n\ttransaction_id: string\n}\n\nexport const createEventsFromRows = (rows: EventRow[]): ContentEvent[] => {\n\treturn rows.map(event => {\n\t\tswitch (event.type) {\n\t\t\tcase EventType.create:\n\t\t\t\treturn new CreateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids ?? [],\n\t\t\t\t\tevent.table_name ?? '',\n\t\t\t\t\tevent.values ?? {},\n\t\t\t\t)\n\t\t\tcase EventType.update:\n\t\t\t\treturn new UpdateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids ?? [],\n\t\t\t\t\tevent.table_name ?? '',\n\t\t\t\t\tevent.values ?? {},\n\t\t\t\t)\n\t\t\tcase EventType.delete:\n\t\t\t\treturn new DeleteEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids ?? [],\n\t\t\t\t\tevent.table_name ?? '',\n\t\t\t\t)\n\t\t\tcase EventType.truncate:\n\t\t\t\treturn new TruncateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t)\n\t\t\tdefault:\n\t\t\t\tassertNever(event.type)\n\t\t}\n\t})\n}\n"],"names":["EventType","CreateEvent","UpdateEvent","DeleteEvent","TruncateEvent","assertNever"],"mappings":";;;;;;AAeO,MAAM,uBAAuB,CAAC,SAAqC;AACzE,SAAO,KAAK,IAAI,CAAA,UAAS;AACxB,YAAQ,MAAM,MAAA;AAAA,MACb,KAAKA,MAAAA,UAAU;AACd,eAAO,IAAIC,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,WAAW,CAAA;AAAA,UACjB,MAAM,cAAc;AAAA,UACpB,MAAM,UAAU,CAAA;AAAA,QAAC;AAAA,MAEnB,KAAKD,MAAAA,UAAU;AACd,eAAO,IAAIE,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,WAAW,CAAA;AAAA,UACjB,MAAM,cAAc;AAAA,UACpB,MAAM,UAAU,CAAA;AAAA,QAAC;AAAA,MAEnB,KAAKF,MAAAA,UAAU;AACd,eAAO,IAAIG,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,WAAW,CAAA;AAAA,UACjB,MAAM,cAAc;AAAA,QAAA;AAAA,MAEtB,KAAKH,MAAAA,UAAU;AACd,eAAO,IAAII,MAAAA;AAAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER;AACCC,oBAAAA,YAAY,MAAM,IAAI;AAAA,IAAA;AAAA,EAEzB,CAAC;AACF;;"}
@@ -1,4 +1,4 @@
1
- import { EventType, DeleteEvent, UpdateEvent, CreateEvent } from "../../events/types.js";
1
+ import { EventType, TruncateEvent, DeleteEvent, UpdateEvent, CreateEvent } from "../../events/types.js";
2
2
  import "../../../schema/dev.graphql.js";
3
3
  import "../../../schema/system.graphql.js";
4
4
  import { assertNever } from "../../../utils/assertNever.js";
@@ -12,9 +12,9 @@ const createEventsFromRows = (rows) => {
12
12
  event.applied_at,
13
13
  event.identity_id,
14
14
  event.transaction_id,
15
- event.row_ids,
16
- event.table_name,
17
- event.values
15
+ event.row_ids ?? [],
16
+ event.table_name ?? "",
17
+ event.values ?? {}
18
18
  );
19
19
  case EventType.update:
20
20
  return new UpdateEvent(
@@ -23,9 +23,9 @@ const createEventsFromRows = (rows) => {
23
23
  event.applied_at,
24
24
  event.identity_id,
25
25
  event.transaction_id,
26
- event.row_ids,
27
- event.table_name,
28
- event.values
26
+ event.row_ids ?? [],
27
+ event.table_name ?? "",
28
+ event.values ?? {}
29
29
  );
30
30
  case EventType.delete:
31
31
  return new DeleteEvent(
@@ -34,8 +34,16 @@ const createEventsFromRows = (rows) => {
34
34
  event.applied_at,
35
35
  event.identity_id,
36
36
  event.transaction_id,
37
- event.row_ids,
38
- event.table_name
37
+ event.row_ids ?? [],
38
+ event.table_name ?? ""
39
+ );
40
+ case EventType.truncate:
41
+ return new TruncateEvent(
42
+ event.id,
43
+ event.created_at,
44
+ event.applied_at,
45
+ event.identity_id,
46
+ event.transaction_id
39
47
  );
40
48
  default:
41
49
  assertNever(event.type);
@@ -1 +1 @@
1
- {"version":3,"file":"EventQueryHelpers.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventQueryHelpers.ts"],"sourcesContent":["import { ContentEvent, CreateEvent, DeleteEvent, EventType, UpdateEvent } from '../../events'\nimport { assertNever } from '../../../utils'\n\nexport type EventRow = {\n\tid: string\n\ttype: EventType\n\ttable_name: string\n\trow_ids: string[]\n\tvalues: Record<string, any>\n\tcreated_at: Date\n\tapplied_at: Date\n\tidentity_id: string\n\ttransaction_id: string\n}\n\nexport const createEventsFromRows = (rows: EventRow[]): ContentEvent[] => {\n\treturn rows.map(event => {\n\t\tswitch (event.type) {\n\t\t\tcase EventType.create:\n\t\t\t\treturn new CreateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids,\n\t\t\t\t\tevent.table_name,\n\t\t\t\t\tevent.values,\n\t\t\t\t)\n\t\t\tcase EventType.update:\n\t\t\t\treturn new UpdateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids,\n\t\t\t\t\tevent.table_name,\n\t\t\t\t\tevent.values,\n\t\t\t\t)\n\t\t\tcase EventType.delete:\n\t\t\t\treturn new DeleteEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids,\n\t\t\t\t\tevent.table_name,\n\t\t\t\t)\n\t\t\tdefault:\n\t\t\t\tassertNever(event.type)\n\t\t}\n\t})\n}\n"],"names":[],"mappings":";;;;AAeO,MAAM,uBAAuB,CAAC,SAAqC;AACzE,SAAO,KAAK,IAAI,CAAA,UAAS;AACxB,YAAQ,MAAM,MAAA;AAAA,MACb,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER;AACC,oBAAY,MAAM,IAAI;AAAA,IAAA;AAAA,EAEzB,CAAC;AACF;"}
1
+ {"version":3,"file":"EventQueryHelpers.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventQueryHelpers.ts"],"sourcesContent":["import { ContentEvent, CreateEvent, DeleteEvent, EventType, TruncateEvent, UpdateEvent } from '../../events/index.js'\nimport { assertNever } from '../../../utils/index.js'\n\nexport type EventRow = {\n\tid: string\n\ttype: EventType\n\ttable_name: string | null\n\trow_ids: string[] | null\n\tvalues: Record<string, any> | null\n\tcreated_at: Date\n\tapplied_at: Date\n\tidentity_id: string\n\ttransaction_id: string\n}\n\nexport const createEventsFromRows = (rows: EventRow[]): ContentEvent[] => {\n\treturn rows.map(event => {\n\t\tswitch (event.type) {\n\t\t\tcase EventType.create:\n\t\t\t\treturn new CreateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids ?? [],\n\t\t\t\t\tevent.table_name ?? '',\n\t\t\t\t\tevent.values ?? {},\n\t\t\t\t)\n\t\t\tcase EventType.update:\n\t\t\t\treturn new UpdateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids ?? [],\n\t\t\t\t\tevent.table_name ?? '',\n\t\t\t\t\tevent.values ?? {},\n\t\t\t\t)\n\t\t\tcase EventType.delete:\n\t\t\t\treturn new DeleteEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t\tevent.row_ids ?? [],\n\t\t\t\t\tevent.table_name ?? '',\n\t\t\t\t)\n\t\t\tcase EventType.truncate:\n\t\t\t\treturn new TruncateEvent(\n\t\t\t\t\tevent.id,\n\t\t\t\t\tevent.created_at,\n\t\t\t\t\tevent.applied_at,\n\t\t\t\t\tevent.identity_id,\n\t\t\t\t\tevent.transaction_id,\n\t\t\t\t)\n\t\t\tdefault:\n\t\t\t\tassertNever(event.type)\n\t\t}\n\t})\n}\n"],"names":[],"mappings":";;;;AAeO,MAAM,uBAAuB,CAAC,SAAqC;AACzE,SAAO,KAAK,IAAI,CAAA,UAAS;AACxB,YAAQ,MAAM,MAAA;AAAA,MACb,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,WAAW,CAAA;AAAA,UACjB,MAAM,cAAc;AAAA,UACpB,MAAM,UAAU,CAAA;AAAA,QAAC;AAAA,MAEnB,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,WAAW,CAAA;AAAA,UACjB,MAAM,cAAc;AAAA,UACpB,MAAM,UAAU,CAAA;AAAA,QAAC;AAAA,MAEnB,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM,WAAW,CAAA;AAAA,UACjB,MAAM,cAAc;AAAA,QAAA;AAAA,MAEtB,KAAK,UAAU;AACd,eAAO,IAAI;AAAA,UACV,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,QAAA;AAAA,MAER;AACC,oBAAY,MAAM,IAAI;AAAA,IAAA;AAAA,EAEzB,CAAC;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tLiteral,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification,\n\tValue,\n} from '@contember/database'\nimport { ContentEvent } from '../../events'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on => on.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']))\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher(['event_data', 'transaction_id'], this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\n\t\t\t\tconst ors: Literal[] = this.filter.rows.map(row => {\n\t\t\t\t\tconst builder = ConditionBuilder.create()\n\t\t\t\t\t\t.compare('table_name', Operator.eq, row.tableName)\n\n\t\t\t\t\treturn row.primaryKey.reduce((expr, val, index) => {\n\t\t\t\t\t\tif (val === null) {\n\t\t\t\t\t\t\treturn expr\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn expr.raw(`\"row_ids\"->${index} = ?::jsonb`, JSON.stringify(val))\n\t\t\t\t\t}, builder).getSql()\n\t\t\t\t}).filter((it): it is Literal => it !== null)\n\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)))\n\t\t\t})\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n}\n"],"names":["DatabaseQuery","qb","Operator","ConditionBuilder","SelectBuilder","EventsOrder","createEventsFromRows"],"mappings":";;;;;;;AAcO,MAAM,oBAAoBA,SAAAA,cAA8B;AAAA,EAC9D,YACkB,QACA,OACA,QACA,OAChB;AACD,UAAA;AALiB,SAAA,SAAA;AACA,SAAA,QAAA;AACA,SAAA,SAAA;AACA,SAAA,QAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,EAAE,MAAkD;AAC/D,UAAM,oBAAoB,CAAC,QAAgB,eAAyE,CAAAC,QAAM;AACzH,UAAI,CAAC,YAAY;AAChB,eAAOA;AAAAA,MACR;AACA,YAAM,EAAE,MAAM,GAAA,IAAO;AACrB,UAAI,MAAM;AACTA,cAAKA,IAAG,MAAM,CAAA,SAAQ,KAAK,QAAQ,QAAQC,SAAAA,SAAS,KAAK,IAAI,CAAC;AAAA,MAC/D;AACA,UAAI,IAAI;AACPD,cAAKA,IAAG,MAAM,CAAA,SAAQ,KAAK,QAAQ,QAAQC,SAAAA,SAAS,KAAK,EAAE,CAAC;AAAA,MAC7D;AACA,aAAOD;AAAAA,IACR;AACA,UAAM,kBAAkB,CAAC,QAAmC,WAAiE,CAAAA,QAAM;AAClI,UAAI,CAAC,QAAQ;AACZ,eAAOA;AAAAA,MACR;AACA,aAAOA,IAAG,MAAME,0BAAiB,OAAA,EAAS,GAAG,QAAQ,MAAM,CAAC;AAAA,IAC7D;AAEA,UAAM,KAAKC,SAAAA,cAAc,OAAA,EACvB,OAAO,IAAI,EACX,OAAO,MAAM,EACb,OAAO,YAAY,EACnB,OAAO,SAAS,EAChB,OAAO,QAAQ,EACf,OAAO,YAAY,EACnB,OAAO,YAAY,EACnB,OAAO,aAAa,EACpB,OAAO,CAAC,cAAc,gBAAgB,CAAC,EACvC,KAAK,YAAY,EACjB,KAAK,qBAAqB,QAAW,CAAA,OAAM,GAAG,UAAU,CAAC,cAAc,gBAAgB,GAAG,CAAC,qBAAqB,gBAAgB,CAAC,CAAC,EAClI,MAAM,CAAAH,QAAM;AACZ,cAAQ,KAAK,OAAA;AAAA,QACZ,KAAKI,MAAAA,YAAY;AAChB,iBAAOJ,IAAG,QAAQ,cAAc,KAAK;AAAA,QACtC,KAAKI,MAAAA,YAAY;AAChB,iBAAOJ,IAAG,QAAQ,cAAc,MAAM;AAAA,QACvC,KAAKI,MAAAA,YAAY;AAChB,iBAAOJ,IAAG,QAAQ,cAAc,KAAK;AAAA,QACtC,KAAKI,MAAAA,YAAY;AAChB,iBAAOJ,IAAG,QAAQ,cAAc,MAAM;AAAA,MAAA;AAAA,IAEzC,CAAC,EACA,MAAM,gBAAgB,QAAQ,KAAK,OAAO,OAAO,IAAI,CAAA,OAAM,GAAG,YAAA,CAAa,CAAC,CAAC,EAC7E,MAAM,gBAAgB,cAAc,KAAK,OAAO,MAAM,CAAC,EACvD,MAAM,gBAAgB,CAAC,cAAc,gBAAgB,GAAG,KAAK,OAAO,YAAY,CAAC,EACjF,MAAM,gBAAgB,eAAe,KAAK,OAAO,UAAU,CAAC,EAC5D,MAAM,kBAAkB,cAAc,KAAK,OAAO,aAAa,MAAS,CAAC,EACzE,MAAM,kBAAkB,cAAc,KAAK,OAAO,aAAa,MAAS,CAAC,EACzE,MAAM,CAAAA,QAAM;AACZ,UAAI,CAAC,KAAK,OAAO,MAAM;AACtB,eAAOA;AAAAA,MACR;AAEA,YAAM,MAAiB,KAAK,OAAO,KAAK,IAAI,CAAA,QAAO;AAClD,cAAM,UAAUE,0BAAiB,SAC/B,QAAQ,cAAcD,kBAAS,IAAI,IAAI,SAAS;AAElD,eAAO,IAAI,WAAW,OAAO,CAAC,MAAM,KAAK,UAAU;AAClD,cAAI,QAAQ,MAAM;AACjB,mBAAO;AAAA,UACR;AACA,iBAAO,KAAK,IAAI,cAAc,KAAK,eAAe,KAAK,UAAU,GAAG,CAAC;AAAA,QACtE,GAAG,OAAO,EAAE,OAAA;AAAA,MACb,CAAC,EAAE,OAAO,CAAC,OAAsB,OAAO,IAAI;AAE5C,aAAOD,IAAG,MAAME,SAAAA,iBAAiB,OAAA,EAAS,GAAGA,0BAAiB,OAAO,GAAG,CAAC,CAAC;AAAA,IAC3E,CAAC,EACA,MAAM,KAAK,OAAO,KAAK,MAAM;AAE/B,WAAOG,kBAAAA,qBAAqB,MAAM,GAAG,UAAU,EAAE,CAAC;AAAA,EACnD;AACD;;"}
1
+ {"version":3,"file":"EventsQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tLiteral,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification,\n\tValue,\n} from '@contember/database'\nimport { ContentEvent } from '../../events/index.js'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema/index.js'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers.js'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on => on.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']))\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher(['event_data', 'transaction_id'], this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\n\t\t\t\tconst ors: Literal[] = this.filter.rows.map(row => {\n\t\t\t\t\tconst builder = ConditionBuilder.create()\n\t\t\t\t\t\t.compare('table_name', Operator.eq, row.tableName)\n\n\t\t\t\t\treturn row.primaryKey.reduce((expr, val, index) => {\n\t\t\t\t\t\tif (val === null) {\n\t\t\t\t\t\t\treturn expr\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn expr.raw(`\"row_ids\"->${index} = ?::jsonb`, JSON.stringify(val))\n\t\t\t\t\t}, builder).getSql()\n\t\t\t\t}).filter((it): it is Literal => it !== null)\n\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)))\n\t\t\t})\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n}\n"],"names":["DatabaseQuery","qb","Operator","ConditionBuilder","SelectBuilder","EventsOrder","createEventsFromRows"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tLiteral,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification,\n\tValue,\n} from '@contember/database'\nimport { ContentEvent } from '../../events'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on => on.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']))\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher(['event_data', 'transaction_id'], this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\n\t\t\t\tconst ors: Literal[] = this.filter.rows.map(row => {\n\t\t\t\t\tconst builder = ConditionBuilder.create()\n\t\t\t\t\t\t.compare('table_name', Operator.eq, row.tableName)\n\n\t\t\t\t\treturn row.primaryKey.reduce((expr, val, index) => {\n\t\t\t\t\t\tif (val === null) {\n\t\t\t\t\t\t\treturn expr\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn expr.raw(`\"row_ids\"->${index} = ?::jsonb`, JSON.stringify(val))\n\t\t\t\t\t}, builder).getSql()\n\t\t\t\t}).filter((it): it is Literal => it !== null)\n\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)))\n\t\t\t})\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n}\n"],"names":["qb"],"mappings":"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"}
1
+ {"version":3,"file":"EventsQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tLiteral,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification,\n\tValue,\n} from '@contember/database'\nimport { ContentEvent } from '../../events/index.js'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema/index.js'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers.js'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on => on.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']))\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher(['event_data', 'transaction_id'], this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\n\t\t\t\tconst ors: Literal[] = this.filter.rows.map(row => {\n\t\t\t\t\tconst builder = ConditionBuilder.create()\n\t\t\t\t\t\t.compare('table_name', Operator.eq, row.tableName)\n\n\t\t\t\t\treturn row.primaryKey.reduce((expr, val, index) => {\n\t\t\t\t\t\tif (val === null) {\n\t\t\t\t\t\t\treturn expr\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn expr.raw(`\"row_ids\"->${index} = ?::jsonb`, JSON.stringify(val))\n\t\t\t\t\t}, builder).getSql()\n\t\t\t\t}).filter((it): it is Literal => it !== null)\n\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)))\n\t\t\t})\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n}\n"],"names":["qb"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigrationByVersionQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationByVersionQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper'\n\nexport class ExecutedMigrationByVersionQuery extends DatabaseQuery<ExecutedMigration | null> {\n\tconstructor(private version: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration | null> {\n\t\tconst builder = createExecutedMigrationQueryBuilder().where({ version: this.version })\n\t\tconst rows = await builder.getResult(queryable.db)\n\t\tconst migration = await this.fetchOneOrNull(rows)\n\t\treturn migration ? createExecutedMigrationDto(migration) : null\n\t}\n}\n"],"names":["DatabaseQuery","createExecutedMigrationQueryBuilder","createExecutedMigrationDto"],"mappings":";;;;AAIO,MAAM,wCAAwCA,SAAAA,cAAwC;AAAA,EAC5F,YAAoB,SAAiB;AACpC,UAAA;AADmB,SAAA,UAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAAiE;AAC5E,UAAM,UAAUC,8BAAAA,sCAAsC,MAAM,EAAE,SAAS,KAAK,SAAS;AACrF,UAAM,OAAO,MAAM,QAAQ,UAAU,UAAU,EAAE;AACjD,UAAM,YAAY,MAAM,KAAK,eAAe,IAAI;AAChD,WAAO,YAAYC,8BAAAA,2BAA2B,SAAS,IAAI;AAAA,EAC5D;AACD;;"}
1
+ {"version":3,"file":"ExecutedMigrationByVersionQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationByVersionQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos/index.js'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper.js'\n\nexport class ExecutedMigrationByVersionQuery extends DatabaseQuery<ExecutedMigration | null> {\n\tconstructor(private version: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration | null> {\n\t\tconst builder = createExecutedMigrationQueryBuilder().where({ version: this.version })\n\t\tconst rows = await builder.getResult(queryable.db)\n\t\tconst migration = await this.fetchOneOrNull(rows)\n\t\treturn migration ? createExecutedMigrationDto(migration) : null\n\t}\n}\n"],"names":["DatabaseQuery","createExecutedMigrationQueryBuilder","createExecutedMigrationDto"],"mappings":";;;;AAIO,MAAM,wCAAwCA,SAAAA,cAAwC;AAAA,EAC5F,YAAoB,SAAiB;AACpC,UAAA;AADmB,SAAA,UAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAAiE;AAC5E,UAAM,UAAUC,8BAAAA,sCAAsC,MAAM,EAAE,SAAS,KAAK,SAAS;AACrF,UAAM,OAAO,MAAM,QAAQ,UAAU,UAAU,EAAE;AACjD,UAAM,YAAY,MAAM,KAAK,eAAe,IAAI;AAChD,WAAO,YAAYC,8BAAAA,2BAA2B,SAAS,IAAI;AAAA,EAC5D;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigrationByVersionQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationByVersionQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper'\n\nexport class ExecutedMigrationByVersionQuery extends DatabaseQuery<ExecutedMigration | null> {\n\tconstructor(private version: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration | null> {\n\t\tconst builder = createExecutedMigrationQueryBuilder().where({ version: this.version })\n\t\tconst rows = await builder.getResult(queryable.db)\n\t\tconst migration = await this.fetchOneOrNull(rows)\n\t\treturn migration ? createExecutedMigrationDto(migration) : null\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,wCAAwC,cAAwC;AAAA,EAC5F,YAAoB,SAAiB;AACpC,UAAA;AADmB,SAAA,UAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAAiE;AAC5E,UAAM,UAAU,sCAAsC,MAAM,EAAE,SAAS,KAAK,SAAS;AACrF,UAAM,OAAO,MAAM,QAAQ,UAAU,UAAU,EAAE;AACjD,UAAM,YAAY,MAAM,KAAK,eAAe,IAAI;AAChD,WAAO,YAAY,2BAA2B,SAAS,IAAI;AAAA,EAC5D;AACD;"}
1
+ {"version":3,"file":"ExecutedMigrationByVersionQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationByVersionQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos/index.js'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper.js'\n\nexport class ExecutedMigrationByVersionQuery extends DatabaseQuery<ExecutedMigration | null> {\n\tconstructor(private version: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration | null> {\n\t\tconst builder = createExecutedMigrationQueryBuilder().where({ version: this.version })\n\t\tconst rows = await builder.getResult(queryable.db)\n\t\tconst migration = await this.fetchOneOrNull(rows)\n\t\treturn migration ? createExecutedMigrationDto(migration) : null\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,wCAAwC,cAAwC;AAAA,EAC5F,YAAoB,SAAiB;AACpC,UAAA;AADmB,SAAA,UAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAAiE;AAC5E,UAAM,UAAU,sCAAsC,MAAM,EAAE,SAAS,KAAK,SAAS;AACrF,UAAM,OAAO,MAAM,QAAQ,UAAU,UAAU,EAAE;AACjD,UAAM,YAAY,MAAM,KAAK,eAAe,IAAI;AAChD,WAAO,YAAY,2BAA2B,SAAS,IAAI;AAAA,EAC5D;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigrationsQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Operator } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper'\n\nexport class ExecutedMigrationsQuery extends DatabaseQuery<ExecutedMigration[]> {\n\tconstructor(private afterVersion?: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration[]> {\n\t\tconst builder = createExecutedMigrationQueryBuilder()\n\t\tconst afterVersion = this.afterVersion\n\t\tconst builderWithWhere = afterVersion\n\t\t\t? builder.where(expr => expr.compare('version', Operator.gt, afterVersion))\n\t\t\t: builder\n\n\t\tconst result = await builderWithWhere.getResult(queryable.db)\n\t\treturn result.map(createExecutedMigrationDto)\n\t}\n}\n"],"names":["DatabaseQuery","createExecutedMigrationQueryBuilder","Operator","createExecutedMigrationDto"],"mappings":";;;;AAIO,MAAM,gCAAgCA,SAAAA,cAAmC;AAAA,EAC/E,YAAoB,cAAuB;AAC1C,UAAA;AADmB,SAAA,eAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAA4D;AACvE,UAAM,UAAUC,8BAAAA,oCAAA;AAChB,UAAM,eAAe,KAAK;AAC1B,UAAM,mBAAmB,eACtB,QAAQ,MAAM,CAAA,SAAQ,KAAK,QAAQ,WAAWC,SAAAA,SAAS,IAAI,YAAY,CAAC,IACxE;AAEH,UAAM,SAAS,MAAM,iBAAiB,UAAU,UAAU,EAAE;AAC5D,WAAO,OAAO,IAAIC,wDAA0B;AAAA,EAC7C;AACD;;"}
1
+ {"version":3,"file":"ExecutedMigrationsQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Operator } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos/index.js'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper.js'\n\nexport class ExecutedMigrationsQuery extends DatabaseQuery<ExecutedMigration[]> {\n\tconstructor(private afterVersion?: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration[]> {\n\t\tconst builder = createExecutedMigrationQueryBuilder()\n\t\tconst afterVersion = this.afterVersion\n\t\tconst builderWithWhere = afterVersion\n\t\t\t? builder.where(expr => expr.compare('version', Operator.gt, afterVersion))\n\t\t\t: builder\n\n\t\tconst result = await builderWithWhere.getResult(queryable.db)\n\t\treturn result.map(createExecutedMigrationDto)\n\t}\n}\n"],"names":["DatabaseQuery","createExecutedMigrationQueryBuilder","Operator","createExecutedMigrationDto"],"mappings":";;;;AAIO,MAAM,gCAAgCA,SAAAA,cAAmC;AAAA,EAC/E,YAAoB,cAAuB;AAC1C,UAAA;AADmB,SAAA,eAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAA4D;AACvE,UAAM,UAAUC,8BAAAA,oCAAA;AAChB,UAAM,eAAe,KAAK;AAC1B,UAAM,mBAAmB,eACtB,QAAQ,MAAM,CAAA,SAAQ,KAAK,QAAQ,WAAWC,SAAAA,SAAS,IAAI,YAAY,CAAC,IACxE;AAEH,UAAM,SAAS,MAAM,iBAAiB,UAAU,UAAU,EAAE;AAC5D,WAAO,OAAO,IAAIC,wDAA0B;AAAA,EAC7C;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigrationsQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Operator } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper'\n\nexport class ExecutedMigrationsQuery extends DatabaseQuery<ExecutedMigration[]> {\n\tconstructor(private afterVersion?: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration[]> {\n\t\tconst builder = createExecutedMigrationQueryBuilder()\n\t\tconst afterVersion = this.afterVersion\n\t\tconst builderWithWhere = afterVersion\n\t\t\t? builder.where(expr => expr.compare('version', Operator.gt, afterVersion))\n\t\t\t: builder\n\n\t\tconst result = await builderWithWhere.getResult(queryable.db)\n\t\treturn result.map(createExecutedMigrationDto)\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,gCAAgC,cAAmC;AAAA,EAC/E,YAAoB,cAAuB;AAC1C,UAAA;AADmB,SAAA,eAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAA4D;AACvE,UAAM,UAAU,oCAAA;AAChB,UAAM,eAAe,KAAK;AAC1B,UAAM,mBAAmB,eACtB,QAAQ,MAAM,CAAA,SAAQ,KAAK,QAAQ,WAAW,SAAS,IAAI,YAAY,CAAC,IACxE;AAEH,UAAM,SAAS,MAAM,iBAAiB,UAAU,UAAU,EAAE;AAC5D,WAAO,OAAO,IAAI,0BAA0B;AAAA,EAC7C;AACD;"}
1
+ {"version":3,"file":"ExecutedMigrationsQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Operator } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos/index.js'\nimport { createExecutedMigrationDto, createExecutedMigrationQueryBuilder } from './ExecutedMigrationsQueryHelper.js'\n\nexport class ExecutedMigrationsQuery extends DatabaseQuery<ExecutedMigration[]> {\n\tconstructor(private afterVersion?: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<ExecutedMigration[]> {\n\t\tconst builder = createExecutedMigrationQueryBuilder()\n\t\tconst afterVersion = this.afterVersion\n\t\tconst builderWithWhere = afterVersion\n\t\t\t? builder.where(expr => expr.compare('version', Operator.gt, afterVersion))\n\t\t\t: builder\n\n\t\tconst result = await builderWithWhere.getResult(queryable.db)\n\t\treturn result.map(createExecutedMigrationDto)\n\t}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,gCAAgC,cAAmC;AAAA,EAC/E,YAAoB,cAAuB;AAC1C,UAAA;AADmB,SAAA,eAAA;AAAA,EAEpB;AAAA,EAEA,MAAM,MAAM,WAA4D;AACvE,UAAM,UAAU,oCAAA;AAChB,UAAM,eAAe,KAAK;AAC1B,UAAM,mBAAmB,eACtB,QAAQ,MAAM,CAAA,SAAQ,KAAK,QAAQ,WAAW,SAAS,IAAI,YAAY,CAAC,IACxE;AAEH,UAAM,SAAS,MAAM,iBAAiB,UAAU,UAAU,EAAE;AAC5D,WAAO,OAAO,IAAI,0BAA0B;AAAA,EAC7C;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigrationsQueryHelper.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts"],"sourcesContent":["import { Literal, SelectBuilder } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos'\nimport { VERSION_INITIAL } from '@contember/schema-migrations'\n\ntype ExecutedMigrationRow = { id: number; name: string; migration: any; checksum: string | null; executed_at: Date; type: 'content' | 'schema' }\nexport const createExecutedMigrationQueryBuilder = () =>\n\tSelectBuilder.create<ExecutedMigrationRow>()\n\t\t.select(new Literal('*'))\n\t\t.from('schema_migration')\n\t\t.orderBy('version')\n\nexport const createExecutedMigrationDto = (row: ExecutedMigrationRow) =>\n\tnew ExecutedMigration(\n\t\trow.id,\n\t\trow.name,\n\t\trow.migration.formatVersion || VERSION_INITIAL,\n\t\trow.migration.modifications,\n\t\trow.executed_at,\n\t\trow.checksum,\n\t\trow.type ?? 'schema',\n\t)\n"],"names":["SelectBuilder","Literal","ExecutedMigration","VERSION_INITIAL"],"mappings":";;;;;AAKO,MAAM,sCAAsC,MAClDA,SAAAA,cAAc,OAAA,EACZ,OAAO,IAAIC,SAAAA,QAAQ,GAAG,CAAC,EACvB,KAAK,kBAAkB,EACvB,QAAQ,SAAS;AAEb,MAAM,6BAA6B,CAAC,QAC1C,IAAIC,kBAAAA;AAAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,UAAU,iBAAiBC,iBAAAA;AAAAA,EAC/B,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,QAAQ;AACb;;;"}
1
+ {"version":3,"file":"ExecutedMigrationsQueryHelper.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts"],"sourcesContent":["import { Literal, SelectBuilder } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos/index.js'\nimport { VERSION_INITIAL } from '@contember/schema-migrations'\n\ntype ExecutedMigrationRow = { id: number; name: string; migration: any; checksum: string | null; executed_at: Date; type: 'content' | 'schema' }\nexport const createExecutedMigrationQueryBuilder = () =>\n\tSelectBuilder.create<ExecutedMigrationRow>()\n\t\t.select(new Literal('*'))\n\t\t.from('schema_migration')\n\t\t.orderBy('version')\n\nexport const createExecutedMigrationDto = (row: ExecutedMigrationRow) =>\n\tnew ExecutedMigration(\n\t\trow.id,\n\t\trow.name,\n\t\trow.migration.formatVersion || VERSION_INITIAL,\n\t\trow.migration.modifications,\n\t\trow.executed_at,\n\t\trow.checksum,\n\t\trow.type ?? 'schema',\n\t)\n"],"names":["SelectBuilder","Literal","ExecutedMigration","VERSION_INITIAL"],"mappings":";;;;;AAKO,MAAM,sCAAsC,MAClDA,SAAAA,cAAc,OAAA,EACZ,OAAO,IAAIC,SAAAA,QAAQ,GAAG,CAAC,EACvB,KAAK,kBAAkB,EACvB,QAAQ,SAAS;AAEb,MAAM,6BAA6B,CAAC,QAC1C,IAAIC,kBAAAA;AAAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,UAAU,iBAAiBC,iBAAAA;AAAAA,EAC/B,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,QAAQ;AACb;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigrationsQueryHelper.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts"],"sourcesContent":["import { Literal, SelectBuilder } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos'\nimport { VERSION_INITIAL } from '@contember/schema-migrations'\n\ntype ExecutedMigrationRow = { id: number; name: string; migration: any; checksum: string | null; executed_at: Date; type: 'content' | 'schema' }\nexport const createExecutedMigrationQueryBuilder = () =>\n\tSelectBuilder.create<ExecutedMigrationRow>()\n\t\t.select(new Literal('*'))\n\t\t.from('schema_migration')\n\t\t.orderBy('version')\n\nexport const createExecutedMigrationDto = (row: ExecutedMigrationRow) =>\n\tnew ExecutedMigration(\n\t\trow.id,\n\t\trow.name,\n\t\trow.migration.formatVersion || VERSION_INITIAL,\n\t\trow.migration.modifications,\n\t\trow.executed_at,\n\t\trow.checksum,\n\t\trow.type ?? 'schema',\n\t)\n"],"names":[],"mappings":";;;AAKO,MAAM,sCAAsC,MAClD,cAAc,OAAA,EACZ,OAAO,IAAI,QAAQ,GAAG,CAAC,EACvB,KAAK,kBAAkB,EACvB,QAAQ,SAAS;AAEb,MAAM,6BAA6B,CAAC,QAC1C,IAAI;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,UAAU,iBAAiB;AAAA,EAC/B,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,QAAQ;AACb;"}
1
+ {"version":3,"file":"ExecutedMigrationsQueryHelper.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts"],"sourcesContent":["import { Literal, SelectBuilder } from '@contember/database'\nimport { ExecutedMigration } from '../../dtos/index.js'\nimport { VERSION_INITIAL } from '@contember/schema-migrations'\n\ntype ExecutedMigrationRow = { id: number; name: string; migration: any; checksum: string | null; executed_at: Date; type: 'content' | 'schema' }\nexport const createExecutedMigrationQueryBuilder = () =>\n\tSelectBuilder.create<ExecutedMigrationRow>()\n\t\t.select(new Literal('*'))\n\t\t.from('schema_migration')\n\t\t.orderBy('version')\n\nexport const createExecutedMigrationDto = (row: ExecutedMigrationRow) =>\n\tnew ExecutedMigration(\n\t\trow.id,\n\t\trow.name,\n\t\trow.migration.formatVersion || VERSION_INITIAL,\n\t\trow.migration.modifications,\n\t\trow.executed_at,\n\t\trow.checksum,\n\t\trow.type ?? 'schema',\n\t)\n"],"names":[],"mappings":";;;AAKO,MAAM,sCAAsC,MAClD,cAAc,OAAA,EACZ,OAAO,IAAI,QAAQ,GAAG,CAAC,EACvB,KAAK,kBAAkB,EACvB,QAAQ,SAAS;AAEb,MAAM,6BAA6B,CAAC,QAC1C,IAAI;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,UAAU,iBAAiB;AAAA,EAC/B,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,QAAQ;AACb;"}
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Database = require("@contember/database");
4
4
  class SchemaQuery extends Database.DatabaseQuery {
5
- constructor(currentHash) {
5
+ constructor(currentHash, currentVersion) {
6
6
  super();
7
7
  this.currentHash = currentHash;
8
+ this.currentVersion = currentVersion;
8
9
  }
9
10
  async fetch(queryable) {
10
11
  const query = Database.SelectBuilder.create().from("schema").select(new Database.Literal("*")).where({
@@ -13,6 +14,9 @@ class SchemaQuery extends Database.DatabaseQuery {
13
14
  if (!this.currentHash) {
14
15
  return it;
15
16
  }
17
+ if (this.currentVersion) {
18
+ return it.where((it2) => it2.raw("(checksum != ? OR version != ?)", this.currentHash, this.currentVersion));
19
+ }
16
20
  return it.where((it2) => it2.raw("checksum != ?", this.currentHash));
17
21
  });
18
22
  const row = this.fetchOneOrNull(await query.getResult(queryable.db));
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/schema/SchemaQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SchemaWithMeta } from '../../migrations'\n\nexport class SchemaQuery extends DatabaseQuery<SchemaWithMeta | null> {\n\tconstructor(\n\t\tprivate readonly currentHash?: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<SchemaWithMeta | null> {\n\t\tconst query = SelectBuilder.create<{\n\t\t\tschema: Schema\n\t\t\tchecksum: string\n\t\t\tversion: string\n\t\t\tupdated_at: Date\n\t\t\tmigration_id: number\n\t\t}>()\n\t\t\t.from('schema')\n\t\t\t.select(new Literal('*'))\n\t\t\t.where({\n\t\t\t\tid: 'single',\n\t\t\t})\n\t\t\t.match(it => {\n\t\t\t\tif (!this.currentHash) {\n\t\t\t\t\treturn it\n\t\t\t\t}\n\t\t\t\treturn it.where(it => it.raw('checksum != ?', this.currentHash))\n\t\t\t})\n\n\t\tconst row = this.fetchOneOrNull(await query.getResult(queryable.db))\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\t\treturn {\n\t\t\tschema: row.schema,\n\t\t\tmeta: {\n\t\t\t\tchecksum: row.checksum,\n\t\t\t\tversion: row.version,\n\t\t\t\tupdatedAt: row.updated_at,\n\t\t\t\tid: row.migration_id,\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder","Literal","it"],"mappings":";;;AAIO,MAAM,oBAAoBA,SAAAA,cAAqC;AAAA,EACrE,YACkB,aAChB;AACD,UAAA;AAFiB,SAAA,cAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAA8D;AACzE,UAAM,QAAQC,SAAAA,cAAc,OAAA,EAO1B,KAAK,QAAQ,EACb,OAAO,IAAIC,SAAAA,QAAQ,GAAG,CAAC,EACvB,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACJ,EACA,MAAM,CAAA,OAAM;AACZ,UAAI,CAAC,KAAK,aAAa;AACtB,eAAO;AAAA,MACR;AACA,aAAO,GAAG,MAAM,CAAAC,QAAMA,IAAG,IAAI,iBAAiB,KAAK,WAAW,CAAC;AAAA,IAChE,CAAC;AAEF,UAAM,MAAM,KAAK,eAAe,MAAM,MAAM,UAAU,UAAU,EAAE,CAAC;AACnE,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AACA,WAAO;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,MAAM;AAAA,QACL,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,IAAI,IAAI;AAAA,MAAA;AAAA,IACT;AAAA,EAEF;AACD;;"}
1
+ {"version":3,"file":"SchemaQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/schema/SchemaQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SchemaWithMeta } from '../../migrations/index.js'\n\nexport class SchemaQuery extends DatabaseQuery<SchemaWithMeta | null> {\n\tconstructor(\n\t\tprivate readonly currentHash?: string,\n\t\tprivate readonly currentVersion?: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<SchemaWithMeta | null> {\n\t\tconst query = SelectBuilder.create<{\n\t\t\tschema: Schema\n\t\t\tchecksum: string\n\t\t\tversion: string\n\t\t\tupdated_at: Date\n\t\t\tmigration_id: number\n\t\t}>()\n\t\t\t.from('schema')\n\t\t\t.select(new Literal('*'))\n\t\t\t.where({\n\t\t\t\tid: 'single',\n\t\t\t})\n\t\t\t.match(it => {\n\t\t\t\tif (!this.currentHash) {\n\t\t\t\t\treturn it\n\t\t\t\t}\n\t\t\t\tif (this.currentVersion) {\n\t\t\t\t\treturn it.where(it => it.raw('(checksum != ? OR version != ?)', this.currentHash, this.currentVersion))\n\t\t\t\t}\n\t\t\t\treturn it.where(it => it.raw('checksum != ?', this.currentHash))\n\t\t\t})\n\n\t\tconst row = this.fetchOneOrNull(await query.getResult(queryable.db))\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\t\treturn {\n\t\t\tschema: row.schema,\n\t\t\tmeta: {\n\t\t\t\tchecksum: row.checksum,\n\t\t\t\tversion: row.version,\n\t\t\t\tupdatedAt: row.updated_at,\n\t\t\t\tid: row.migration_id,\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder","Literal","it"],"mappings":";;;AAIO,MAAM,oBAAoBA,SAAAA,cAAqC;AAAA,EACrE,YACkB,aACA,gBAChB;AACD,UAAA;AAHiB,SAAA,cAAA;AACA,SAAA,iBAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAA8D;AACzE,UAAM,QAAQC,SAAAA,cAAc,OAAA,EAO1B,KAAK,QAAQ,EACb,OAAO,IAAIC,SAAAA,QAAQ,GAAG,CAAC,EACvB,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACJ,EACA,MAAM,CAAA,OAAM;AACZ,UAAI,CAAC,KAAK,aAAa;AACtB,eAAO;AAAA,MACR;AACA,UAAI,KAAK,gBAAgB;AACxB,eAAO,GAAG,MAAM,CAAAC,QAAMA,IAAG,IAAI,mCAAmC,KAAK,aAAa,KAAK,cAAc,CAAC;AAAA,MACvG;AACA,aAAO,GAAG,MAAM,CAAAA,QAAMA,IAAG,IAAI,iBAAiB,KAAK,WAAW,CAAC;AAAA,IAChE,CAAC;AAEF,UAAM,MAAM,KAAK,eAAe,MAAM,MAAM,UAAU,UAAU,EAAE,CAAC;AACnE,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AACA,WAAO;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,MAAM;AAAA,QACL,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,IAAI,IAAI;AAAA,MAAA;AAAA,IACT;AAAA,EAEF;AACD;;"}
@@ -1,8 +1,9 @@
1
1
  import { DatabaseQuery, SelectBuilder, Literal } from "@contember/database";
2
2
  class SchemaQuery extends DatabaseQuery {
3
- constructor(currentHash) {
3
+ constructor(currentHash, currentVersion) {
4
4
  super();
5
5
  this.currentHash = currentHash;
6
+ this.currentVersion = currentVersion;
6
7
  }
7
8
  async fetch(queryable) {
8
9
  const query = SelectBuilder.create().from("schema").select(new Literal("*")).where({
@@ -11,6 +12,9 @@ class SchemaQuery extends DatabaseQuery {
11
12
  if (!this.currentHash) {
12
13
  return it;
13
14
  }
15
+ if (this.currentVersion) {
16
+ return it.where((it2) => it2.raw("(checksum != ? OR version != ?)", this.currentHash, this.currentVersion));
17
+ }
14
18
  return it.where((it2) => it2.raw("checksum != ?", this.currentHash));
15
19
  });
16
20
  const row = this.fetchOneOrNull(await query.getResult(queryable.db));
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/schema/SchemaQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SchemaWithMeta } from '../../migrations'\n\nexport class SchemaQuery extends DatabaseQuery<SchemaWithMeta | null> {\n\tconstructor(\n\t\tprivate readonly currentHash?: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<SchemaWithMeta | null> {\n\t\tconst query = SelectBuilder.create<{\n\t\t\tschema: Schema\n\t\t\tchecksum: string\n\t\t\tversion: string\n\t\t\tupdated_at: Date\n\t\t\tmigration_id: number\n\t\t}>()\n\t\t\t.from('schema')\n\t\t\t.select(new Literal('*'))\n\t\t\t.where({\n\t\t\t\tid: 'single',\n\t\t\t})\n\t\t\t.match(it => {\n\t\t\t\tif (!this.currentHash) {\n\t\t\t\t\treturn it\n\t\t\t\t}\n\t\t\t\treturn it.where(it => it.raw('checksum != ?', this.currentHash))\n\t\t\t})\n\n\t\tconst row = this.fetchOneOrNull(await query.getResult(queryable.db))\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\t\treturn {\n\t\t\tschema: row.schema,\n\t\t\tmeta: {\n\t\t\t\tchecksum: row.checksum,\n\t\t\t\tversion: row.version,\n\t\t\t\tupdatedAt: row.updated_at,\n\t\t\t\tid: row.migration_id,\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["it"],"mappings":";AAIO,MAAM,oBAAoB,cAAqC;AAAA,EACrE,YACkB,aAChB;AACD,UAAA;AAFiB,SAAA,cAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAA8D;AACzE,UAAM,QAAQ,cAAc,OAAA,EAO1B,KAAK,QAAQ,EACb,OAAO,IAAI,QAAQ,GAAG,CAAC,EACvB,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACJ,EACA,MAAM,CAAA,OAAM;AACZ,UAAI,CAAC,KAAK,aAAa;AACtB,eAAO;AAAA,MACR;AACA,aAAO,GAAG,MAAM,CAAAA,QAAMA,IAAG,IAAI,iBAAiB,KAAK,WAAW,CAAC;AAAA,IAChE,CAAC;AAEF,UAAM,MAAM,KAAK,eAAe,MAAM,MAAM,UAAU,UAAU,EAAE,CAAC;AACnE,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AACA,WAAO;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,MAAM;AAAA,QACL,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,IAAI,IAAI;AAAA,MAAA;AAAA,IACT;AAAA,EAEF;AACD;"}
1
+ {"version":3,"file":"SchemaQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/schema/SchemaQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SchemaWithMeta } from '../../migrations/index.js'\n\nexport class SchemaQuery extends DatabaseQuery<SchemaWithMeta | null> {\n\tconstructor(\n\t\tprivate readonly currentHash?: string,\n\t\tprivate readonly currentVersion?: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<SchemaWithMeta | null> {\n\t\tconst query = SelectBuilder.create<{\n\t\t\tschema: Schema\n\t\t\tchecksum: string\n\t\t\tversion: string\n\t\t\tupdated_at: Date\n\t\t\tmigration_id: number\n\t\t}>()\n\t\t\t.from('schema')\n\t\t\t.select(new Literal('*'))\n\t\t\t.where({\n\t\t\t\tid: 'single',\n\t\t\t})\n\t\t\t.match(it => {\n\t\t\t\tif (!this.currentHash) {\n\t\t\t\t\treturn it\n\t\t\t\t}\n\t\t\t\tif (this.currentVersion) {\n\t\t\t\t\treturn it.where(it => it.raw('(checksum != ? OR version != ?)', this.currentHash, this.currentVersion))\n\t\t\t\t}\n\t\t\t\treturn it.where(it => it.raw('checksum != ?', this.currentHash))\n\t\t\t})\n\n\t\tconst row = this.fetchOneOrNull(await query.getResult(queryable.db))\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\t\treturn {\n\t\t\tschema: row.schema,\n\t\t\tmeta: {\n\t\t\t\tchecksum: row.checksum,\n\t\t\t\tversion: row.version,\n\t\t\t\tupdatedAt: row.updated_at,\n\t\t\t\tid: row.migration_id,\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["it"],"mappings":";AAIO,MAAM,oBAAoB,cAAqC;AAAA,EACrE,YACkB,aACA,gBAChB;AACD,UAAA;AAHiB,SAAA,cAAA;AACA,SAAA,iBAAA;AAAA,EAGlB;AAAA,EAEA,MAAM,MAAM,WAA8D;AACzE,UAAM,QAAQ,cAAc,OAAA,EAO1B,KAAK,QAAQ,EACb,OAAO,IAAI,QAAQ,GAAG,CAAC,EACvB,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACJ,EACA,MAAM,CAAA,OAAM;AACZ,UAAI,CAAC,KAAK,aAAa;AACtB,eAAO;AAAA,MACR;AACA,UAAI,KAAK,gBAAgB;AACxB,eAAO,GAAG,MAAM,CAAAA,QAAMA,IAAG,IAAI,mCAAmC,KAAK,aAAa,KAAK,cAAc,CAAC;AAAA,MACvG;AACA,aAAO,GAAG,MAAM,CAAAA,QAAMA,IAAG,IAAI,iBAAiB,KAAK,WAAW,CAAC;AAAA,IAChE,CAAC;AAEF,UAAM,MAAM,KAAK,eAAe,MAAM,MAAM,UAAU,UAAU,EAAE,CAAC;AACnE,QAAI,CAAC,KAAK;AACT,aAAO;AAAA,IACR;AACA,WAAO;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,MAAM;AAAA,QACL,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,IAAI,IAAI;AAAA,MAAA;AAAA,IACT;AAAA,EAEF;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageBySlugQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageBySlugQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory'\nimport { Stage } from '../../dtos'\n\nclass StageBySlugQuery extends DatabaseQuery<StageBySlugQuery.Result> {\n\tconstructor(private readonly slug: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<StageBySlugQuery.Result> {\n\t\tlet selectBuilder = prepareStageQueryBuilder().where({ slug: this.slug })\n\n\t\tconst rows = await selectBuilder.getResult(queryable.db)\n\n\t\treturn this.fetchOneOrNull(rows)\n\t}\n}\n\nnamespace StageBySlugQuery {\n\texport type Result = null | Stage\n}\n\nexport { StageBySlugQuery }\n"],"names":["DatabaseQuery","prepareStageQueryBuilder"],"mappings":";;;;AAIA,MAAM,yBAAyBA,SAAAA,cAAuC;AAAA,EACrE,YAA6B,MAAc;AAC1C,UAAA;AAD4B,SAAA,OAAA;AAAA,EAE7B;AAAA,EAEA,MAAM,MAAM,WAAgE;AAC3E,QAAI,gBAAgBC,kBAAAA,2BAA2B,MAAM,EAAE,MAAM,KAAK,MAAM;AAExE,UAAM,OAAO,MAAM,cAAc,UAAU,UAAU,EAAE;AAEvD,WAAO,KAAK,eAAe,IAAI;AAAA,EAChC;AACD;;"}
1
+ {"version":3,"file":"StageBySlugQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageBySlugQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory.js'\nimport { Stage } from '../../dtos/index.js'\n\nclass StageBySlugQuery extends DatabaseQuery<StageBySlugQuery.Result> {\n\tconstructor(private readonly slug: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<StageBySlugQuery.Result> {\n\t\tlet selectBuilder = prepareStageQueryBuilder().where({ slug: this.slug })\n\n\t\tconst rows = await selectBuilder.getResult(queryable.db)\n\n\t\treturn this.fetchOneOrNull(rows)\n\t}\n}\n\nnamespace StageBySlugQuery {\n\texport type Result = null | Stage\n}\n\nexport { StageBySlugQuery }\n"],"names":["DatabaseQuery","prepareStageQueryBuilder"],"mappings":";;;;AAIA,MAAM,yBAAyBA,SAAAA,cAAuC;AAAA,EACrE,YAA6B,MAAc;AAC1C,UAAA;AAD4B,SAAA,OAAA;AAAA,EAE7B;AAAA,EAEA,MAAM,MAAM,WAAgE;AAC3E,QAAI,gBAAgBC,kBAAAA,2BAA2B,MAAM,EAAE,MAAM,KAAK,MAAM;AAExE,UAAM,OAAO,MAAM,cAAc,UAAU,UAAU,EAAE;AAEvD,WAAO,KAAK,eAAe,IAAI;AAAA,EAChC;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageBySlugQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageBySlugQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory'\nimport { Stage } from '../../dtos'\n\nclass StageBySlugQuery extends DatabaseQuery<StageBySlugQuery.Result> {\n\tconstructor(private readonly slug: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<StageBySlugQuery.Result> {\n\t\tlet selectBuilder = prepareStageQueryBuilder().where({ slug: this.slug })\n\n\t\tconst rows = await selectBuilder.getResult(queryable.db)\n\n\t\treturn this.fetchOneOrNull(rows)\n\t}\n}\n\nnamespace StageBySlugQuery {\n\texport type Result = null | Stage\n}\n\nexport { StageBySlugQuery }\n"],"names":[],"mappings":";;AAIA,MAAM,yBAAyB,cAAuC;AAAA,EACrE,YAA6B,MAAc;AAC1C,UAAA;AAD4B,SAAA,OAAA;AAAA,EAE7B;AAAA,EAEA,MAAM,MAAM,WAAgE;AAC3E,QAAI,gBAAgB,2BAA2B,MAAM,EAAE,MAAM,KAAK,MAAM;AAExE,UAAM,OAAO,MAAM,cAAc,UAAU,UAAU,EAAE;AAEvD,WAAO,KAAK,eAAe,IAAI;AAAA,EAChC;AACD;"}
1
+ {"version":3,"file":"StageBySlugQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageBySlugQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory.js'\nimport { Stage } from '../../dtos/index.js'\n\nclass StageBySlugQuery extends DatabaseQuery<StageBySlugQuery.Result> {\n\tconstructor(private readonly slug: string) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<StageBySlugQuery.Result> {\n\t\tlet selectBuilder = prepareStageQueryBuilder().where({ slug: this.slug })\n\n\t\tconst rows = await selectBuilder.getResult(queryable.db)\n\n\t\treturn this.fetchOneOrNull(rows)\n\t}\n}\n\nnamespace StageBySlugQuery {\n\texport type Result = null | Stage\n}\n\nexport { StageBySlugQuery }\n"],"names":[],"mappings":";;AAIA,MAAM,yBAAyB,cAAuC;AAAA,EACrE,YAA6B,MAAc;AAC1C,UAAA;AAD4B,SAAA,OAAA;AAAA,EAE7B;AAAA,EAEA,MAAM,MAAM,WAAgE;AAC3E,QAAI,gBAAgB,2BAA2B,MAAM,EAAE,MAAM,KAAK,MAAM;AAExE,UAAM,OAAO,MAAM,cAAc,UAAU,UAAU,EAAE;AAEvD,WAAO,KAAK,eAAe,IAAI;AAAA,EAChC;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageQueryFactory.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageQueryFactory.ts"],"sourcesContent":["import { SelectBuilder } from '@contember/database'\nimport { Stage } from '../../dtos'\n\nexport const prepareStageQueryBuilder = () => {\n\treturn SelectBuilder.create<Stage>()\n\t\t.select('id')\n\t\t.select('name')\n\t\t.select('slug')\n\t\t.select('schema')\n\t\t.from('stage')\n}\n"],"names":["SelectBuilder"],"mappings":";;;AAGO,MAAM,2BAA2B,MAAM;AAC7C,SAAOA,SAAAA,cAAc,OAAA,EACnB,OAAO,IAAI,EACX,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,OAAO;AACf;;"}
1
+ {"version":3,"file":"StageQueryFactory.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageQueryFactory.ts"],"sourcesContent":["import { SelectBuilder } from '@contember/database'\nimport { Stage } from '../../dtos/index.js'\n\nexport const prepareStageQueryBuilder = () => {\n\treturn SelectBuilder.create<Stage>()\n\t\t.select('id')\n\t\t.select('name')\n\t\t.select('slug')\n\t\t.select('schema')\n\t\t.from('stage')\n}\n"],"names":["SelectBuilder"],"mappings":";;;AAGO,MAAM,2BAA2B,MAAM;AAC7C,SAAOA,SAAAA,cAAc,OAAA,EACnB,OAAO,IAAI,EACX,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,OAAO;AACf;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageQueryFactory.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageQueryFactory.ts"],"sourcesContent":["import { SelectBuilder } from '@contember/database'\nimport { Stage } from '../../dtos'\n\nexport const prepareStageQueryBuilder = () => {\n\treturn SelectBuilder.create<Stage>()\n\t\t.select('id')\n\t\t.select('name')\n\t\t.select('slug')\n\t\t.select('schema')\n\t\t.from('stage')\n}\n"],"names":[],"mappings":";AAGO,MAAM,2BAA2B,MAAM;AAC7C,SAAO,cAAc,OAAA,EACnB,OAAO,IAAI,EACX,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,OAAO;AACf;"}
1
+ {"version":3,"file":"StageQueryFactory.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StageQueryFactory.ts"],"sourcesContent":["import { SelectBuilder } from '@contember/database'\nimport { Stage } from '../../dtos/index.js'\n\nexport const prepareStageQueryBuilder = () => {\n\treturn SelectBuilder.create<Stage>()\n\t\t.select('id')\n\t\t.select('name')\n\t\t.select('slug')\n\t\t.select('schema')\n\t\t.from('stage')\n}\n"],"names":[],"mappings":";AAGO,MAAM,2BAA2B,MAAM;AAC7C,SAAO,cAAc,OAAA,EACnB,OAAO,IAAI,EACX,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,KAAK,OAAO;AACf;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StagesQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StagesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory'\nimport { Stage } from '../../dtos'\n\nclass StagesQuery extends DatabaseQuery<Stage[]> {\n\tasync fetch(queryable: DatabaseQueryable): Promise<Stage[]> {\n\t\tconst select = prepareStageQueryBuilder()\n\n\t\treturn await select.getResult(queryable.db)\n\t}\n}\n\nexport { StagesQuery }\n"],"names":["DatabaseQuery","prepareStageQueryBuilder"],"mappings":";;;;AAIA,MAAM,oBAAoBA,SAAAA,cAAuB;AAAA,EAChD,MAAM,MAAM,WAAgD;AAC3D,UAAM,SAASC,kBAAAA,yBAAA;AAEf,WAAO,MAAM,OAAO,UAAU,UAAU,EAAE;AAAA,EAC3C;AACD;;"}
1
+ {"version":3,"file":"StagesQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StagesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory.js'\nimport { Stage } from '../../dtos/index.js'\n\nclass StagesQuery extends DatabaseQuery<Stage[]> {\n\tasync fetch(queryable: DatabaseQueryable): Promise<Stage[]> {\n\t\tconst select = prepareStageQueryBuilder()\n\n\t\treturn await select.getResult(queryable.db)\n\t}\n}\n\nexport { StagesQuery }\n"],"names":["DatabaseQuery","prepareStageQueryBuilder"],"mappings":";;;;AAIA,MAAM,oBAAoBA,SAAAA,cAAuB;AAAA,EAChD,MAAM,MAAM,WAAgD;AAC3D,UAAM,SAASC,kBAAAA,yBAAA;AAEf,WAAO,MAAM,OAAO,UAAU,UAAU,EAAE;AAAA,EAC3C;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StagesQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StagesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory'\nimport { Stage } from '../../dtos'\n\nclass StagesQuery extends DatabaseQuery<Stage[]> {\n\tasync fetch(queryable: DatabaseQueryable): Promise<Stage[]> {\n\t\tconst select = prepareStageQueryBuilder()\n\n\t\treturn await select.getResult(queryable.db)\n\t}\n}\n\nexport { StagesQuery }\n"],"names":[],"mappings":";;AAIA,MAAM,oBAAoB,cAAuB;AAAA,EAChD,MAAM,MAAM,WAAgD;AAC3D,UAAM,SAAS,yBAAA;AAEf,WAAO,MAAM,OAAO,UAAU,UAAU,EAAE;AAAA,EAC3C;AACD;"}
1
+ {"version":3,"file":"StagesQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/stages/StagesQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable } from '@contember/database'\nimport { prepareStageQueryBuilder } from './StageQueryFactory.js'\nimport { Stage } from '../../dtos/index.js'\n\nclass StagesQuery extends DatabaseQuery<Stage[]> {\n\tasync fetch(queryable: DatabaseQueryable): Promise<Stage[]> {\n\t\tconst select = prepareStageQueryBuilder()\n\n\t\treturn await select.getResult(queryable.db)\n\t}\n}\n\nexport { StagesQuery }\n"],"names":[],"mappings":";;AAIA,MAAM,oBAAoB,cAAuB;AAAA,EAChD,MAAM,MAAM,WAAgD;AAC3D,UAAM,SAAS,yBAAA;AAEf,WAAO,MAAM,OAAO,UAAU,UAAU,EAAE;AAAA,EAC3C;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageCreator.cjs","sources":["../../../../../../packages/engine-system-api/src/model/stages/StageCreator.ts"],"sourcesContent":["import { CreateStageCommand } from '../commands'\nimport { StageBySlugQuery } from '../queries'\nimport { StageConfig } from '../../types'\nimport { DatabaseContext } from '../database'\n\nclass StageCreator {\n\tpublic async createStage(\n\t\tdb: DatabaseContext,\n\t\tstage: StageConfig,\n\t): Promise<boolean> {\n\t\tconst stageRow = await db.queryHandler.fetch(new StageBySlugQuery(stage.slug))\n\t\tif (stageRow) {\n\t\t\treturn false\n\t\t}\n\t\tawait db.commandBus.execute(new CreateStageCommand(stage))\n\t\treturn true\n\t}\n}\n\nexport { StageCreator }\n"],"names":["StageBySlugQuery","CreateStageCommand"],"mappings":";;;;;;;;AAKA,MAAM,aAAa;AAAA,EAClB,MAAa,YACZ,IACA,OACmB;AACnB,UAAM,WAAW,MAAM,GAAG,aAAa,MAAM,IAAIA,iBAAAA,iBAAiB,MAAM,IAAI,CAAC;AAC7E,QAAI,UAAU;AACb,aAAO;AAAA,IACR;AACA,UAAM,GAAG,WAAW,QAAQ,IAAIC,mBAAAA,mBAAmB,KAAK,CAAC;AACzD,WAAO;AAAA,EACR;AACD;;"}
1
+ {"version":3,"file":"StageCreator.cjs","sources":["../../../../../../packages/engine-system-api/src/model/stages/StageCreator.ts"],"sourcesContent":["import { CreateStageCommand } from '../commands/index.js'\nimport { StageBySlugQuery } from '../queries/index.js'\nimport { StageConfig } from '../../types.js'\nimport { DatabaseContext } from '../database/index.js'\n\nclass StageCreator {\n\tpublic async createStage(\n\t\tdb: DatabaseContext,\n\t\tstage: StageConfig,\n\t): Promise<boolean> {\n\t\tconst stageRow = await db.queryHandler.fetch(new StageBySlugQuery(stage.slug))\n\t\tif (stageRow) {\n\t\t\treturn false\n\t\t}\n\t\tawait db.commandBus.execute(new CreateStageCommand(stage))\n\t\treturn true\n\t}\n}\n\nexport { StageCreator }\n"],"names":["StageBySlugQuery","CreateStageCommand"],"mappings":";;;;;;;;AAKA,MAAM,aAAa;AAAA,EAClB,MAAa,YACZ,IACA,OACmB;AACnB,UAAM,WAAW,MAAM,GAAG,aAAa,MAAM,IAAIA,iBAAAA,iBAAiB,MAAM,IAAI,CAAC;AAC7E,QAAI,UAAU;AACb,aAAO;AAAA,IACR;AACA,UAAM,GAAG,WAAW,QAAQ,IAAIC,mBAAAA,mBAAmB,KAAK,CAAC;AACzD,WAAO;AAAA,EACR;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageCreator.js","sources":["../../../../../../packages/engine-system-api/src/model/stages/StageCreator.ts"],"sourcesContent":["import { CreateStageCommand } from '../commands'\nimport { StageBySlugQuery } from '../queries'\nimport { StageConfig } from '../../types'\nimport { DatabaseContext } from '../database'\n\nclass StageCreator {\n\tpublic async createStage(\n\t\tdb: DatabaseContext,\n\t\tstage: StageConfig,\n\t): Promise<boolean> {\n\t\tconst stageRow = await db.queryHandler.fetch(new StageBySlugQuery(stage.slug))\n\t\tif (stageRow) {\n\t\t\treturn false\n\t\t}\n\t\tawait db.commandBus.execute(new CreateStageCommand(stage))\n\t\treturn true\n\t}\n}\n\nexport { StageCreator }\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,aAAa;AAAA,EAClB,MAAa,YACZ,IACA,OACmB;AACnB,UAAM,WAAW,MAAM,GAAG,aAAa,MAAM,IAAI,iBAAiB,MAAM,IAAI,CAAC;AAC7E,QAAI,UAAU;AACb,aAAO;AAAA,IACR;AACA,UAAM,GAAG,WAAW,QAAQ,IAAI,mBAAmB,KAAK,CAAC;AACzD,WAAO;AAAA,EACR;AACD;"}
1
+ {"version":3,"file":"StageCreator.js","sources":["../../../../../../packages/engine-system-api/src/model/stages/StageCreator.ts"],"sourcesContent":["import { CreateStageCommand } from '../commands/index.js'\nimport { StageBySlugQuery } from '../queries/index.js'\nimport { StageConfig } from '../../types.js'\nimport { DatabaseContext } from '../database/index.js'\n\nclass StageCreator {\n\tpublic async createStage(\n\t\tdb: DatabaseContext,\n\t\tstage: StageConfig,\n\t): Promise<boolean> {\n\t\tconst stageRow = await db.queryHandler.fetch(new StageBySlugQuery(stage.slug))\n\t\tif (stageRow) {\n\t\t\treturn false\n\t\t}\n\t\tawait db.commandBus.execute(new CreateStageCommand(stage))\n\t\treturn true\n\t}\n}\n\nexport { StageCreator }\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,aAAa;AAAA,EAClB,MAAa,YACZ,IACA,OACmB;AACnB,UAAM,WAAW,MAAM,GAAG,aAAa,MAAM,IAAI,iBAAiB,MAAM,IAAI,CAAC;AAC7E,QAAI,UAAU;AACb,aAAO;AAAA,IACR;AACA,UAAM,GAAG,WAAW,QAAQ,IAAI,mBAAmB,KAAK,CAAC;AACzD,WAAO;AAAA,EACR;AACD;"}
@@ -32,6 +32,8 @@ class ResolverFactory {
32
32
  return "UpdateEvent";
33
33
  case types.EventType.Delete:
34
34
  return "DeleteEvent";
35
+ case types.EventType.Truncate:
36
+ return "TruncateEvent";
35
37
  case null:
36
38
  case void 0:
37
39
  return null;
@@ -47,7 +49,8 @@ class ResolverFactory {
47
49
  schema: this.schemaQueryResolver.schema.bind(this.schemaQueryResolver)
48
50
  },
49
51
  Mutation: {
50
- migrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver)
52
+ migrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver),
53
+ migrateFromSnapshot: this.migrateMutationResolver.migrateFromSnapshot.bind(this.migrateMutationResolver)
51
54
  },
52
55
  DeleteEvent: {
53
56
  oldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver)