@contember/engine-system-api 2.0.0-alpha.8 → 2.0.0-beta.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 (533) hide show
  1. package/dist/development/index.cjs +2 -2
  2. package/dist/development/index.js +2 -2
  3. package/dist/development/src/SystemContainer.cjs +4 -3
  4. package/dist/development/src/SystemContainer.cjs.map +1 -1
  5. package/dist/development/src/SystemContainer.js +5 -4
  6. package/dist/development/src/SystemContainer.js.map +1 -1
  7. package/dist/development/src/migrations/2020-03-27-130000-project-migrations.cjs.map +1 -1
  8. package/dist/development/src/migrations/2020-03-27-130000-project-migrations.js.map +1 -1
  9. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs +1 -2
  10. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  11. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js +1 -2
  12. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  13. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs +1 -2
  14. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  15. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js +1 -2
  16. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  17. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs +1 -2
  18. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  19. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js +1 -2
  20. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  21. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs +1 -2
  22. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  23. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -2
  24. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  25. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs +1 -1
  26. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  27. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js +1 -1
  28. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  29. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs +1 -1
  30. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  31. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js +1 -1
  32. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  33. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs +1 -1
  34. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  35. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js +1 -1
  36. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  37. package/dist/development/src/migrations/2024-06-28-153000-schema.cjs +18 -0
  38. package/dist/development/src/migrations/2024-06-28-153000-schema.cjs.map +1 -0
  39. package/dist/development/src/migrations/2024-06-28-153000-schema.js +19 -0
  40. package/dist/development/src/migrations/2024-06-28-153000-schema.js.map +1 -0
  41. package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs +12 -0
  42. package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -0
  43. package/dist/development/src/migrations/2024-06-28-153001-schema-init.js +13 -0
  44. package/dist/development/src/migrations/2024-06-28-153001-schema-init.js.map +1 -0
  45. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs +11 -0
  46. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -0
  47. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js +12 -0
  48. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -0
  49. package/dist/development/src/migrations/runner.cjs +11 -5
  50. package/dist/development/src/migrations/runner.cjs.map +1 -1
  51. package/dist/development/src/migrations/runner.js +11 -5
  52. package/dist/development/src/migrations/runner.js.map +1 -1
  53. package/dist/development/src/migrations/snapshot-factory.cjs +1 -1
  54. package/dist/development/src/migrations/snapshot-factory.cjs.map +1 -1
  55. package/dist/development/src/migrations/snapshot-factory.js +1 -1
  56. package/dist/development/src/migrations/snapshot-factory.js.map +1 -1
  57. package/dist/development/src/migrations/snapshot.cjs +17 -1
  58. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  59. package/dist/development/src/migrations/snapshot.js +17 -1
  60. package/dist/development/src/migrations/snapshot.js.map +1 -1
  61. package/dist/development/src/model/ProjectInitializer.cjs.map +1 -1
  62. package/dist/development/src/model/ProjectInitializer.js.map +1 -1
  63. package/dist/development/src/model/ProjectTruncateExecutor.cjs.map +1 -1
  64. package/dist/development/src/model/ProjectTruncateExecutor.js.map +1 -1
  65. package/dist/development/src/model/authorization/AuthorizationActions.cjs +1 -0
  66. package/dist/development/src/model/authorization/AuthorizationActions.cjs.map +1 -1
  67. package/dist/development/src/model/authorization/AuthorizationActions.js +1 -0
  68. package/dist/development/src/model/authorization/AuthorizationActions.js.map +1 -1
  69. package/dist/development/src/model/authorization/Identity.cjs.map +1 -1
  70. package/dist/development/src/model/authorization/Identity.js.map +1 -1
  71. package/dist/development/src/model/authorization/PermissionsFactory.cjs +1 -0
  72. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  73. package/dist/development/src/model/authorization/PermissionsFactory.js +1 -0
  74. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  75. package/dist/development/src/model/authorization/StagePermissionsFactory.cjs +4 -5
  76. package/dist/development/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  77. package/dist/development/src/model/authorization/StagePermissionsFactory.js +4 -5
  78. package/dist/development/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  79. package/dist/development/src/model/authorization/StageScope.cjs +2 -2
  80. package/dist/development/src/model/authorization/StageScope.cjs.map +1 -1
  81. package/dist/development/src/model/authorization/StageScope.js +2 -2
  82. package/dist/development/src/model/authorization/StageScope.js.map +1 -1
  83. package/dist/development/src/model/authorization/SwitchEvaluatorNode.cjs.map +1 -1
  84. package/dist/development/src/model/authorization/SwitchEvaluatorNode.js.map +1 -1
  85. package/dist/development/src/model/commands/CommandBus.cjs.map +1 -1
  86. package/dist/development/src/model/commands/CommandBus.js.map +1 -1
  87. package/dist/development/src/model/commands/events/TruncateEventsCommand.cjs.map +1 -1
  88. package/dist/development/src/model/commands/events/TruncateEventsCommand.js.map +1 -1
  89. package/dist/development/src/model/commands/migrations/DeleteMigrationCommand.cjs.map +1 -1
  90. package/dist/development/src/model/commands/migrations/DeleteMigrationCommand.js.map +1 -1
  91. package/dist/development/src/model/commands/migrations/ModifyMigrationCommand.cjs.map +1 -1
  92. package/dist/development/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  93. package/dist/development/src/model/commands/migrations/SaveMigrationCommand.cjs.map +1 -1
  94. package/dist/development/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  95. package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs +28 -0
  96. package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -0
  97. package/dist/development/src/model/commands/schema/SaveSchemaCommand.js +28 -0
  98. package/dist/development/src/model/commands/schema/SaveSchemaCommand.js.map +1 -0
  99. package/dist/development/src/model/commands/stages/CreateStageCommand.cjs.map +1 -1
  100. package/dist/development/src/model/commands/stages/CreateStageCommand.js.map +1 -1
  101. package/dist/development/src/model/database/DatabaseContext.cjs.map +1 -1
  102. package/dist/development/src/model/database/DatabaseContext.js.map +1 -1
  103. package/dist/development/src/model/dtos/ExecutedMigration.cjs.map +1 -1
  104. package/dist/development/src/model/dtos/ExecutedMigration.js.map +1 -1
  105. package/dist/development/src/model/events/EventResponseBuilder.cjs.map +1 -1
  106. package/dist/development/src/model/events/EventResponseBuilder.js.map +1 -1
  107. package/dist/development/src/model/events/EventResponseHelper.cjs.map +1 -1
  108. package/dist/development/src/model/events/EventResponseHelper.js.map +1 -1
  109. package/dist/development/src/model/events/identityUtils.cjs.map +1 -1
  110. package/dist/development/src/model/events/identityUtils.js.map +1 -1
  111. package/dist/development/src/model/events/types.cjs.map +1 -1
  112. package/dist/development/src/model/events/types.js.map +1 -1
  113. package/dist/development/src/model/helpers/modelHelpers.cjs.map +1 -1
  114. package/dist/development/src/model/helpers/modelHelpers.js.map +1 -1
  115. package/dist/development/src/model/metadata/SchemaDatabaseMetadataResolverStore.cjs.map +1 -1
  116. package/dist/development/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -1
  117. package/dist/development/src/model/migrations/ExecutedMigrationsResolver.cjs.map +1 -1
  118. package/dist/development/src/model/migrations/ExecutedMigrationsResolver.js.map +1 -1
  119. package/dist/development/src/model/migrations/MigrationAlterer.cjs +10 -0
  120. package/dist/development/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  121. package/dist/development/src/model/migrations/MigrationAlterer.js +10 -0
  122. package/dist/development/src/model/migrations/MigrationAlterer.js.map +1 -1
  123. package/dist/development/src/model/migrations/ProjectMigrator.cjs +29 -10
  124. package/dist/development/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  125. package/dist/development/src/model/migrations/ProjectMigrator.js +30 -11
  126. package/dist/development/src/model/migrations/ProjectMigrator.js.map +1 -1
  127. package/dist/development/src/model/migrations/SchemaProvider.cjs +58 -0
  128. package/dist/development/src/model/migrations/SchemaProvider.cjs.map +1 -0
  129. package/dist/development/src/model/migrations/SchemaProvider.js +58 -0
  130. package/dist/development/src/model/migrations/SchemaProvider.js.map +1 -0
  131. package/dist/development/src/model/queries/events/EventQueryHelpers.cjs.map +1 -1
  132. package/dist/development/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  133. package/dist/development/src/model/queries/events/EventsQuery.cjs +10 -14
  134. package/dist/development/src/model/queries/events/EventsQuery.cjs.map +1 -1
  135. package/dist/development/src/model/queries/events/EventsQuery.js +10 -14
  136. package/dist/development/src/model/queries/events/EventsQuery.js.map +1 -1
  137. package/dist/development/src/model/queries/events/LatestTransactionIdByStageQuery.cjs.map +1 -1
  138. package/dist/development/src/model/queries/events/LatestTransactionIdByStageQuery.js.map +1 -1
  139. package/dist/development/src/model/queries/events/OldValuesQuery.cjs.map +1 -1
  140. package/dist/development/src/model/queries/events/OldValuesQuery.js.map +1 -1
  141. package/dist/development/src/model/queries/migrations/ExecutedMigrationByVersionQuery.cjs.map +1 -1
  142. package/dist/development/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  143. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQuery.cjs.map +1 -1
  144. package/dist/development/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  145. package/dist/development/src/model/queries/schema/SchemaQuery.cjs +34 -0
  146. package/dist/development/src/model/queries/schema/SchemaQuery.cjs.map +1 -0
  147. package/dist/development/src/model/queries/schema/SchemaQuery.js +34 -0
  148. package/dist/development/src/model/queries/schema/SchemaQuery.js.map +1 -0
  149. package/dist/development/src/model/queries/stages/StageBySlugQuery.cjs.map +1 -1
  150. package/dist/development/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  151. package/dist/development/src/model/queries/stages/StagesQuery.cjs.map +1 -1
  152. package/dist/development/src/model/queries/stages/StagesQuery.js.map +1 -1
  153. package/dist/development/src/model/stages/StageCreator.cjs.map +1 -1
  154. package/dist/development/src/model/stages/StageCreator.js.map +1 -1
  155. package/dist/development/src/resolvers/ResolverFactory.cjs +6 -2
  156. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  157. package/dist/development/src/resolvers/ResolverFactory.js +7 -3
  158. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  159. package/dist/development/src/resolvers/SystemResolverContext.cjs +5 -5
  160. package/dist/development/src/resolvers/SystemResolverContext.cjs.map +1 -1
  161. package/dist/development/src/resolvers/SystemResolverContext.js +5 -5
  162. package/dist/development/src/resolvers/SystemResolverContext.js.map +1 -1
  163. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs +0 -1
  164. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  165. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js +0 -1
  166. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  167. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs +0 -1
  168. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  169. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js +0 -1
  170. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  171. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
  172. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  173. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
  174. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  175. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs +0 -1
  176. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  177. package/dist/development/src/resolvers/query/EventsQueryResolver.js +0 -1
  178. package/dist/development/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  179. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs +0 -1
  180. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  181. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js +0 -1
  182. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  183. package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs +23 -0
  184. package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -0
  185. package/dist/development/src/resolvers/query/SchemaQueryResolver.js +23 -0
  186. package/dist/development/src/resolvers/query/SchemaQueryResolver.js.map +1 -0
  187. package/dist/development/src/resolvers/query/StagesQueryResolver.cjs +0 -1
  188. package/dist/development/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  189. package/dist/development/src/resolvers/query/StagesQueryResolver.js +0 -1
  190. package/dist/development/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  191. package/dist/development/src/resolvers/types/EventOldValuesResolver.cjs.map +1 -1
  192. package/dist/development/src/resolvers/types/EventOldValuesResolver.js.map +1 -1
  193. package/dist/development/src/resolvers/types/OldValuesHelpers.cjs +0 -1
  194. package/dist/development/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  195. package/dist/development/src/resolvers/types/OldValuesHelpers.js +0 -1
  196. package/dist/development/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  197. package/dist/development/src/schema/dev.graphql.cjs.map +1 -1
  198. package/dist/development/src/schema/system.graphql.cjs +3 -1
  199. package/dist/development/src/schema/system.graphql.cjs.map +1 -1
  200. package/dist/development/src/schema/system.graphql.js +3 -1
  201. package/dist/development/src/schema/system.graphql.js.map +1 -1
  202. package/dist/development/src/schema/types.cjs.map +1 -1
  203. package/dist/development/src/schema/types.js.map +1 -1
  204. package/dist/development/src/utils/MapSet.cjs.map +1 -1
  205. package/dist/development/src/utils/MapSet.js.map +1 -1
  206. package/dist/development/src/utils/Response.cjs.map +1 -1
  207. package/dist/development/src/utils/Response.js.map +1 -1
  208. package/dist/development/src/utils/batchQuery.cjs.map +1 -1
  209. package/dist/development/src/utils/batchQuery.js.map +1 -1
  210. package/dist/production/index.cjs +2 -2
  211. package/dist/production/index.js +2 -2
  212. package/dist/production/src/SystemContainer.cjs +4 -3
  213. package/dist/production/src/SystemContainer.cjs.map +1 -1
  214. package/dist/production/src/SystemContainer.js +5 -4
  215. package/dist/production/src/SystemContainer.js.map +1 -1
  216. package/dist/production/src/migrations/2020-03-27-130000-project-migrations.cjs.map +1 -1
  217. package/dist/production/src/migrations/2020-03-27-130000-project-migrations.js.map +1 -1
  218. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs +1 -2
  219. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  220. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js +1 -2
  221. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  222. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs +1 -2
  223. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  224. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js +1 -2
  225. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  226. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs +1 -2
  227. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  228. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js +1 -2
  229. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  230. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs +1 -2
  231. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  232. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -2
  233. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  234. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs +1 -1
  235. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  236. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js +1 -1
  237. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  238. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs +1 -1
  239. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  240. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js +1 -1
  241. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  242. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs +1 -1
  243. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  244. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js +1 -1
  245. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  246. package/dist/production/src/migrations/2024-06-28-153000-schema.cjs +18 -0
  247. package/dist/production/src/migrations/2024-06-28-153000-schema.cjs.map +1 -0
  248. package/dist/production/src/migrations/2024-06-28-153000-schema.js +19 -0
  249. package/dist/production/src/migrations/2024-06-28-153000-schema.js.map +1 -0
  250. package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs +12 -0
  251. package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -0
  252. package/dist/production/src/migrations/2024-06-28-153001-schema-init.js +13 -0
  253. package/dist/production/src/migrations/2024-06-28-153001-schema-init.js.map +1 -0
  254. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs +11 -0
  255. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -0
  256. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js +12 -0
  257. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -0
  258. package/dist/production/src/migrations/runner.cjs +11 -5
  259. package/dist/production/src/migrations/runner.cjs.map +1 -1
  260. package/dist/production/src/migrations/runner.js +11 -5
  261. package/dist/production/src/migrations/runner.js.map +1 -1
  262. package/dist/production/src/migrations/snapshot-factory.cjs +1 -1
  263. package/dist/production/src/migrations/snapshot-factory.cjs.map +1 -1
  264. package/dist/production/src/migrations/snapshot-factory.js +1 -1
  265. package/dist/production/src/migrations/snapshot-factory.js.map +1 -1
  266. package/dist/production/src/migrations/snapshot.cjs +17 -1
  267. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  268. package/dist/production/src/migrations/snapshot.js +17 -1
  269. package/dist/production/src/migrations/snapshot.js.map +1 -1
  270. package/dist/production/src/model/ProjectInitializer.cjs.map +1 -1
  271. package/dist/production/src/model/ProjectInitializer.js.map +1 -1
  272. package/dist/production/src/model/ProjectTruncateExecutor.cjs.map +1 -1
  273. package/dist/production/src/model/ProjectTruncateExecutor.js.map +1 -1
  274. package/dist/production/src/model/authorization/AuthorizationActions.cjs +1 -0
  275. package/dist/production/src/model/authorization/AuthorizationActions.cjs.map +1 -1
  276. package/dist/production/src/model/authorization/AuthorizationActions.js +1 -0
  277. package/dist/production/src/model/authorization/AuthorizationActions.js.map +1 -1
  278. package/dist/production/src/model/authorization/Identity.cjs.map +1 -1
  279. package/dist/production/src/model/authorization/Identity.js.map +1 -1
  280. package/dist/production/src/model/authorization/PermissionsFactory.cjs +1 -0
  281. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  282. package/dist/production/src/model/authorization/PermissionsFactory.js +1 -0
  283. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  284. package/dist/production/src/model/authorization/StagePermissionsFactory.cjs +4 -5
  285. package/dist/production/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  286. package/dist/production/src/model/authorization/StagePermissionsFactory.js +4 -5
  287. package/dist/production/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  288. package/dist/production/src/model/authorization/StageScope.cjs +2 -2
  289. package/dist/production/src/model/authorization/StageScope.cjs.map +1 -1
  290. package/dist/production/src/model/authorization/StageScope.js +2 -2
  291. package/dist/production/src/model/authorization/StageScope.js.map +1 -1
  292. package/dist/production/src/model/authorization/SwitchEvaluatorNode.cjs.map +1 -1
  293. package/dist/production/src/model/authorization/SwitchEvaluatorNode.js.map +1 -1
  294. package/dist/production/src/model/commands/CommandBus.cjs.map +1 -1
  295. package/dist/production/src/model/commands/CommandBus.js.map +1 -1
  296. package/dist/production/src/model/commands/events/TruncateEventsCommand.cjs.map +1 -1
  297. package/dist/production/src/model/commands/events/TruncateEventsCommand.js.map +1 -1
  298. package/dist/production/src/model/commands/migrations/DeleteMigrationCommand.cjs.map +1 -1
  299. package/dist/production/src/model/commands/migrations/DeleteMigrationCommand.js.map +1 -1
  300. package/dist/production/src/model/commands/migrations/ModifyMigrationCommand.cjs.map +1 -1
  301. package/dist/production/src/model/commands/migrations/ModifyMigrationCommand.js.map +1 -1
  302. package/dist/production/src/model/commands/migrations/SaveMigrationCommand.cjs.map +1 -1
  303. package/dist/production/src/model/commands/migrations/SaveMigrationCommand.js.map +1 -1
  304. package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs +28 -0
  305. package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -0
  306. package/dist/production/src/model/commands/schema/SaveSchemaCommand.js +28 -0
  307. package/dist/production/src/model/commands/schema/SaveSchemaCommand.js.map +1 -0
  308. package/dist/production/src/model/commands/stages/CreateStageCommand.cjs.map +1 -1
  309. package/dist/production/src/model/commands/stages/CreateStageCommand.js.map +1 -1
  310. package/dist/production/src/model/database/DatabaseContext.cjs.map +1 -1
  311. package/dist/production/src/model/database/DatabaseContext.js.map +1 -1
  312. package/dist/production/src/model/dtos/ExecutedMigration.cjs.map +1 -1
  313. package/dist/production/src/model/dtos/ExecutedMigration.js.map +1 -1
  314. package/dist/production/src/model/events/EventResponseBuilder.cjs.map +1 -1
  315. package/dist/production/src/model/events/EventResponseBuilder.js.map +1 -1
  316. package/dist/production/src/model/events/EventResponseHelper.cjs.map +1 -1
  317. package/dist/production/src/model/events/EventResponseHelper.js.map +1 -1
  318. package/dist/production/src/model/events/identityUtils.cjs.map +1 -1
  319. package/dist/production/src/model/events/identityUtils.js.map +1 -1
  320. package/dist/production/src/model/events/types.cjs.map +1 -1
  321. package/dist/production/src/model/events/types.js.map +1 -1
  322. package/dist/production/src/model/helpers/modelHelpers.cjs.map +1 -1
  323. package/dist/production/src/model/helpers/modelHelpers.js.map +1 -1
  324. package/dist/production/src/model/metadata/SchemaDatabaseMetadataResolverStore.cjs.map +1 -1
  325. package/dist/production/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -1
  326. package/dist/production/src/model/migrations/ExecutedMigrationsResolver.cjs.map +1 -1
  327. package/dist/production/src/model/migrations/ExecutedMigrationsResolver.js.map +1 -1
  328. package/dist/production/src/model/migrations/MigrationAlterer.cjs +10 -0
  329. package/dist/production/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  330. package/dist/production/src/model/migrations/MigrationAlterer.js +10 -0
  331. package/dist/production/src/model/migrations/MigrationAlterer.js.map +1 -1
  332. package/dist/production/src/model/migrations/ProjectMigrator.cjs +29 -10
  333. package/dist/production/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  334. package/dist/production/src/model/migrations/ProjectMigrator.js +30 -11
  335. package/dist/production/src/model/migrations/ProjectMigrator.js.map +1 -1
  336. package/dist/production/src/model/migrations/SchemaProvider.cjs +58 -0
  337. package/dist/production/src/model/migrations/SchemaProvider.cjs.map +1 -0
  338. package/dist/production/src/model/migrations/SchemaProvider.js +58 -0
  339. package/dist/production/src/model/migrations/SchemaProvider.js.map +1 -0
  340. package/dist/production/src/model/queries/events/EventQueryHelpers.cjs.map +1 -1
  341. package/dist/production/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  342. package/dist/production/src/model/queries/events/EventsQuery.cjs +10 -14
  343. package/dist/production/src/model/queries/events/EventsQuery.cjs.map +1 -1
  344. package/dist/production/src/model/queries/events/EventsQuery.js +10 -14
  345. package/dist/production/src/model/queries/events/EventsQuery.js.map +1 -1
  346. package/dist/production/src/model/queries/events/LatestTransactionIdByStageQuery.cjs.map +1 -1
  347. package/dist/production/src/model/queries/events/LatestTransactionIdByStageQuery.js.map +1 -1
  348. package/dist/production/src/model/queries/events/OldValuesQuery.cjs.map +1 -1
  349. package/dist/production/src/model/queries/events/OldValuesQuery.js.map +1 -1
  350. package/dist/production/src/model/queries/migrations/ExecutedMigrationByVersionQuery.cjs.map +1 -1
  351. package/dist/production/src/model/queries/migrations/ExecutedMigrationByVersionQuery.js.map +1 -1
  352. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQuery.cjs.map +1 -1
  353. package/dist/production/src/model/queries/migrations/ExecutedMigrationsQuery.js.map +1 -1
  354. package/dist/production/src/model/queries/schema/SchemaQuery.cjs +34 -0
  355. package/dist/production/src/model/queries/schema/SchemaQuery.cjs.map +1 -0
  356. package/dist/production/src/model/queries/schema/SchemaQuery.js +34 -0
  357. package/dist/production/src/model/queries/schema/SchemaQuery.js.map +1 -0
  358. package/dist/production/src/model/queries/stages/StageBySlugQuery.cjs.map +1 -1
  359. package/dist/production/src/model/queries/stages/StageBySlugQuery.js.map +1 -1
  360. package/dist/production/src/model/queries/stages/StagesQuery.cjs.map +1 -1
  361. package/dist/production/src/model/queries/stages/StagesQuery.js.map +1 -1
  362. package/dist/production/src/model/stages/StageCreator.cjs.map +1 -1
  363. package/dist/production/src/model/stages/StageCreator.js.map +1 -1
  364. package/dist/production/src/resolvers/ResolverFactory.cjs +6 -2
  365. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  366. package/dist/production/src/resolvers/ResolverFactory.js +7 -3
  367. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  368. package/dist/production/src/resolvers/SystemResolverContext.cjs +5 -5
  369. package/dist/production/src/resolvers/SystemResolverContext.cjs.map +1 -1
  370. package/dist/production/src/resolvers/SystemResolverContext.js +5 -5
  371. package/dist/production/src/resolvers/SystemResolverContext.js.map +1 -1
  372. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs +0 -1
  373. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  374. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js +0 -1
  375. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  376. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs +0 -1
  377. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  378. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js +0 -1
  379. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  380. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
  381. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  382. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
  383. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  384. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs +0 -1
  385. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  386. package/dist/production/src/resolvers/query/EventsQueryResolver.js +0 -1
  387. package/dist/production/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  388. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs +0 -1
  389. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  390. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js +0 -1
  391. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  392. package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs +23 -0
  393. package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -0
  394. package/dist/production/src/resolvers/query/SchemaQueryResolver.js +23 -0
  395. package/dist/production/src/resolvers/query/SchemaQueryResolver.js.map +1 -0
  396. package/dist/production/src/resolvers/query/StagesQueryResolver.cjs +0 -1
  397. package/dist/production/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  398. package/dist/production/src/resolvers/query/StagesQueryResolver.js +0 -1
  399. package/dist/production/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  400. package/dist/production/src/resolvers/types/EventOldValuesResolver.cjs.map +1 -1
  401. package/dist/production/src/resolvers/types/EventOldValuesResolver.js.map +1 -1
  402. package/dist/production/src/resolvers/types/OldValuesHelpers.cjs +0 -1
  403. package/dist/production/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  404. package/dist/production/src/resolvers/types/OldValuesHelpers.js +0 -1
  405. package/dist/production/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  406. package/dist/production/src/schema/dev.graphql.cjs.map +1 -1
  407. package/dist/production/src/schema/system.graphql.cjs +3 -1
  408. package/dist/production/src/schema/system.graphql.cjs.map +1 -1
  409. package/dist/production/src/schema/system.graphql.js +3 -1
  410. package/dist/production/src/schema/system.graphql.js.map +1 -1
  411. package/dist/production/src/schema/types.cjs.map +1 -1
  412. package/dist/production/src/schema/types.js.map +1 -1
  413. package/dist/production/src/utils/MapSet.cjs.map +1 -1
  414. package/dist/production/src/utils/MapSet.js.map +1 -1
  415. package/dist/production/src/utils/Response.cjs.map +1 -1
  416. package/dist/production/src/utils/Response.js.map +1 -1
  417. package/dist/production/src/utils/batchQuery.cjs.map +1 -1
  418. package/dist/production/src/utils/batchQuery.js.map +1 -1
  419. package/dist/tests/cases/unit/eventsQuery.test.d.ts +2 -0
  420. package/dist/tests/cases/unit/eventsQuery.test.d.ts.map +1 -0
  421. package/dist/tests/src/uuid.d.ts +3 -0
  422. package/dist/tests/src/uuid.d.ts.map +1 -0
  423. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  424. package/dist/types/SystemContainer.d.ts +8 -6
  425. package/dist/types/SystemContainer.d.ts.map +1 -1
  426. package/dist/types/index.d.ts +1 -1
  427. package/dist/types/index.d.ts.map +1 -1
  428. package/dist/types/migrations/2024-06-28-153000-schema.d.ts +3 -0
  429. package/dist/types/migrations/2024-06-28-153000-schema.d.ts.map +1 -0
  430. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts +4 -0
  431. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts.map +1 -0
  432. package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts +3 -0
  433. package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts.map +1 -0
  434. package/dist/types/migrations/runner.d.ts +3 -3
  435. package/dist/types/migrations/runner.d.ts.map +1 -1
  436. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  437. package/dist/types/migrations/types.d.ts +2 -2
  438. package/dist/types/migrations/types.d.ts.map +1 -1
  439. package/dist/types/model/SchemaGetter.d.ts +6 -0
  440. package/dist/types/model/SchemaGetter.d.ts.map +1 -0
  441. package/dist/types/model/authorization/AuthorizationActions.d.ts +5 -0
  442. package/dist/types/model/authorization/AuthorizationActions.d.ts.map +1 -1
  443. package/dist/types/model/authorization/PermissionsFactory.d.ts.map +1 -1
  444. package/dist/types/model/authorization/StagePermissionsFactory.d.ts +4 -4
  445. package/dist/types/model/authorization/StagePermissionsFactory.d.ts.map +1 -1
  446. package/dist/types/model/authorization/StageScope.d.ts.map +1 -1
  447. package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts +8 -0
  448. package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts.map +1 -0
  449. package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts +3 -2
  450. package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts.map +1 -1
  451. package/dist/types/model/migrations/MigrationAlterer.d.ts +4 -0
  452. package/dist/types/model/migrations/MigrationAlterer.d.ts.map +1 -1
  453. package/dist/types/model/migrations/ProjectMigrator.d.ts +3 -3
  454. package/dist/types/model/migrations/ProjectMigrator.d.ts.map +1 -1
  455. package/dist/types/model/migrations/SchemaProvider.d.ts +28 -0
  456. package/dist/types/model/migrations/SchemaProvider.d.ts.map +1 -0
  457. package/dist/types/model/migrations/index.d.ts +1 -1
  458. package/dist/types/model/migrations/index.d.ts.map +1 -1
  459. package/dist/types/model/queries/events/EventsQuery.d.ts.map +1 -1
  460. package/dist/types/model/queries/index.d.ts +1 -0
  461. package/dist/types/model/queries/index.d.ts.map +1 -1
  462. package/dist/types/model/queries/schema/SchemaQuery.d.ts +8 -0
  463. package/dist/types/model/queries/schema/SchemaQuery.d.ts.map +1 -0
  464. package/dist/types/model/queries/schema/index.d.ts +2 -0
  465. package/dist/types/model/queries/schema/index.d.ts.map +1 -0
  466. package/dist/types/resolvers/ResolverFactory.d.ts +3 -1
  467. package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
  468. package/dist/types/resolvers/SystemResolverContext.d.ts +4 -4
  469. package/dist/types/resolvers/SystemResolverContext.d.ts.map +1 -1
  470. package/dist/types/resolvers/query/SchemaQueryResolver.d.ts +7 -0
  471. package/dist/types/resolvers/query/SchemaQueryResolver.d.ts.map +1 -0
  472. package/dist/types/schema/system.graphql.d.ts.map +1 -1
  473. package/dist/types/schema/types.d.ts +14 -2
  474. package/dist/types/schema/types.d.ts.map +1 -1
  475. package/dist/types/tsconfig.tsbuildinfo +1 -1
  476. package/graphql.codegen.yml +3 -1
  477. package/package.json +17 -24
  478. package/src/SystemContainer.ts +14 -13
  479. package/src/bin/runMigrations.ts +4 -4
  480. package/src/index.ts +3 -2
  481. package/src/migrations/2020-05-06-150000-composed-primary.ts +1 -1
  482. package/src/migrations/2020-06-01-103000-event-trigger-perf.ts +1 -1
  483. package/src/migrations/2021-05-07-155800-event-log-rework.ts +1 -1
  484. package/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts +1 -1
  485. package/src/migrations/2022-10-03-110000-table-on-delete.ts +1 -1
  486. package/src/migrations/2023-09-11-174000-fix-on-delete.ts +1 -1
  487. package/src/migrations/2023-10-19-173000-fix-unique.ts +1 -1
  488. package/src/migrations/2024-06-28-153000-schema.ts +20 -0
  489. package/src/migrations/2024-06-28-153001-schema-init.ts +12 -0
  490. package/src/migrations/2024-07-29-150000-event-data-index.ts +11 -0
  491. package/src/migrations/runner.ts +10 -4
  492. package/src/migrations/snapshot-factory.ts +1 -1
  493. package/src/migrations/snapshot.ts +17 -1
  494. package/src/migrations/types.ts +2 -2
  495. package/src/model/SchemaGetter.ts +3 -0
  496. package/src/model/authorization/AuthorizationActions.ts +1 -0
  497. package/src/model/authorization/PermissionsFactory.ts +1 -0
  498. package/src/model/authorization/StagePermissionsFactory.ts +5 -5
  499. package/src/model/authorization/StageScope.ts +2 -2
  500. package/src/model/commands/schema/SaveSchemaCommand.ts +31 -0
  501. package/src/model/dependencies/content/ContentQueryExecutor.ts +3 -2
  502. package/src/model/migrations/MigrationAlterer.ts +14 -0
  503. package/src/model/migrations/ProjectMigrator.ts +34 -12
  504. package/src/model/migrations/SchemaProvider.ts +77 -0
  505. package/src/model/migrations/index.ts +1 -1
  506. package/src/model/queries/events/EventsQuery.ts +15 -17
  507. package/src/model/queries/index.ts +1 -0
  508. package/src/model/queries/schema/SchemaQuery.ts +48 -0
  509. package/src/model/queries/schema/index.ts +1 -0
  510. package/src/resolvers/ResolverFactory.ts +9 -1
  511. package/src/resolvers/SystemResolverContext.ts +8 -13
  512. package/src/resolvers/mutation/TruncateMutationResolver.ts +1 -1
  513. package/src/resolvers/query/SchemaQueryResolver.ts +19 -0
  514. package/src/schema/system.graphql.ts +3 -1
  515. package/src/schema/types.ts +13 -3
  516. package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +12 -3
  517. package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +12 -3
  518. package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +20 -8
  519. package/tests/cases/migrations/2023-09-11-174000-fix-on-delete.test.ts +37 -16
  520. package/tests/cases/migrations/2023-10-19-173000-fix-unique.test.ts +12 -3
  521. package/tests/cases/unit/eventsQuery.test.ts +39 -0
  522. package/tests/src/uuid.ts +4 -0
  523. package/dist/development/src/model/migrations/SchemaVersionBuilder.cjs +0 -37
  524. package/dist/development/src/model/migrations/SchemaVersionBuilder.cjs.map +0 -1
  525. package/dist/development/src/model/migrations/SchemaVersionBuilder.js +0 -37
  526. package/dist/development/src/model/migrations/SchemaVersionBuilder.js.map +0 -1
  527. package/dist/production/src/model/migrations/SchemaVersionBuilder.cjs +0 -37
  528. package/dist/production/src/model/migrations/SchemaVersionBuilder.cjs.map +0 -1
  529. package/dist/production/src/model/migrations/SchemaVersionBuilder.js +0 -37
  530. package/dist/production/src/model/migrations/SchemaVersionBuilder.js.map +0 -1
  531. package/dist/types/model/migrations/SchemaVersionBuilder.d.ts +0 -37
  532. package/dist/types/model/migrations/SchemaVersionBuilder.d.ts.map +0 -1
  533. package/src/model/migrations/SchemaVersionBuilder.ts +0 -43
@@ -1 +1 @@
1
- {"version":3,"file":"2021-05-07-155800-event-log-rework.js","sources":["../../../../../packages/engine-system-api/src/migrations/2021-05-07-155800-event-log-rework.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createTrxEvent = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tbuilder.sql(`LOCK TABLE event`)\n\tbuilder.sql(`\n\t\tALTER TABLE schema_migration\n\t\tADD PRIMARY KEY (id)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE DOMAIN event_data_type AS TEXT\n\t\tCONSTRAINT event_data_type_check CHECK (VALUE = ANY (ARRAY ['create', 'update', 'delete']));\n\t`)\n\tbuilder.sql(`\n\t\tCREATE TABLE event_data (\n\t\t\tid UUID NOT NULL CONSTRAINT event_data_pkey PRIMARY KEY,\n\t\ttype event_data_type NOT NULL,\n\t\ttable_name TEXT NOT NULL,\n\t\trow_ids JSONB NOT NULL,\n\t\tvalues JSONB DEFAULT NULL,\n\t\tcreated_at TIMESTAMP WITH TIME ZONE DEFAULT CLOCK_TIMESTAMP() NOT NULL,\n\t\tschema_id INTEGER NOT NULL REFERENCES schema_migration(id),\n\t\tidentity_id UUID NOT NULL,\n\t\ttransaction_id UUID DEFAULT COALESCE(\n\t\t\t(NULLIF(CURRENT_SETTING('system.transaction_id'::TEXT, TRUE), ''::TEXT))::UUID,\n\t\t\t(SET_CONFIG('system.transaction_id'::TEXT, (\"uuid_generate_v4\"())::TEXT, TRUE))::UUID) NOT NULL\n\t\t)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event_row_id\n\t\tON event_data(row_ids)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event2_table_name\n\t\tON event_data(table_name)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event2_type\n\t\tON event_data(type)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event2_transaction\n\t\tON event_data(transaction_id)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE TABLE stage_transaction (\n\t\t\ttransaction_id UUID NOT NULL,\n\t\t\tstage_id UUID NOT NULL REFERENCES stage(id) ON DELETE CASCADE,\n\t\t\tapplied_at TIMESTAMPTZ NOT NULL,\n\t\t\tPRIMARY KEY (transaction_id, stage_id)\n\t\t)\n\t`)\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\tevents AS (\n\t\t\tSELECT\n\t\t\t\te.*,\n\t\t\t\t(SELECT MAX(id) FROM schema_migration) AS schema_id,\n\t\t\t\t1 AS index,\n\t\t\t\tstage.id AS stage_id\n\t\t\tFROM stage\n\t\t\tJOIN event e ON stage.event_id = e.id\n \t\t\tUNION ALL\n \t\t\tSELECT\n \t\t\t\tevent.*,\n \t\t\t\tCOALESCE(\n \t\t\t\t\tCASE WHEN event.type = 'run_migration' THEN\n\t\t\t\t\t\t(SELECT id FROM schema_migration WHERE version = event.data ->> 'version')\n\t\t\t\t\tEND,\n\t\t\t\t\tevents.schema_id\n\t\t\t\t),\n \t\t\t\tindex + 1,\n \t\t\t\tstage_id\n \t\t\tFROM event\n \t\t\t\tJOIN events\n \t\t\tON events.previous_id = event.id\n \t\t),\n \t\tshifted_events AS (\n \t\t\tSELECT\n \t\t\t\t*,\n \t\t\t\t(\n \t\t\t\t\tcreated_at\n \t\t\t\t\t+ (ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY index DESC ) - 1 ||' us')::INTERVAL\n \t\t\t\t) AS shifted_created_at\n \t\t\tFROM events\n \t\t)\n \t\tINSERT\n \t\tINTO event_data (id, type, table_name, row_ids, values, created_at, schema_id, identity_id, transaction_id)\n \t\tSELECT\n \t\t\tid,\n \t\t\ttype,\n \t\t\tdata ->> 'tableName',\n \t\t\tdata -> 'rowId',\n \t\t\tdata -> 'values',\n \t\t\tshifted_created_at,\n \t\t\tschema_id,\n \t\t\tidentity_id,\n \t\t\ttransaction_id\n \t\tFROM shifted_events\n \t\tWHERE type NOT IN ('init', 'run_migration')\n \t\tON CONFLICT DO NOTHING\n \t`)\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n \t\tevents AS (\n \t\t\tSELECT\n \t\t\t\te.*,\n \t\t\t\t1 AS index,\n \t\t\t\tstage.id AS stage_id\n \t\t\tFROM stage\n \t\t\tJOIN event e ON stage.event_id = e.id\n \t\t\tUNION ALL\n \t\t\tSELECT\n \t\t\t\tevent.*,\n \t\t\t\tindex + 1,\n \t\t\t\tstage_id\n \t\t\tFROM event\n \t\t\tJOIN events ON events.previous_id = event.id\n \t\t),\n \t\ttransaction_times AS (\n \t\t\tSELECT\n \t\t\t\tDISTINCT ON (transaction_id, stage_id)\n \t\t\t\ttransaction_id,\n \t\t\t\tcreated_at,\n \t\t\t\tindex,\n \t\t\t\tstage_id\n \t\t\tFROM events\n \t\t\tORDER BY transaction_id\n \t\t)\n \t\tINSERT\n \t\tINTO stage_transaction (transaction_id, stage_id, applied_at)\n \t\tSELECT transaction_id, stage_id, created_at\n \t\tFROM transaction_times\n\t`)\n\tbuilder.sql(`\n\t\tCREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n\t\t$$\n\t\tDECLARE new_event_type TEXT;\n\t\tDECLARE table_name TEXT;\n\t\tDECLARE values JSONB;\n\t\tDECLARE update_diff JSONB;\n\t\tDECLARE primary_values JSONB;\n\t\tDECLARE old_row JSONB;\n\t\tDECLARE new_row JSONB;\n\t\tBEGIN\n\t\t\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN TO_JSONB(old) ELSE NULL END;\n\t\t\tnew_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN TO_JSONB(new) ELSE NULL END;\n\t\t\tprimary_values := (\n\t\t\t\tSELECT JSONB_AGG(value ORDER BY array_position(TG_ARGV, key))\n\t\t\t\tFROM JSONB_EACH(COALESCE(old_row, new_row))\n\t\t\t\tWHERE key = ANY (TG_ARGV)\n\t\t\t);\n\t\t\ttable_name := tg_table_name;\n\t\t\tCASE TG_OP\n\t\t\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\t\t\tnew_event_type := 'create';\n\t\t\t\t\tvalues := COALESCE(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tSELECT JSONB_OBJECT_AGG(key, value)\n \t\t\t\t\t\t FROM JSONB_EACH(new_row)\n \t\t\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n \t\t\t\t\t\t),\n \t\t\t\t\t\tJSONB_BUILD_OBJECT()\n \t\t\t\t\t);\n\t\t\t\tEND;\n\t\t\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\t\t\tupdate_diff := (\n\t\t\t\t\t\tSELECT JSONB_OBJECT_AGG(COALESCE(n.key, o.key), n.value)\n\t\t\t\t\t\tFROM JSONB_EACH(old_row) o\n \t\t\t\t\t\tFULL OUTER JOIN JSONB_EACH(new_row) n ON n.key = o.key\n\t\t\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t\t\t);\n\t\t\t\t\tIF (SELECT COUNT(*) FROM JSONB_OBJECT_KEYS(update_diff)) = 0 THEN\n\t\t\t\t\t\tRETURN NULL;\n\t\t\t\t\tEND IF;\n\t\t\t\t\tnew_event_type := 'update';\n\t\t\t\t\tvalues := update_diff;\n\t\t\t\tEND;\n\t\t\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\t\t\tnew_event_type := 'delete';\n\t\t\t\tEND;\n\t\t\t\tELSE RAISE\n\t\t\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\t\tEND CASE;\n\n\t\t\tCASE WHEN NULLIF(CURRENT_SETTING('system.schema_id', true), '') IS NULL THEN\n\t\t\t\tPERFORM SET_CONFIG('system.schema_id', (select MAX(\"id\")::TEXT from schema_migration), TRUE);\n\t\t\tELSE\n\t\t\t\t-- do nothing\n\t\t\tEND CASE;\n\n\t\t\tINSERT INTO \"event_data\" (\"id\", \"type\", \"table_name\", \"row_ids\", \"values\", \"created_at\", schema_id, identity_id)\n\t\t\tVALUES (\n\t\t\t\t\"uuid_generate_v4\"(),\n\t\t\t\tnew_event_type,\n\t\t\t\ttable_name,\n\t\t\t\tprimary_values,\n\t\t\t\tvalues,\n\t\t\t\tCLOCK_TIMESTAMP(),\n\t\t\t\tCURRENT_SETTING('system.schema_id')::INT,\n\t\t\t\tCOALESCE(\n\t\t\t\t\tCURRENT_SETTING('tenant.identity_id'::TEXT, TRUE)::UUID,\n \t\t\t\t\t'00000000-0000-0000-0000-000000000000'::UUID)\n \t\t\t\t);\n\t\t\tRETURN NULL;\n\t\tEND;\n\t\t$$ LANGUAGE plpgsql\n\t`)\n\tbuilder.sql(`\n\t\tCREATE OR REPLACE FUNCTION trigger_event_commit() RETURNS TRIGGER AS\n\t\t$$\n\t\tBEGIN\n\t\t\tPERFORM PG_ADVISORY_XACT_LOCK(5218230332970456493); -- well-known random number\n\n\t\t\tCASE WHEN\n\t\t\t\tNULLIF(CURRENT_SETTING('system.transaction_id', true), '') IS NOT NULL\n\t\t\t\tAND NULLIF(CURRENT_SETTING('system.transaction_inserted', true), '') IS NULL\n\t\t\t\tTHEN\n\t\t\t\tINSERT INTO stage_transaction(transaction_id, stage_id, applied_at)\n\t\t\t\tVALUES (\n\t\t\t\t\tCURRENT_SETTING('system.transaction_id')::UUID,\n\t\t\t\t\t(\n\t\t\t\t\t\tSELECT id\n \t\t\t\t\t\tFROM \"stage\"\n \t\t\t\t\t\tWHERE \"slug\" = RIGHT(TG_TABLE_SCHEMA, - LENGTH('stage_'))\n \t\t\t\t ),\n\t\t\t\t\tCLOCK_TIMESTAMP()\n\t\t\t\t)\n\t\t\t\tON CONFLICT DO NOTHING;\n\n\t\t\t\tPERFORM SET_CONFIG('system.transaction_inserted', '1', true);\n\t\t\tELSE\n\t\t\t\t-- do nothing\n\t\t\tEND CASE;\n\n\t\t\tRETURN NULL;\n\t\tEND;\n\t\t$$ LANGUAGE plpgsql\n\t`)\n\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event_statement')\n\t\t\tcreateTrxEvent(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event_statement')\n\t\t\tcreateTrxEvent(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tALTER TABLE stage\n\t\tALTER event_id DROP NOT NULL\n\t`)\n\tbuilder.sql(`\n\t\tALTER TABLE event\n\t\tRENAME TO event_bak\n\t`)\n}\n"],"names":["schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,iBAAiB,CAAC,SAA2B,cAAoB;AAC9D,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EAAA,CACA;AACF;AAEA,eAAA,8BAA+B,SAA2B,MAA0C;AACnG,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AAClD,QAAA,iBAAiB,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAChE,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiDV;AACF,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyEX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BX;AAED,aAAW,SAAS,gBAAgB;AACnC,eAAWA,WAAU,SAAS;AACrB,cAAA,YAAY,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,qBAAqB;AAC5E,qBAAe,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAC1D;AAAA,EACD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AACrB,cAAA,YAAY,EAAE,MAAM,OAAO,WAAW,QAAAA,WAAU,qBAAqB;AAC7E,qBAAe,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAC3D;AAAA,EACD;AACA,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACF;"}
1
+ {"version":3,"file":"2021-05-07-155800-event-log-rework.js","sources":["../../../../../packages/engine-system-api/src/migrations/2021-05-07-155800-event-log-rework.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst createTrxEvent = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\tbuilder.sql(`LOCK TABLE event`)\n\tbuilder.sql(`\n\t\tALTER TABLE schema_migration\n\t\tADD PRIMARY KEY (id)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE DOMAIN event_data_type AS TEXT\n\t\tCONSTRAINT event_data_type_check CHECK (VALUE = ANY (ARRAY ['create', 'update', 'delete']));\n\t`)\n\tbuilder.sql(`\n\t\tCREATE TABLE event_data (\n\t\t\tid UUID NOT NULL CONSTRAINT event_data_pkey PRIMARY KEY,\n\t\ttype event_data_type NOT NULL,\n\t\ttable_name TEXT NOT NULL,\n\t\trow_ids JSONB NOT NULL,\n\t\tvalues JSONB DEFAULT NULL,\n\t\tcreated_at TIMESTAMP WITH TIME ZONE DEFAULT CLOCK_TIMESTAMP() NOT NULL,\n\t\tschema_id INTEGER NOT NULL REFERENCES schema_migration(id),\n\t\tidentity_id UUID NOT NULL,\n\t\ttransaction_id UUID DEFAULT COALESCE(\n\t\t\t(NULLIF(CURRENT_SETTING('system.transaction_id'::TEXT, TRUE), ''::TEXT))::UUID,\n\t\t\t(SET_CONFIG('system.transaction_id'::TEXT, (\"uuid_generate_v4\"())::TEXT, TRUE))::UUID) NOT NULL\n\t\t)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event_row_id\n\t\tON event_data(row_ids)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event2_table_name\n\t\tON event_data(table_name)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event2_type\n\t\tON event_data(type)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE INDEX system_event2_transaction\n\t\tON event_data(transaction_id)\n\t`)\n\tbuilder.sql(`\n\t\tCREATE TABLE stage_transaction (\n\t\t\ttransaction_id UUID NOT NULL,\n\t\t\tstage_id UUID NOT NULL REFERENCES stage(id) ON DELETE CASCADE,\n\t\t\tapplied_at TIMESTAMPTZ NOT NULL,\n\t\t\tPRIMARY KEY (transaction_id, stage_id)\n\t\t)\n\t`)\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n\t\tevents AS (\n\t\t\tSELECT\n\t\t\t\te.*,\n\t\t\t\t(SELECT MAX(id) FROM schema_migration) AS schema_id,\n\t\t\t\t1 AS index,\n\t\t\t\tstage.id AS stage_id\n\t\t\tFROM stage\n\t\t\tJOIN event e ON stage.event_id = e.id\n \t\t\tUNION ALL\n \t\t\tSELECT\n \t\t\t\tevent.*,\n \t\t\t\tCOALESCE(\n \t\t\t\t\tCASE WHEN event.type = 'run_migration' THEN\n\t\t\t\t\t\t(SELECT id FROM schema_migration WHERE version = event.data ->> 'version')\n\t\t\t\t\tEND,\n\t\t\t\t\tevents.schema_id\n\t\t\t\t),\n \t\t\t\tindex + 1,\n \t\t\t\tstage_id\n \t\t\tFROM event\n \t\t\t\tJOIN events\n \t\t\tON events.previous_id = event.id\n \t\t),\n \t\tshifted_events AS (\n \t\t\tSELECT\n \t\t\t\t*,\n \t\t\t\t(\n \t\t\t\t\tcreated_at\n \t\t\t\t\t+ (ROW_NUMBER() OVER (PARTITION BY transaction_id ORDER BY index DESC ) - 1 ||' us')::INTERVAL\n \t\t\t\t) AS shifted_created_at\n \t\t\tFROM events\n \t\t)\n \t\tINSERT\n \t\tINTO event_data (id, type, table_name, row_ids, values, created_at, schema_id, identity_id, transaction_id)\n \t\tSELECT\n \t\t\tid,\n \t\t\ttype,\n \t\t\tdata ->> 'tableName',\n \t\t\tdata -> 'rowId',\n \t\t\tdata -> 'values',\n \t\t\tshifted_created_at,\n \t\t\tschema_id,\n \t\t\tidentity_id,\n \t\t\ttransaction_id\n \t\tFROM shifted_events\n \t\tWHERE type NOT IN ('init', 'run_migration')\n \t\tON CONFLICT DO NOTHING\n \t`)\n\tbuilder.sql(`\n\t\tWITH RECURSIVE\n \t\tevents AS (\n \t\t\tSELECT\n \t\t\t\te.*,\n \t\t\t\t1 AS index,\n \t\t\t\tstage.id AS stage_id\n \t\t\tFROM stage\n \t\t\tJOIN event e ON stage.event_id = e.id\n \t\t\tUNION ALL\n \t\t\tSELECT\n \t\t\t\tevent.*,\n \t\t\t\tindex + 1,\n \t\t\t\tstage_id\n \t\t\tFROM event\n \t\t\tJOIN events ON events.previous_id = event.id\n \t\t),\n \t\ttransaction_times AS (\n \t\t\tSELECT\n \t\t\t\tDISTINCT ON (transaction_id, stage_id)\n \t\t\t\ttransaction_id,\n \t\t\t\tcreated_at,\n \t\t\t\tindex,\n \t\t\t\tstage_id\n \t\t\tFROM events\n \t\t\tORDER BY transaction_id\n \t\t)\n \t\tINSERT\n \t\tINTO stage_transaction (transaction_id, stage_id, applied_at)\n \t\tSELECT transaction_id, stage_id, created_at\n \t\tFROM transaction_times\n\t`)\n\tbuilder.sql(`\n\t\tCREATE OR REPLACE FUNCTION \"trigger_event\"() RETURNS TRIGGER AS\n\t\t$$\n\t\tDECLARE new_event_type TEXT;\n\t\tDECLARE table_name TEXT;\n\t\tDECLARE values JSONB;\n\t\tDECLARE update_diff JSONB;\n\t\tDECLARE primary_values JSONB;\n\t\tDECLARE old_row JSONB;\n\t\tDECLARE new_row JSONB;\n\t\tBEGIN\n\t\t\told_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN TO_JSONB(old) ELSE NULL END;\n\t\t\tnew_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN TO_JSONB(new) ELSE NULL END;\n\t\t\tprimary_values := (\n\t\t\t\tSELECT JSONB_AGG(value ORDER BY array_position(TG_ARGV, key))\n\t\t\t\tFROM JSONB_EACH(COALESCE(old_row, new_row))\n\t\t\t\tWHERE key = ANY (TG_ARGV)\n\t\t\t);\n\t\t\ttable_name := tg_table_name;\n\t\t\tCASE TG_OP\n\t\t\t\tWHEN 'INSERT' THEN BEGIN\n\t\t\t\t\tnew_event_type := 'create';\n\t\t\t\t\tvalues := COALESCE(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tSELECT JSONB_OBJECT_AGG(key, value)\n \t\t\t\t\t\t FROM JSONB_EACH(new_row)\n \t\t\t\t\t\t WHERE NOT (key = ANY (TG_ARGV))\n \t\t\t\t\t\t),\n \t\t\t\t\t\tJSONB_BUILD_OBJECT()\n \t\t\t\t\t);\n\t\t\t\tEND;\n\t\t\t\tWHEN 'UPDATE' THEN BEGIN\n\t\t\t\t\tupdate_diff := (\n\t\t\t\t\t\tSELECT JSONB_OBJECT_AGG(COALESCE(n.key, o.key), n.value)\n\t\t\t\t\t\tFROM JSONB_EACH(old_row) o\n \t\t\t\t\t\tFULL OUTER JOIN JSONB_EACH(new_row) n ON n.key = o.key\n\t\t\t\t\t\tWHERE n.value IS DISTINCT FROM o.value\n\t\t\t\t\t);\n\t\t\t\t\tIF (SELECT COUNT(*) FROM JSONB_OBJECT_KEYS(update_diff)) = 0 THEN\n\t\t\t\t\t\tRETURN NULL;\n\t\t\t\t\tEND IF;\n\t\t\t\t\tnew_event_type := 'update';\n\t\t\t\t\tvalues := update_diff;\n\t\t\t\tEND;\n\t\t\t\tWHEN 'DELETE' THEN BEGIN\n\t\t\t\t\tnew_event_type := 'delete';\n\t\t\t\tEND;\n\t\t\t\tELSE RAISE\n\t\t\t\t\tEXCEPTION 'Unknown TG_OP value %', TG_OP;\n\t\t\tEND CASE;\n\n\t\t\tCASE WHEN NULLIF(CURRENT_SETTING('system.schema_id', true), '') IS NULL THEN\n\t\t\t\tPERFORM SET_CONFIG('system.schema_id', (select MAX(\"id\")::TEXT from schema_migration), TRUE);\n\t\t\tELSE\n\t\t\t\t-- do nothing\n\t\t\tEND CASE;\n\n\t\t\tINSERT INTO \"event_data\" (\"id\", \"type\", \"table_name\", \"row_ids\", \"values\", \"created_at\", schema_id, identity_id)\n\t\t\tVALUES (\n\t\t\t\t\"uuid_generate_v4\"(),\n\t\t\t\tnew_event_type,\n\t\t\t\ttable_name,\n\t\t\t\tprimary_values,\n\t\t\t\tvalues,\n\t\t\t\tCLOCK_TIMESTAMP(),\n\t\t\t\tCURRENT_SETTING('system.schema_id')::INT,\n\t\t\t\tCOALESCE(\n\t\t\t\t\tCURRENT_SETTING('tenant.identity_id'::TEXT, TRUE)::UUID,\n \t\t\t\t\t'00000000-0000-0000-0000-000000000000'::UUID)\n \t\t\t\t);\n\t\t\tRETURN NULL;\n\t\tEND;\n\t\t$$ LANGUAGE plpgsql\n\t`)\n\tbuilder.sql(`\n\t\tCREATE OR REPLACE FUNCTION trigger_event_commit() RETURNS TRIGGER AS\n\t\t$$\n\t\tBEGIN\n\t\t\tPERFORM PG_ADVISORY_XACT_LOCK(5218230332970456493); -- well-known random number\n\n\t\t\tCASE WHEN\n\t\t\t\tNULLIF(CURRENT_SETTING('system.transaction_id', true), '') IS NOT NULL\n\t\t\t\tAND NULLIF(CURRENT_SETTING('system.transaction_inserted', true), '') IS NULL\n\t\t\t\tTHEN\n\t\t\t\tINSERT INTO stage_transaction(transaction_id, stage_id, applied_at)\n\t\t\t\tVALUES (\n\t\t\t\t\tCURRENT_SETTING('system.transaction_id')::UUID,\n\t\t\t\t\t(\n\t\t\t\t\t\tSELECT id\n \t\t\t\t\t\tFROM \"stage\"\n \t\t\t\t\t\tWHERE \"slug\" = RIGHT(TG_TABLE_SCHEMA, - LENGTH('stage_'))\n \t\t\t\t ),\n\t\t\t\t\tCLOCK_TIMESTAMP()\n\t\t\t\t)\n\t\t\t\tON CONFLICT DO NOTHING;\n\n\t\t\t\tPERFORM SET_CONFIG('system.transaction_inserted', '1', true);\n\t\t\tELSE\n\t\t\t\t-- do nothing\n\t\t\tEND CASE;\n\n\t\t\tRETURN NULL;\n\t\tEND;\n\t\t$$ LANGUAGE plpgsql\n\t`)\n\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: table.tableName, schema }, 'log_event_statement')\n\t\t\tcreateTrxEvent(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\tbuilder.dropTrigger({ name: entity.tableName, schema }, 'log_event_statement')\n\t\t\tcreateTrxEvent(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n\tbuilder.sql(`\n\t\tALTER TABLE stage\n\t\tALTER event_id DROP NOT NULL\n\t`)\n\tbuilder.sql(`\n\t\tALTER TABLE event\n\t\tRENAME TO event_bak\n\t`)\n}\n"],"names":["schema"],"mappings":";;;;;;;;;;AAKA,MAAM,iBAAiB,CAAC,SAA2B,cAAoB;AAC9D,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEA,eAAA,8BAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,iBAAiB,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAChE,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAiDV;AACF,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyEX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BX;AAED,aAAW,SAAS,gBAAgB;AACnC,eAAWA,WAAU,SAAS;AACrB,cAAA,YAAY,EAAE,MAAM,MAAM,WAAW,QAAAA,WAAU,qBAAqB;AAC5E,qBAAe,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EAC1D;AAED,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AACrB,cAAA,YAAY,EAAE,MAAM,OAAO,WAAW,QAAAA,WAAU,qBAAqB;AAC7E,qBAAe,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EAC3D;AAED,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACD,UAAQ,IAAI;AAAA;AAAA;AAAA,EAGX;AACF;"}
@@ -9,7 +9,6 @@ require("../schema/dev.graphql.cjs");
9
9
  require("../schema/system.graphql.cjs");
10
10
  require("@contember/schema-utils");
11
11
  require("@contember/logger");
12
- require("../model/migrations/SchemaVersionBuilder.cjs");
13
12
  const recreateTrigger = (builder, tableName) => {
14
13
  builder.dropTrigger(tableName, "log_event_trx", { ifExists: true });
15
14
  builder.dropTrigger(tableName, "log_event_statement", { ifExists: true });
@@ -27,7 +26,7 @@ const recreateTrigger = (builder, tableName) => {
27
26
  });
28
27
  };
29
28
  async function _202105191232000eventlogfixconstraint(builder, args) {
30
- const schema = await args.schemaResolver(args.connection);
29
+ const schema = (await args.schemaResolver(args.connection)).schema;
31
30
  const junctionTables = modelHelpers.getJunctionTables(schema.model);
32
31
  const schemas = args.project.stages.map((it) => `stage_${it.slug}`);
33
32
  for (const table of junctionTables) {
@@ -1 +1 @@
1
- {"version":3,"file":"2021-05-19-1232000-event-log-fix-constraint.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst recreateTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx', { ifExists: true })\n\tbuilder.dropTrigger(tableName, 'log_event_statement', { ifExists: true })\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["getJunctionTables","schema"],"mappings":";;;;;;;;;;;;AAKA,MAAM,kBAAkB,CAAC,SAA2B,cAAoB;AACvE,UAAQ,YAAY,WAAW,iBAAiB,EAAE,UAAU,MAAM;AAClE,UAAQ,YAAY,WAAW,uBAAuB,EAAE,UAAU,MAAM;AAChE,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EAAA,CACA;AACF;AAEA,eAAA,sCAA+B,SAA2B,MAA0C;AACnG,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AAClD,QAAA,iBAAiBA,aAAAA,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAEhE,aAAW,SAAS,gBAAgB;AACnC,eAAWC,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAC3D;AAAA,EACD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAC5D;AAAA,EACD;AACD;;"}
1
+ {"version":3,"file":"2021-05-19-1232000-event-log-fix-constraint.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst recreateTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx', { ifExists: true })\n\tbuilder.dropTrigger(tableName, 'log_event_statement', { ifExists: true })\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["getJunctionTables","schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,kBAAkB,CAAC,SAA2B,cAAoB;AACvE,UAAQ,YAAY,WAAW,iBAAiB,EAAE,UAAU,MAAM;AAClE,UAAQ,YAAY,WAAW,uBAAuB,EAAE,UAAU,MAAM;AAChE,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEA,eAAA,sCAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,iBAAiBA,aAAAA,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAEhE,aAAW,SAAS,gBAAgB;AACnC,eAAWC,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EAC3D;AAED,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EAC5D;AAEF;;"}
@@ -8,7 +8,6 @@ import "../schema/dev.graphql.js";
8
8
  import "../schema/system.graphql.js";
9
9
  import "@contember/schema-utils";
10
10
  import "@contember/logger";
11
- import "../model/migrations/SchemaVersionBuilder.js";
12
11
  const recreateTrigger = (builder, tableName) => {
13
12
  builder.dropTrigger(tableName, "log_event_trx", { ifExists: true });
14
13
  builder.dropTrigger(tableName, "log_event_statement", { ifExists: true });
@@ -26,7 +25,7 @@ const recreateTrigger = (builder, tableName) => {
26
25
  });
27
26
  };
28
27
  async function _202105191232000eventlogfixconstraint(builder, args) {
29
- const schema = await args.schemaResolver(args.connection);
28
+ const schema = (await args.schemaResolver(args.connection)).schema;
30
29
  const junctionTables = getJunctionTables(schema.model);
31
30
  const schemas = args.project.stages.map((it) => `stage_${it.slug}`);
32
31
  for (const table of junctionTables) {
@@ -1 +1 @@
1
- {"version":3,"file":"2021-05-19-1232000-event-log-fix-constraint.js","sources":["../../../../../packages/engine-system-api/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst recreateTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx', { ifExists: true })\n\tbuilder.dropTrigger(tableName, 'log_event_statement', { ifExists: true })\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["schema"],"mappings":";;;;;;;;;;;AAKA,MAAM,kBAAkB,CAAC,SAA2B,cAAoB;AACvE,UAAQ,YAAY,WAAW,iBAAiB,EAAE,UAAU,MAAM;AAClE,UAAQ,YAAY,WAAW,uBAAuB,EAAE,UAAU,MAAM;AAChE,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EAAA,CACA;AACF;AAEA,eAAA,sCAA+B,SAA2B,MAA0C;AACnG,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AAClD,QAAA,iBAAiB,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAEhE,aAAW,SAAS,gBAAgB;AACnC,eAAWA,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAC3D;AAAA,EACD;AACA,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAC5D;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"2021-05-19-1232000-event-log-fix-constraint.js","sources":["../../../../../packages/engine-system-api/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts"],"sourcesContent":["import { MigrationBuilder, Name } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\nimport { getJunctionTables } from '../model'\nimport { MigrationArgs } from '@contember/database-migrations'\n\nconst recreateTrigger = (builder: MigrationBuilder, tableName: Name) => {\n\tbuilder.dropTrigger(tableName, 'log_event_trx', { ifExists: true })\n\tbuilder.dropTrigger(tableName, 'log_event_statement', { ifExists: true })\n\tbuilder.createTrigger(tableName, 'log_event_trx', {\n\t\twhen: 'AFTER',\n\t\toperation: ['INSERT', 'UPDATE', 'DELETE'],\n\t\tlevel: 'ROW',\n\t\tconstraint: true,\n\t\tdeferrable: true,\n\t\tdeferred: true,\n\t\tfunction: {\n\t\t\tschema: 'system',\n\t\t\tname: 'trigger_event_commit',\n\t\t},\n\t})\n}\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst junctionTables = getJunctionTables(schema.model)\n\tconst schemas = args.project.stages.map(it => `stage_${it.slug}`)\n\n\tfor (const table of junctionTables) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: table.tableName, schema })\n\t\t}\n\t}\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const schema of schemas) {\n\t\t\trecreateTrigger(builder, { name: entity.tableName, schema })\n\t\t}\n\t}\n}\n"],"names":["schema"],"mappings":";;;;;;;;;;AAKA,MAAM,kBAAkB,CAAC,SAA2B,cAAoB;AACvE,UAAQ,YAAY,WAAW,iBAAiB,EAAE,UAAU,MAAM;AAClE,UAAQ,YAAY,WAAW,uBAAuB,EAAE,UAAU,MAAM;AAChE,UAAA,cAAc,WAAW,iBAAiB;AAAA,IACjD,MAAM;AAAA,IACN,WAAW,CAAC,UAAU,UAAU,QAAQ;AAAA,IACxC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,MACT,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,EACP,CACA;AACF;AAEA,eAAA,sCAA+B,SAA2B,MAA0C;AACnG,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AACtD,QAAA,iBAAiB,kBAAkB,OAAO,KAAK;AAC/C,QAAA,UAAU,KAAK,QAAQ,OAAO,IAAI,CAAM,OAAA,SAAS,GAAG,IAAI,EAAE;AAEhE,aAAW,SAAS,gBAAgB;AACnC,eAAWA,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,MAAM,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EAC3D;AAED,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAWA,WAAU,SAAS;AAC7B,sBAAgB,SAAS,EAAE,MAAM,OAAO,WAAW,QAAAA,SAAQ;AAAA,IAAA;AAAA,EAC5D;AAEF;"}
@@ -4,7 +4,7 @@ const schemaUtils = require("@contember/schema-utils");
4
4
  const schema = require("@contember/schema");
5
5
  async function _20221003110000tableondelete(builder, args) {
6
6
  var _a;
7
- const schema$1 = await args.schemaResolver(args.connection);
7
+ const schema$1 = (await args.schemaResolver(args.connection)).schema;
8
8
  const stages = (await args.connection.query("SELECT schema FROM stage")).rows;
9
9
  const metadataByStage = {};
10
10
  for (const entity of Object.values(schema$1.model.entities)) {
@@ -1 +1 @@
1
- {"version":3,"file":"2022-10-03-110000-table-on-delete.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2022-10-03-110000-table-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fkNames = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).getNames()\n\t\t\t\tfor (const name of fkNames) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["schema","acceptFieldVisitor","entity","relation","targetEntity","Model","wrapIdentifier"],"mappings":";;;;AAMA,eAAA,6BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAMA,WAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACxD,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAA;AAE1D,aAAW,UAAU,OAAO,OAAOA,SAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAASC,YAAAA,mBAGZD,SAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAE,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MACD;AACM,YAAA,EAAE,cAAc,SAAa,IAAA;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MACD;AACA,UAAI,SAAS,cAAc,aAAaC,OAAAA,MAAM,SAAS,UAAU;AAChE;AAAA,MACD;AACA,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,UAAU,iBAAiB,YAAY,OAAO;AAAA,UACnD,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QAAA,CACvB,EAAE,SAAS;AACZ,mBAAW,QAAQ,SAAS;AAC3B,kBAAQ,IAAI,eAAeC,SAAe,eAAA,MAAM,MAAM,CAAC,IAAIA,SAAe,eAAA,OAAO,SAAS,CAAC,oBAAoBA,SAAe,eAAA,IAAI,CAAC,EAAE;AAAA,QACtI;AAEA,cAAM,WAAY;AAAA,UACjB,CAACD,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAACA,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,QAAA,EACf,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAeC,SAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAAA,eAAe,OAAO,SAAS,CAAC;AAAA,wBACvEA,wBAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvDA,SAAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAe,eAAA,aAAa,SAAS,CAAC,KAAKA,SAAAA,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;;"}
1
+ {"version":3,"file":"2022-10-03-110000-table-on-delete.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2022-10-03-110000-table-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fkNames = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).getNames()\n\t\t\t\tfor (const name of fkNames) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["schema","acceptFieldVisitor","entity","relation","targetEntity","Model","wrapIdentifier"],"mappings":";;;;AAMA,eAAA,6BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAMA,YAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAC;AAE3D,aAAW,UAAU,OAAO,OAAOA,SAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAASC,YAAAA,mBAGZD,SAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAE,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MAAA;AAEK,YAAA,EAAE,cAAc,SAAA,IAAa;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MAAA;AAED,UAAI,SAAS,cAAc,aAAaC,OAAAA,MAAM,SAAS,UAAU;AAChE;AAAA,MAAA;AAED,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,UAAU,iBAAiB,YAAY,OAAO;AAAA,UACnD,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QACvB,CAAA,EAAE,SAAS;AACZ,mBAAW,QAAQ,SAAS;AAC3B,kBAAQ,IAAI,eAAeC,SAAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAAA,eAAe,OAAO,SAAS,CAAC,oBAAoBA,SAAAA,eAAe,IAAI,CAAC,EAAE;AAAA,QAAA;AAGtI,cAAM,WAAY;AAAA,UACjB,CAACD,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAACA,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,QAAA,EACf,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAeC,wBAAe,MAAM,MAAM,CAAC,IAAIA,wBAAe,OAAO,SAAS,CAAC;AAAA,wBACvEA,wBAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvDA,SAAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAe,eAAA,aAAa,SAAS,CAAC,KAAKA,SAAAA,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MAAA;AAAA,IACF;AAAA,EACD;AAEF;;"}
@@ -3,7 +3,7 @@ import { acceptFieldVisitor } from "@contember/schema-utils";
3
3
  import { Model } from "@contember/schema";
4
4
  async function _20221003110000tableondelete(builder, args) {
5
5
  var _a;
6
- const schema = await args.schemaResolver(args.connection);
6
+ const schema = (await args.schemaResolver(args.connection)).schema;
7
7
  const stages = (await args.connection.query("SELECT schema FROM stage")).rows;
8
8
  const metadataByStage = {};
9
9
  for (const entity of Object.values(schema.model.entities)) {
@@ -1 +1 @@
1
- {"version":3,"file":"2022-10-03-110000-table-on-delete.js","sources":["../../../../../packages/engine-system-api/src/migrations/2022-10-03-110000-table-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fkNames = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).getNames()\n\t\t\t\tfor (const name of fkNames) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["entity","relation","targetEntity"],"mappings":";;;AAMA,eAAA,6BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACxD,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAA;AAE1D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAAS,mBAGZ,OAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MACD;AACM,YAAA,EAAE,cAAc,SAAa,IAAA;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MACD;AACA,UAAI,SAAS,cAAc,aAAa,MAAM,SAAS,UAAU;AAChE;AAAA,MACD;AACA,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,UAAU,iBAAiB,YAAY,OAAO;AAAA,UACnD,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QAAA,CACvB,EAAE,SAAS;AACZ,mBAAW,QAAQ,SAAS;AAC3B,kBAAQ,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,IAAI,CAAC,EAAE;AAAA,QACtI;AAEA,cAAM,WAAY;AAAA,UACjB,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,QAAA,EACf,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC;AAAA,wBACvE,eAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvD,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,aAAa,SAAS,CAAC,KAAK,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"2022-10-03-110000-table-on-delete.js","sources":["../../../../../packages/engine-system-api/src/migrations/2022-10-03-110000-table-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (relation.joiningColumn.onDelete === Model.OnDelete.restrict) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fkNames = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).getNames()\n\t\t\t\tfor (const name of fkNames) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["entity","relation","targetEntity"],"mappings":";;;AAMA,eAAA,6BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAC;AAE3D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAAS,mBAGZ,OAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MAAA;AAEK,YAAA,EAAE,cAAc,SAAA,IAAa;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MAAA;AAED,UAAI,SAAS,cAAc,aAAa,MAAM,SAAS,UAAU;AAChE;AAAA,MAAA;AAED,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,UAAU,iBAAiB,YAAY,OAAO;AAAA,UACnD,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QACvB,CAAA,EAAE,SAAS;AACZ,mBAAW,QAAQ,SAAS;AAC3B,kBAAQ,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,IAAI,CAAC,EAAE;AAAA,QAAA;AAGtI,cAAM,WAAY;AAAA,UACjB,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,QAAA,EACf,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC;AAAA,wBACvE,eAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvD,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,aAAa,SAAS,CAAC,KAAK,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MAAA;AAAA,IACF;AAAA,EACD;AAEF;"}
@@ -4,7 +4,7 @@ const schemaUtils = require("@contember/schema-utils");
4
4
  const schema = require("@contember/schema");
5
5
  async function _20230911174000fixondelete(builder, args) {
6
6
  var _a;
7
- const schema$1 = await args.schemaResolver(args.connection);
7
+ const schema$1 = (await args.schemaResolver(args.connection)).schema;
8
8
  const stages = (await args.connection.query("SELECT schema FROM stage")).rows;
9
9
  const metadataByStage = {};
10
10
  for (const entity of Object.values(schema$1.model.entities)) {
@@ -1 +1 @@
1
- {"version":3,"file":"2023-09-11-174000-fix-on-delete.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2023-09-11-174000-fix-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, ForeignKeyDeleteAction, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fks = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).toArray()\n\n\t\t\t\tconst dbConstraintFlag = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: ForeignKeyDeleteAction.setnull,\n\t\t\t\t\t[Model.OnDelete.cascade]: ForeignKeyDeleteAction.cascade,\n\t\t\t\t\t[Model.OnDelete.restrict]: ForeignKeyDeleteAction.restrict,\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tif (fks.every(it => it.deleteAction === dbConstraintFlag)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfor (const fk of fks) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(fk.constraintName)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t\t[Model.OnDelete.restrict]: 'RESTRICT',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["schema","acceptFieldVisitor","entity","relation","targetEntity","Model","ForeignKeyDeleteAction","wrapIdentifier"],"mappings":";;;;AAMA,eAAA,2BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAMA,WAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACxD,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAA;AAE1D,aAAW,UAAU,OAAO,OAAOA,SAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAASC,YAAAA,mBAGZD,SAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAE,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MACD;AACM,YAAA,EAAE,cAAc,SAAa,IAAA;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MACD;AACA,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,MAAM,iBAAiB,YAAY,OAAO;AAAA,UAC/C,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QAAA,CACvB,EAAE,QAAQ;AAEX,cAAM,mBAAoB;AAAA,UACzB,CAACC,aAAM,SAAS,OAAO,GAAGC,SAAuB,uBAAA;AAAA,UACjD,CAACD,aAAM,SAAS,OAAO,GAAGC,SAAuB,uBAAA;AAAA,UACjD,CAACD,aAAM,SAAS,QAAQ,GAAGC,SAAuB,uBAAA;AAAA,QAAA,EACvC,SAAS,cAAc,QAAQ;AAE3C,YAAI,IAAI,MAAM,CAAA,OAAM,GAAG,iBAAiB,gBAAgB,GAAG;AAC1D;AAAA,QACD;AAEA,mBAAW,MAAM,KAAK;AACrB,kBAAQ,IAAI,eAAeC,SAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAAA,eAAe,OAAO,SAAS,CAAC,oBAAoBA,SAAAA,eAAe,GAAG,cAAc,CAAC,EAAE;AAAA,QACnJ;AAEA,cAAM,WAAY;AAAA,UACjB,CAACF,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAACA,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAACA,OAAA,MAAM,SAAS,QAAQ,GAAG;AAAA,QAAA,EAChB,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAeE,SAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAAA,eAAe,OAAO,SAAS,CAAC;AAAA,wBACvEA,wBAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvDA,SAAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAe,eAAA,aAAa,SAAS,CAAC,KAAKA,SAAAA,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;;"}
1
+ {"version":3,"file":"2023-09-11-174000-fix-on-delete.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2023-09-11-174000-fix-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, ForeignKeyDeleteAction, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fks = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).toArray()\n\n\t\t\t\tconst dbConstraintFlag = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: ForeignKeyDeleteAction.setnull,\n\t\t\t\t\t[Model.OnDelete.cascade]: ForeignKeyDeleteAction.cascade,\n\t\t\t\t\t[Model.OnDelete.restrict]: ForeignKeyDeleteAction.restrict,\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tif (fks.every(it => it.deleteAction === dbConstraintFlag)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfor (const fk of fks) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(fk.constraintName)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t\t[Model.OnDelete.restrict]: 'RESTRICT',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["schema","acceptFieldVisitor","entity","relation","targetEntity","Model","ForeignKeyDeleteAction","wrapIdentifier"],"mappings":";;;;AAMA,eAAA,2BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAMA,YAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAC;AAE3D,aAAW,UAAU,OAAO,OAAOA,SAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAASC,YAAAA,mBAGZD,SAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAE,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MAAA;AAEK,YAAA,EAAE,cAAc,SAAA,IAAa;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MAAA;AAED,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,MAAM,iBAAiB,YAAY,OAAO;AAAA,UAC/C,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QACvB,CAAA,EAAE,QAAQ;AAEX,cAAM,mBAAoB;AAAA,UACzB,CAACC,aAAM,SAAS,OAAO,GAAGC,SAAuB,uBAAA;AAAA,UACjD,CAACD,aAAM,SAAS,OAAO,GAAGC,SAAuB,uBAAA;AAAA,UACjD,CAACD,aAAM,SAAS,QAAQ,GAAGC,gCAAuB;AAAA,QAAA,EACvC,SAAS,cAAc,QAAQ;AAE3C,YAAI,IAAI,MAAM,CAAA,OAAM,GAAG,iBAAiB,gBAAgB,GAAG;AAC1D;AAAA,QAAA;AAGD,mBAAW,MAAM,KAAK;AACrB,kBAAQ,IAAI,eAAeC,SAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAA,eAAe,OAAO,SAAS,CAAC,oBAAoBA,SAAA,eAAe,GAAG,cAAc,CAAC,EAAE;AAAA,QAAA;AAGnJ,cAAM,WAAY;AAAA,UACjB,CAACF,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAACA,OAAA,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAACA,OAAA,MAAM,SAAS,QAAQ,GAAG;AAAA,QAAA,EAChB,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAeE,wBAAe,MAAM,MAAM,CAAC,IAAIA,wBAAe,OAAO,SAAS,CAAC;AAAA,wBACvEA,wBAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvDA,SAAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAe,eAAA,aAAa,SAAS,CAAC,KAAKA,SAAAA,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MAAA;AAAA,IACF;AAAA,EACD;AAEF;;"}
@@ -3,7 +3,7 @@ import { acceptFieldVisitor } from "@contember/schema-utils";
3
3
  import { Model } from "@contember/schema";
4
4
  async function _20230911174000fixondelete(builder, args) {
5
5
  var _a;
6
- const schema = await args.schemaResolver(args.connection);
6
+ const schema = (await args.schemaResolver(args.connection)).schema;
7
7
  const stages = (await args.connection.query("SELECT schema FROM stage")).rows;
8
8
  const metadataByStage = {};
9
9
  for (const entity of Object.values(schema.model.entities)) {
@@ -1 +1 @@
1
- {"version":3,"file":"2023-09-11-174000-fix-on-delete.js","sources":["../../../../../packages/engine-system-api/src/migrations/2023-09-11-174000-fix-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, ForeignKeyDeleteAction, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fks = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).toArray()\n\n\t\t\t\tconst dbConstraintFlag = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: ForeignKeyDeleteAction.setnull,\n\t\t\t\t\t[Model.OnDelete.cascade]: ForeignKeyDeleteAction.cascade,\n\t\t\t\t\t[Model.OnDelete.restrict]: ForeignKeyDeleteAction.restrict,\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tif (fks.every(it => it.deleteAction === dbConstraintFlag)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfor (const fk of fks) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(fk.constraintName)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t\t[Model.OnDelete.restrict]: 'RESTRICT',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["entity","relation","targetEntity"],"mappings":";;;AAMA,eAAA,2BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACxD,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAA;AAE1D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAAS,mBAGZ,OAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE;QAC5B;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MACD;AACM,YAAA,EAAE,cAAc,SAAa,IAAA;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MACD;AACA,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,MAAM,iBAAiB,YAAY,OAAO;AAAA,UAC/C,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QAAA,CACvB,EAAE,QAAQ;AAEX,cAAM,mBAAoB;AAAA,UACzB,CAAC,MAAM,SAAS,OAAO,GAAG,uBAAuB;AAAA,UACjD,CAAC,MAAM,SAAS,OAAO,GAAG,uBAAuB;AAAA,UACjD,CAAC,MAAM,SAAS,QAAQ,GAAG,uBAAuB;AAAA,QAAA,EACvC,SAAS,cAAc,QAAQ;AAE3C,YAAI,IAAI,MAAM,CAAA,OAAM,GAAG,iBAAiB,gBAAgB,GAAG;AAC1D;AAAA,QACD;AAEA,mBAAW,MAAM,KAAK;AACrB,kBAAQ,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,GAAG,cAAc,CAAC,EAAE;AAAA,QACnJ;AAEA,cAAM,WAAY;AAAA,UACjB,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAAC,MAAM,SAAS,QAAQ,GAAG;AAAA,QAAA,EAChB,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC;AAAA,wBACvE,eAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvD,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,aAAa,SAAS,CAAC,KAAK,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"2023-09-11-174000-fix-on-delete.js","sources":["../../../../../packages/engine-system-api/src/migrations/2023-09-11-174000-fix-on-delete.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, ForeignKeyDeleteAction, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tconst result = acceptFieldVisitor<null | {\n\t\t\t\trelation: Model.OneHasOneOwningRelation | Model.ManyHasOneRelation\n\t\t\t\ttargetEntity: Model.Entity\n\t\t\t}>(schema.model, entity, field, {\n\t\t\t\tvisitManyHasOne: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneOwning: ({ entity, relation, targetEntity }) => {\n\t\t\t\t\treturn { relation, entity, targetEntity }\n\t\t\t\t},\n\t\t\t\tvisitOneHasOneInverse: () => null,\n\t\t\t\tvisitManyHasManyInverse: () => null,\n\t\t\t\tvisitManyHasManyOwning: () => null,\n\t\t\t\tvisitOneHasMany: () => null,\n\t\t\t\tvisitColumn: () => null,\n\t\t\t})\n\t\t\tif (!result) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst { targetEntity, relation } = result\n\t\t\tif (entity.view || targetEntity.view) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const stage of stages) {\n\t\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\t\tconst fks = databaseMetadata.foreignKeys.filter({\n\t\t\t\t\tfromTable: entity.tableName,\n\t\t\t\t\tfromColumn: relation.joiningColumn.columnName,\n\t\t\t\t\ttoTable: targetEntity.tableName,\n\t\t\t\t\ttoColumn: targetEntity.primaryColumn,\n\t\t\t\t}).toArray()\n\n\t\t\t\tconst dbConstraintFlag = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: ForeignKeyDeleteAction.setnull,\n\t\t\t\t\t[Model.OnDelete.cascade]: ForeignKeyDeleteAction.cascade,\n\t\t\t\t\t[Model.OnDelete.restrict]: ForeignKeyDeleteAction.restrict,\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tif (fks.every(it => it.deleteAction === dbConstraintFlag)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfor (const fk of fks) {\n\t\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(fk.constraintName)}`)\n\t\t\t\t}\n\n\t\t\t\tconst onDelete = ({\n\t\t\t\t\t[Model.OnDelete.setNull]: 'SET NULL',\n\t\t\t\t\t[Model.OnDelete.cascade]: 'CASCADE',\n\t\t\t\t\t[Model.OnDelete.restrict]: 'RESTRICT',\n\t\t\t\t} as const)[relation.joiningColumn.onDelete]\n\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)}\n\t\t\t\t\tADD FOREIGN KEY (${wrapIdentifier(relation.joiningColumn.columnName)}) \n\t\t\t\t\tREFERENCES ${wrapIdentifier(stage.schema)}.${wrapIdentifier(targetEntity.tableName)} (${wrapIdentifier(targetEntity.primaryColumn)}) ON DELETE ${onDelete} DEFERRABLE INITIALLY IMMEDIATE\n\t\t\t\t`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["entity","relation","targetEntity"],"mappings":";;;AAMA,eAAA,2BAA+B,SAA2B,MAA0C;AANpG,MAAA;AAOC,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAC;AAE3D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,eAAW,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;AACjD,YAAM,SAAS,mBAGZ,OAAO,OAAO,QAAQ,OAAO;AAAA,QAC/B,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AACxD,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,sBAAsB,CAAC,EAAE,QAAAF,SAAQ,UAAAC,WAAU,cAAAC,oBAAmB;AAC7D,iBAAO,EAAE,UAAAD,WAAU,QAAAD,SAAQ,cAAAE,cAAa;AAAA,QACzC;AAAA,QACA,uBAAuB,MAAM;AAAA,QAC7B,yBAAyB,MAAM;AAAA,QAC/B,wBAAwB,MAAM;AAAA,QAC9B,iBAAiB,MAAM;AAAA,QACvB,aAAa,MAAM;AAAA,MAAA,CACnB;AACD,UAAI,CAAC,QAAQ;AACZ;AAAA,MAAA;AAEK,YAAA,EAAE,cAAc,SAAA,IAAa;AAC/B,UAAA,OAAO,QAAQ,aAAa,MAAM;AACrC;AAAA,MAAA;AAED,iBAAW,SAAS,QAAQ;AACrB,cAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,cAAA,MAAM,iBAAiB,YAAY,OAAO;AAAA,UAC/C,WAAW,OAAO;AAAA,UAClB,YAAY,SAAS,cAAc;AAAA,UACnC,SAAS,aAAa;AAAA,UACtB,UAAU,aAAa;AAAA,QACvB,CAAA,EAAE,QAAQ;AAEX,cAAM,mBAAoB;AAAA,UACzB,CAAC,MAAM,SAAS,OAAO,GAAG,uBAAuB;AAAA,UACjD,CAAC,MAAM,SAAS,OAAO,GAAG,uBAAuB;AAAA,UACjD,CAAC,MAAM,SAAS,QAAQ,GAAG,uBAAuB;AAAA,QAAA,EACvC,SAAS,cAAc,QAAQ;AAE3C,YAAI,IAAI,MAAM,CAAA,OAAM,GAAG,iBAAiB,gBAAgB,GAAG;AAC1D;AAAA,QAAA;AAGD,mBAAW,MAAM,KAAK;AACrB,kBAAQ,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,GAAG,cAAc,CAAC,EAAE;AAAA,QAAA;AAGnJ,cAAM,WAAY;AAAA,UACjB,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAAC,MAAM,SAAS,OAAO,GAAG;AAAA,UAC1B,CAAC,MAAM,SAAS,QAAQ,GAAG;AAAA,QAAA,EAChB,SAAS,cAAc,QAAQ;AAEnC,gBAAA,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC;AAAA,wBACvE,eAAe,SAAS,cAAc,UAAU,CAAC;AAAA,kBACvD,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,aAAa,SAAS,CAAC,KAAK,eAAe,aAAa,aAAa,CAAC,eAAe,QAAQ;AAAA,KACzJ;AAAA,MAAA;AAAA,IACF;AAAA,EACD;AAEF;"}
@@ -3,7 +3,7 @@ const Database = require("@contember/database");
3
3
  const schemaMigrations = require("@contember/schema-migrations");
4
4
  async function _20231019173000fixunique(builder, args) {
5
5
  var _a;
6
- const schema = await args.schemaResolver(args.connection);
6
+ const schema = (await args.schemaResolver(args.connection)).schema;
7
7
  const stages = (await args.connection.query("SELECT schema FROM stage")).rows;
8
8
  const metadataByStage = {};
9
9
  for (const entity of Object.values(schema.model.entities)) {
@@ -1 +1 @@
1
- {"version":3,"file":"2023-10-19-173000-fix-unique.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2023-10-19-173000-fix-unique.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { getUniqueConstraintColumns } from '@contember/schema-migrations'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tif (entity.view) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst expectedUnique: string[][] = []\n\n\t\tfor (const uniq of entity.unique) {\n\t\t\tconst columns = getUniqueConstraintColumns({\n\t\t\t\tentity,\n\t\t\t\tfields: uniq.fields,\n\t\t\t\tmodel: schema.model,\n\t\t\t})\n\t\t\texpectedUnique.push(columns)\n\t\t}\n\n\n\t\tfor (const stage of stages) {\n\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\tconst existingUniqueConstraints = databaseMetadata.uniqueConstraints.filter({ tableName: entity.tableName }).toArray()\n\t\t\tfor (const constraint of existingUniqueConstraints) {\n\t\t\t\tif (constraint.columnNames.length === 1 || expectedUnique.some(it => stringArrayEquals(it, constraint.columnNames))) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(constraint.constraintName)}`)\n\t\t\t}\n\t\t}\n\t}\n}\nconst stringArrayEquals = (colA: string[], colB: string[]) => {\n\tif (colA.length !== colB.length) {\n\t\treturn false\n\t}\n\tconst a = [...colA].sort()\n\tconst b = [...colB].sort()\n\treturn a.every((it, index) => it === b[index])\n}\n"],"names":["getUniqueConstraintColumns","wrapIdentifier"],"mappings":";;;AAKA,eAAA,yBAA+B,SAA2B,MAA0C;AALpG,MAAA;AAMC,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACxD,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAA;AAE1D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AAEA,UAAM,iBAA6B,CAAA;AAExB,eAAA,QAAQ,OAAO,QAAQ;AACjC,YAAM,UAAUA,iBAAAA,2BAA2B;AAAA,QAC1C;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,OAAO,OAAO;AAAA,MAAA,CACd;AACD,qBAAe,KAAK,OAAO;AAAA,IAC5B;AAGA,eAAW,SAAS,QAAQ;AACrB,YAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,YAAA,4BAA4B,iBAAiB,kBAAkB,OAAO,EAAE,WAAW,OAAO,UAAA,CAAW,EAAE;AAC7G,iBAAW,cAAc,2BAA2B;AACnD,YAAI,WAAW,YAAY,WAAW,KAAK,eAAe,KAAK,CAAM,OAAA,kBAAkB,IAAI,WAAW,WAAW,CAAC,GAAG;AACpH;AAAA,QACD;AACA,gBAAQ,IAAI,eAAeC,SAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAAA,eAAe,OAAO,SAAS,CAAC,oBAAoBA,SAAAA,eAAe,WAAW,cAAc,CAAC,EAAE;AAAA,MAC3J;AAAA,IACD;AAAA,EACD;AACD;AACA,MAAM,oBAAoB,CAAC,MAAgB,SAAmB;AACzD,MAAA,KAAK,WAAW,KAAK,QAAQ;AACzB,WAAA;AAAA,EACR;AACA,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AACzB,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AAClB,SAAA,EAAE,MAAM,CAAC,IAAI,UAAU,OAAO,EAAE,KAAK,CAAC;AAC9C;;"}
1
+ {"version":3,"file":"2023-10-19-173000-fix-unique.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2023-10-19-173000-fix-unique.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { getUniqueConstraintColumns } from '@contember/schema-migrations'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tif (entity.view) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst expectedUnique: string[][] = []\n\n\t\tfor (const uniq of entity.unique) {\n\t\t\tconst columns = getUniqueConstraintColumns({\n\t\t\t\tentity,\n\t\t\t\tfields: uniq.fields,\n\t\t\t\tmodel: schema.model,\n\t\t\t})\n\t\t\texpectedUnique.push(columns)\n\t\t}\n\n\n\t\tfor (const stage of stages) {\n\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\tconst existingUniqueConstraints = databaseMetadata.uniqueConstraints.filter({ tableName: entity.tableName }).toArray()\n\t\t\tfor (const constraint of existingUniqueConstraints) {\n\t\t\t\tif (constraint.columnNames.length === 1 || expectedUnique.some(it => stringArrayEquals(it, constraint.columnNames))) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(constraint.constraintName)}`)\n\t\t\t}\n\t\t}\n\t}\n}\nconst stringArrayEquals = (colA: string[], colB: string[]) => {\n\tif (colA.length !== colB.length) {\n\t\treturn false\n\t}\n\tconst a = [...colA].sort()\n\tconst b = [...colB].sort()\n\treturn a.every((it, index) => it === b[index])\n}\n"],"names":["getUniqueConstraintColumns","wrapIdentifier"],"mappings":";;;AAKA,eAAA,yBAA+B,SAA2B,MAA0C;AALpG,MAAA;AAMC,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAC;AAE3D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAGD,UAAM,iBAA6B,CAAC;AAEzB,eAAA,QAAQ,OAAO,QAAQ;AACjC,YAAM,UAAUA,iBAAAA,2BAA2B;AAAA,QAC1C;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,OAAO,OAAO;AAAA,MAAA,CACd;AACD,qBAAe,KAAK,OAAO;AAAA,IAAA;AAI5B,eAAW,SAAS,QAAQ;AACrB,YAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,YAAA,4BAA4B,iBAAiB,kBAAkB,OAAO,EAAE,WAAW,OAAO,WAAW,EAAE,QAAQ;AACrH,iBAAW,cAAc,2BAA2B;AACnD,YAAI,WAAW,YAAY,WAAW,KAAK,eAAe,KAAK,CAAM,OAAA,kBAAkB,IAAI,WAAW,WAAW,CAAC,GAAG;AACpH;AAAA,QAAA;AAED,gBAAQ,IAAI,eAAeC,SAAA,eAAe,MAAM,MAAM,CAAC,IAAIA,SAAA,eAAe,OAAO,SAAS,CAAC,oBAAoBA,SAAA,eAAe,WAAW,cAAc,CAAC,EAAE;AAAA,MAAA;AAAA,IAC3J;AAAA,EACD;AAEF;AACA,MAAM,oBAAoB,CAAC,MAAgB,SAAmB;AACzD,MAAA,KAAK,WAAW,KAAK,QAAQ;AACzB,WAAA;AAAA,EAAA;AAER,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AACzB,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AAClB,SAAA,EAAE,MAAM,CAAC,IAAI,UAAU,OAAO,EAAE,KAAK,CAAC;AAC9C;;"}
@@ -2,7 +2,7 @@ import { wrapIdentifier } from "@contember/database";
2
2
  import { getUniqueConstraintColumns } from "@contember/schema-migrations";
3
3
  async function _20231019173000fixunique(builder, args) {
4
4
  var _a;
5
- const schema = await args.schemaResolver(args.connection);
5
+ const schema = (await args.schemaResolver(args.connection)).schema;
6
6
  const stages = (await args.connection.query("SELECT schema FROM stage")).rows;
7
7
  const metadataByStage = {};
8
8
  for (const entity of Object.values(schema.model.entities)) {
@@ -1 +1 @@
1
- {"version":3,"file":"2023-10-19-173000-fix-unique.js","sources":["../../../../../packages/engine-system-api/src/migrations/2023-10-19-173000-fix-unique.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { getUniqueConstraintColumns } from '@contember/schema-migrations'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tif (entity.view) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst expectedUnique: string[][] = []\n\n\t\tfor (const uniq of entity.unique) {\n\t\t\tconst columns = getUniqueConstraintColumns({\n\t\t\t\tentity,\n\t\t\t\tfields: uniq.fields,\n\t\t\t\tmodel: schema.model,\n\t\t\t})\n\t\t\texpectedUnique.push(columns)\n\t\t}\n\n\n\t\tfor (const stage of stages) {\n\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\tconst existingUniqueConstraints = databaseMetadata.uniqueConstraints.filter({ tableName: entity.tableName }).toArray()\n\t\t\tfor (const constraint of existingUniqueConstraints) {\n\t\t\t\tif (constraint.columnNames.length === 1 || expectedUnique.some(it => stringArrayEquals(it, constraint.columnNames))) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(constraint.constraintName)}`)\n\t\t\t}\n\t\t}\n\t}\n}\nconst stringArrayEquals = (colA: string[], colB: string[]) => {\n\tif (colA.length !== colB.length) {\n\t\treturn false\n\t}\n\tconst a = [...colA].sort()\n\tconst b = [...colB].sort()\n\treturn a.every((it, index) => it === b[index])\n}\n"],"names":[],"mappings":";;AAKA,eAAA,yBAA+B,SAA2B,MAA0C;AALpG,MAAA;AAMC,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACxD,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAA;AAE1D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AAEA,UAAM,iBAA6B,CAAA;AAExB,eAAA,QAAQ,OAAO,QAAQ;AACjC,YAAM,UAAU,2BAA2B;AAAA,QAC1C;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,OAAO,OAAO;AAAA,MAAA,CACd;AACD,qBAAe,KAAK,OAAO;AAAA,IAC5B;AAGA,eAAW,SAAS,QAAQ;AACrB,YAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,YAAA,4BAA4B,iBAAiB,kBAAkB,OAAO,EAAE,WAAW,OAAO,UAAA,CAAW,EAAE;AAC7G,iBAAW,cAAc,2BAA2B;AACnD,YAAI,WAAW,YAAY,WAAW,KAAK,eAAe,KAAK,CAAM,OAAA,kBAAkB,IAAI,WAAW,WAAW,CAAC,GAAG;AACpH;AAAA,QACD;AACA,gBAAQ,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,WAAW,cAAc,CAAC,EAAE;AAAA,MAC3J;AAAA,IACD;AAAA,EACD;AACD;AACA,MAAM,oBAAoB,CAAC,MAAgB,SAAmB;AACzD,MAAA,KAAK,WAAW,KAAK,QAAQ;AACzB,WAAA;AAAA,EACR;AACA,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AACzB,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AAClB,SAAA,EAAE,MAAM,CAAC,IAAI,UAAU,OAAO,EAAE,KAAK,CAAC;AAC9C;"}
1
+ {"version":3,"file":"2023-10-19-173000-fix-unique.js","sources":["../../../../../packages/engine-system-api/src/migrations/2023-10-19-173000-fix-unique.ts"],"sourcesContent":["import { MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { DatabaseMetadata, wrapIdentifier } from '@contember/database'\nimport { SystemMigrationArgs } from './types'\nimport { getUniqueConstraintColumns } from '@contember/schema-migrations'\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = (await args.schemaResolver(args.connection)).schema\n\tconst stages = (await args.connection.query<{schema: string}>('SELECT schema FROM stage')).rows\n\tconst metadataByStage: Record<string, DatabaseMetadata> = {}\n\n\tfor (const entity of Object.values(schema.model.entities)) {\n\t\tif (entity.view) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst expectedUnique: string[][] = []\n\n\t\tfor (const uniq of entity.unique) {\n\t\t\tconst columns = getUniqueConstraintColumns({\n\t\t\t\tentity,\n\t\t\t\tfields: uniq.fields,\n\t\t\t\tmodel: schema.model,\n\t\t\t})\n\t\t\texpectedUnique.push(columns)\n\t\t}\n\n\n\t\tfor (const stage of stages) {\n\t\t\tconst databaseMetadata = metadataByStage[stage.schema] ??= await args.databaseMetadataResolver(args.connection, stage.schema)\n\n\t\t\tconst existingUniqueConstraints = databaseMetadata.uniqueConstraints.filter({ tableName: entity.tableName }).toArray()\n\t\t\tfor (const constraint of existingUniqueConstraints) {\n\t\t\t\tif (constraint.columnNames.length === 1 || expectedUnique.some(it => stringArrayEquals(it, constraint.columnNames))) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(stage.schema)}.${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(constraint.constraintName)}`)\n\t\t\t}\n\t\t}\n\t}\n}\nconst stringArrayEquals = (colA: string[], colB: string[]) => {\n\tif (colA.length !== colB.length) {\n\t\treturn false\n\t}\n\tconst a = [...colA].sort()\n\tconst b = [...colB].sort()\n\treturn a.every((it, index) => it === b[index])\n}\n"],"names":[],"mappings":";;AAKA,eAAA,yBAA+B,SAA2B,MAA0C;AALpG,MAAA;AAMC,QAAM,UAAU,MAAM,KAAK,eAAe,KAAK,UAAU,GAAG;AAC5D,QAAM,UAAU,MAAM,KAAK,WAAW,MAAwB,0BAA0B,GAAG;AAC3F,QAAM,kBAAoD,CAAC;AAE3D,aAAW,UAAU,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC1D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAGD,UAAM,iBAA6B,CAAC;AAEzB,eAAA,QAAQ,OAAO,QAAQ;AACjC,YAAM,UAAU,2BAA2B;AAAA,QAC1C;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,OAAO,OAAO;AAAA,MAAA,CACd;AACD,qBAAe,KAAK,OAAO;AAAA,IAAA;AAI5B,eAAW,SAAS,QAAQ;AACrB,YAAA,mBAAmB,gBAAgB,KAAA,MAAM,MAAtB,MAAA,gBAAA,EAAA,IAAkC,MAAM,KAAK,yBAAyB,KAAK,YAAY,MAAM,MAAM;AAEtH,YAAA,4BAA4B,iBAAiB,kBAAkB,OAAO,EAAE,WAAW,OAAO,WAAW,EAAE,QAAQ;AACrH,iBAAW,cAAc,2BAA2B;AACnD,YAAI,WAAW,YAAY,WAAW,KAAK,eAAe,KAAK,CAAM,OAAA,kBAAkB,IAAI,WAAW,WAAW,CAAC,GAAG;AACpH;AAAA,QAAA;AAED,gBAAQ,IAAI,eAAe,eAAe,MAAM,MAAM,CAAC,IAAI,eAAe,OAAO,SAAS,CAAC,oBAAoB,eAAe,WAAW,cAAc,CAAC,EAAE;AAAA,MAAA;AAAA,IAC3J;AAAA,EACD;AAEF;AACA,MAAM,oBAAoB,CAAC,MAAgB,SAAmB;AACzD,MAAA,KAAK,WAAW,KAAK,QAAQ;AACzB,WAAA;AAAA,EAAA;AAER,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AACzB,QAAM,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK;AAClB,SAAA,EAAE,MAAM,CAAC,IAAI,UAAU,OAAO,EAAE,KAAK,CAAC;AAC9C;"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ const sql = `
3
+ CREATE TYPE SCHEMA_SINGLE AS ENUM ('single');
4
+ CREATE TABLE "schema"
5
+ (
6
+ id SCHEMA_SINGLE NOT NULL PRIMARY KEY DEFAULT 'single',
7
+ schema JSON NOT NULL,
8
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
9
+ checksum CHAR(32) NOT NULL,
10
+ version VARCHAR(20) NOT NULL,
11
+ migration_id INT NOT NULL REFERENCES schema_migration(id) DEFERRABLE INITIALLY DEFERRED
12
+ );
13
+ `;
14
+ async function _20240628153000schema(builder) {
15
+ builder.sql(sql);
16
+ }
17
+ module.exports = _20240628153000schema;
18
+ //# sourceMappingURL=2024-06-28-153000-schema.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-06-28-153000-schema.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2024-06-28-153000-schema.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\n// deliberately using \"JSON\" instead of \"JSONB\" to preserve the order of keys\n\nconst sql = `\nCREATE TYPE SCHEMA_SINGLE AS ENUM ('single');\nCREATE TABLE \"schema\"\n(\n\tid SCHEMA_SINGLE NOT NULL PRIMARY KEY DEFAULT 'single',\n\tschema JSON NOT NULL,\n\tupdated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n\tchecksum CHAR(32) NOT NULL,\n\tversion VARCHAR(20) NOT NULL,\n\tmigration_id INT NOT NULL REFERENCES schema_migration(id) DEFERRABLE INITIALLY DEFERRED\n);\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAIA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaZ,eAAA,sBAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -0,0 +1,19 @@
1
+ const sql = `
2
+ CREATE TYPE SCHEMA_SINGLE AS ENUM ('single');
3
+ CREATE TABLE "schema"
4
+ (
5
+ id SCHEMA_SINGLE NOT NULL PRIMARY KEY DEFAULT 'single',
6
+ schema JSON NOT NULL,
7
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
8
+ checksum CHAR(32) NOT NULL,
9
+ version VARCHAR(20) NOT NULL,
10
+ migration_id INT NOT NULL REFERENCES schema_migration(id) DEFERRABLE INITIALLY DEFERRED
11
+ );
12
+ `;
13
+ async function _20240628153000schema(builder) {
14
+ builder.sql(sql);
15
+ }
16
+ export {
17
+ _20240628153000schema as default
18
+ };
19
+ //# sourceMappingURL=2024-06-28-153000-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-06-28-153000-schema.js","sources":["../../../../../packages/engine-system-api/src/migrations/2024-06-28-153000-schema.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\n// deliberately using \"JSON\" instead of \"JSONB\" to preserve the order of keys\n\nconst sql = `\nCREATE TYPE SCHEMA_SINGLE AS ENUM ('single');\nCREATE TABLE \"schema\"\n(\n\tid SCHEMA_SINGLE NOT NULL PRIMARY KEY DEFAULT 'single',\n\tschema JSON NOT NULL,\n\tupdated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),\n\tchecksum CHAR(32) NOT NULL,\n\tversion VARCHAR(20) NOT NULL,\n\tmigration_id INT NOT NULL REFERENCES schema_migration(id) DEFERRABLE INITIALLY DEFERRED\n);\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAIA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaZ,eAAA,sBAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ const databaseMigrations = require("@contember/database-migrations");
3
+ async function _20240628153001schemainit(builder, args) {
4
+ const schema = await args.schemaResolver(args.connection);
5
+ if (!schema.meta.id) {
6
+ return;
7
+ }
8
+ builder.sql(`INSERT INTO schema(schema, checksum, version, migration_id)
9
+ VALUES(${databaseMigrations.escapeValue(JSON.stringify(schema.schema))}, ${databaseMigrations.escapeValue(schema.meta.checksum)}, ${databaseMigrations.escapeValue(schema.meta.version)}, ${schema.meta.id})`);
10
+ }
11
+ module.exports = _20240628153001schemainit;
12
+ //# sourceMappingURL=2024-06-28-153001-schema-init.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-06-28-153001-schema-init.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2024-06-28-153001-schema-init.ts"],"sourcesContent":["import { escapeValue, MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\n\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tif (!schema.meta.id) {\n\t\treturn\n\t}\n\tbuilder.sql(`INSERT INTO schema(schema, checksum, version, migration_id) \nVALUES(${escapeValue(JSON.stringify(schema.schema))}, ${escapeValue(schema.meta.checksum)}, ${escapeValue(schema.meta.version)}, ${schema.meta.id})`)\n}\n"],"names":["escapeValue"],"mappings":";;AAIA,eAAA,0BAA+B,SAA2B,MAA0C;AACnG,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACpD,MAAA,CAAC,OAAO,KAAK,IAAI;AACpB;AAAA,EAAA;AAED,UAAQ,IAAI;AAAA,SACJA,+BAAY,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC,KAAKA,mBAAAA,YAAY,OAAO,KAAK,QAAQ,CAAC,KAAKA,mBAAY,YAAA,OAAO,KAAK,OAAO,CAAC,KAAK,OAAO,KAAK,EAAE,GAAG;AACpJ;;"}
@@ -0,0 +1,13 @@
1
+ import { escapeValue } from "@contember/database-migrations";
2
+ async function _20240628153001schemainit(builder, args) {
3
+ const schema = await args.schemaResolver(args.connection);
4
+ if (!schema.meta.id) {
5
+ return;
6
+ }
7
+ builder.sql(`INSERT INTO schema(schema, checksum, version, migration_id)
8
+ VALUES(${escapeValue(JSON.stringify(schema.schema))}, ${escapeValue(schema.meta.checksum)}, ${escapeValue(schema.meta.version)}, ${schema.meta.id})`);
9
+ }
10
+ export {
11
+ _20240628153001schemainit as default
12
+ };
13
+ //# sourceMappingURL=2024-06-28-153001-schema-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-06-28-153001-schema-init.js","sources":["../../../../../packages/engine-system-api/src/migrations/2024-06-28-153001-schema-init.ts"],"sourcesContent":["import { escapeValue, MigrationArgs, MigrationBuilder } from '@contember/database-migrations'\nimport { SystemMigrationArgs } from './types'\n\n\nexport default async function (builder: MigrationBuilder, args: MigrationArgs<SystemMigrationArgs>) {\n\tconst schema = await args.schemaResolver(args.connection)\n\tif (!schema.meta.id) {\n\t\treturn\n\t}\n\tbuilder.sql(`INSERT INTO schema(schema, checksum, version, migration_id) \nVALUES(${escapeValue(JSON.stringify(schema.schema))}, ${escapeValue(schema.meta.checksum)}, ${escapeValue(schema.meta.version)}, ${schema.meta.id})`)\n}\n"],"names":[],"mappings":";AAIA,eAAA,0BAA+B,SAA2B,MAA0C;AACnG,QAAM,SAAS,MAAM,KAAK,eAAe,KAAK,UAAU;AACpD,MAAA,CAAC,OAAO,KAAK,IAAI;AACpB;AAAA,EAAA;AAED,UAAQ,IAAI;AAAA,SACJ,YAAY,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC,KAAK,YAAY,OAAO,KAAK,QAAQ,CAAC,KAAK,YAAY,OAAO,KAAK,OAAO,CAAC,KAAK,OAAO,KAAK,EAAE,GAAG;AACpJ;"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ const sql = `
3
+ CREATE INDEX IF NOT EXISTS system_event_data_row_id_0 ON event_data USING btree ((row_ids -> 0));
4
+ CREATE INDEX IF NOT EXISTS system_event_data_row_id_1 ON event_data USING btree ((row_ids -> 1));
5
+ DROP INDEX IF EXISTS system_event_row_id;
6
+ `;
7
+ async function _20240729150000eventdataindex(builder) {
8
+ builder.sql(sql);
9
+ }
10
+ module.exports = _20240729150000eventdataindex;
11
+ //# sourceMappingURL=2024-07-29-150000-event-data-index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-07-29-150000-event-data-index.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/2024-07-29-150000-event-data-index.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE INDEX IF NOT EXISTS system_event_data_row_id_0 ON event_data USING btree ((row_ids -> 0));\nCREATE INDEX IF NOT EXISTS system_event_data_row_id_1 ON event_data USING btree ((row_ids -> 1));\nDROP INDEX IF EXISTS system_event_row_id;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":";AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMZ,eAAA,8BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;;"}
@@ -0,0 +1,12 @@
1
+ const sql = `
2
+ CREATE INDEX IF NOT EXISTS system_event_data_row_id_0 ON event_data USING btree ((row_ids -> 0));
3
+ CREATE INDEX IF NOT EXISTS system_event_data_row_id_1 ON event_data USING btree ((row_ids -> 1));
4
+ DROP INDEX IF EXISTS system_event_row_id;
5
+ `;
6
+ async function _20240729150000eventdataindex(builder) {
7
+ builder.sql(sql);
8
+ }
9
+ export {
10
+ _20240729150000eventdataindex as default
11
+ };
12
+ //# sourceMappingURL=2024-07-29-150000-event-data-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2024-07-29-150000-event-data-index.js","sources":["../../../../../packages/engine-system-api/src/migrations/2024-07-29-150000-event-data-index.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\n\nconst sql = `\nCREATE INDEX IF NOT EXISTS system_event_data_row_id_0 ON event_data USING btree ((row_ids -> 0));\nCREATE INDEX IF NOT EXISTS system_event_data_row_id_1 ON event_data USING btree ((row_ids -> 1));\nDROP INDEX IF EXISTS system_event_row_id;\n`\n\nexport default async function (builder: MigrationBuilder) {\n\tbuilder.sql(sql)\n}\n"],"names":[],"mappings":"AAEA,MAAM,MAAM;AAAA;AAAA;AAAA;AAAA;AAMZ,eAAA,8BAA+B,SAA2B;AACzD,UAAQ,IAAI,GAAG;AAChB;"}
@@ -23,6 +23,9 @@ const _20230911174000FixOnDelete = require("./2023-09-11-174000-fix-on-delete.cj
23
23
  const _20231019173000FixUnique = require("./2023-10-19-173000-fix-unique.cjs");
24
24
  const _20231024140000SchemaNullableChecksum = require("./2023-10-24-140000-schema-nullable-checksum.cjs");
25
25
  const _20240628150000MigrationsDropSequence = require("./2024-06-28-150000-migrations-drop-sequence.cjs");
26
+ const _20240628153000Schema = require("./2024-06-28-153000-schema.cjs");
27
+ const _20240628153001SchemaInit = require("./2024-06-28-153001-schema-init.cjs");
28
+ const _20240729150000EventDataIndex = require("./2024-07-29-150000-event-data-index.cjs");
26
29
  const snapshot = require("./snapshot.cjs");
27
30
  const Database = require("@contember/database");
28
31
  const migrations = {
@@ -47,13 +50,16 @@ const migrations = {
47
50
  "2023-09-11-174000-fix-on-delete": _20230911174000FixOnDelete,
48
51
  "2023-10-19-173000-fix-unique": _20231019173000FixUnique,
49
52
  "2023-10-24-140000-schema-nullable-checksum": _20231024140000SchemaNullableChecksum,
50
- "2024-06-28-150000-migrations-drop-sequence": _20240628150000MigrationsDropSequence
53
+ "2024-06-28-150000-migrations-drop-sequence": _20240628150000MigrationsDropSequence,
54
+ "2024-06-28-153000-schema": _20240628153000Schema,
55
+ "2024-06-28-153001-schema-init": _20240628153001SchemaInit,
56
+ "2024-07-29-150000-event-data-index": _20240729150000EventDataIndex
51
57
  };
52
58
  class SystemMigrationsRunner {
53
- constructor(databaseContextFactory, project, schemaVersionBuilder, migrationGroups, databaseMetadataResolver) {
59
+ constructor(databaseContextFactory, project, schemaProvider, migrationGroups, databaseMetadataResolver) {
54
60
  this.databaseContextFactory = databaseContextFactory;
55
61
  this.project = project;
56
- this.schemaVersionBuilder = schemaVersionBuilder;
62
+ this.schemaProvider = schemaProvider;
57
63
  this.migrationGroups = migrationGroups;
58
64
  this.databaseMetadataResolver = databaseMetadataResolver;
59
65
  }
@@ -61,9 +67,9 @@ class SystemMigrationsRunner {
61
67
  await Database.createDatabaseIfNotExists(this.project.db, (message) => typeof message === "string" ? logger.warn(message) : logger.error(message));
62
68
  const singleConnection = Database.Connection.createSingle(this.project.db, (err) => logger.error(err));
63
69
  await singleConnection.scope(async (connection) => {
64
- const schemaResolver = (connection2) => {
70
+ const schemaResolver = async (connection2) => {
65
71
  const dbContextMigrations = this.databaseContextFactory.create(connection2);
66
- return this.schemaVersionBuilder.buildSchema(dbContextMigrations);
72
+ return await this.schemaProvider.buildSchemaFromMigrations(dbContextMigrations);
67
73
  };
68
74
  const migrationResolver = new databaseMigrations.GroupMigrationsResolver(
69
75
  new databaseMigrations.SnapshotMigrationResolver(snapshot, migrations),
@@ -1 +1 @@
1
- {"version":3,"file":"runner.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/runner.ts"],"sourcesContent":["import {\n\tGroupMigrationsResolver,\n\tMigrationGroup,\n\tMigrationsRunner as DbMigrationsRunner,\n\tSnapshotMigrationResolver,\n} from '@contember/database-migrations'\nimport _20180804102200init from './2018-08-04-102200-init'\nimport _20180805130501triggereventfunction from './2018-08-05-130501-trigger-event-function'\nimport _20190114143432eventtrxid from './2019-01-14-143432-event-trx-id'\nimport _20190204154500eventrebase from './2019-02-04-154500-event-rebase'\nimport _20190318104147eventrunmigrationstruct from './2019-03-18-104147-event-run-migration-struct'\nimport _20190729103000triggereventfunctionfix from './2019-07-29-103000-trigger-event-function-fix'\nimport _20191128100000missingsettingfallback from './2019-11-28-100000-missing-setting-fallback'\nimport _20200327130000projectmigrations from './2020-03-27-130000-project-migrations'\nimport _20200506150000composedprimary from './2020-05-06-150000-composed-primary'\nimport _20200601103000eventtriggerperf from './2020-06-01-103000-event-trigger-perf'\nimport _20210323110000timestampfix from './2021-03-23-110000-timestamp-fix'\nimport _20210507155800eventlogrework from './2021-05-07-155800-event-log-rework'\nimport _202105191232000eventlogfixconstraint from './2021-05-19-1232000-event-log-fix-constraint'\nimport _20211221155500eventsup from './2021-12-21-155500-events-up'\nimport _20220208132600fnsearchpath from './2022-02-08-132600-fn-search-path'\nimport _20220208140500dropdeadcode from './2022-02-08-140500-drop-deadcode'\nimport _20220208144400dynamicstageschema from './2022-02-08-144400-dynamic-stage-schema'\nimport _20221003110000tableondelete from './2022-10-03-110000-table-on-delete'\nimport _20230911174000fixondelete from './2023-09-11-174000-fix-on-delete'\nimport _20231019173000fixunique from './2023-10-19-173000-fix-unique'\nimport _20231024140000schemanullablechecksum from './2023-10-24-140000-schema-nullable-checksum'\nimport _20240628150000migrationsdropsequence from './2024-06-28-150000-migrations-drop-sequence'\nimport snapshot from './snapshot'\n\nimport { Connection, createDatabaseIfNotExists, DatabaseConfig, DatabaseMetadataResolver } from '@contember/database'\nimport { DatabaseContextFactory, SchemaVersionBuilder } from '../model'\nimport { ProjectConfig } from '../types'\nimport { Logger } from '@contember/logger'\n\nconst migrations = {\n\t'2018-08-04-102200-init': _20180804102200init,\n\t'2018-08-05-130501-trigger-event-function': _20180805130501triggereventfunction,\n\t'2019-01-14-143432-event-trx-id': _20190114143432eventtrxid,\n\t'2019-02-04-154500-event-rebase': _20190204154500eventrebase,\n\t'2019-03-18-104147-event-run-migration-struct': _20190318104147eventrunmigrationstruct,\n\t'2019-07-29-103000-trigger-event-function-fix': _20190729103000triggereventfunctionfix,\n\t'2019-11-28-100000-missing-setting-fallback': _20191128100000missingsettingfallback,\n\t'2020-03-27-130000-project-migrations': _20200327130000projectmigrations,\n\t'2020-05-06-150000-composed-primary': _20200506150000composedprimary,\n\t'2020-06-01-103000-event-trigger-perf': _20200601103000eventtriggerperf,\n\t'2021-03-23-110000-timestamp-fix': _20210323110000timestampfix,\n\t'2021-05-07-155800-event-log-rework': _20210507155800eventlogrework,\n\t'2021-05-19-1232000-event-log-fix-constraint': _202105191232000eventlogfixconstraint,\n\t'2021-12-21-155500-events-up': _20211221155500eventsup,\n\t'2022-02-08-132600-fn-search-path': _20220208132600fnsearchpath,\n\t'2022-02-08-140500-drop-deadcode': _20220208140500dropdeadcode,\n\t'2022-02-08-144400-dynamic-stage-schema': _20220208144400dynamicstageschema,\n\t'2022-10-03-110000-table-on-delete': _20221003110000tableondelete,\n\t'2023-09-11-174000-fix-on-delete': _20230911174000fixondelete,\n\t'2023-10-19-173000-fix-unique': _20231019173000fixunique,\n\t'2023-10-24-140000-schema-nullable-checksum': _20231024140000schemanullablechecksum,\n\t'2024-06-28-150000-migrations-drop-sequence': _20240628150000migrationsdropsequence,\n}\n\n\nexport class SystemMigrationsRunner {\n\tconstructor(\n\t\tprivate readonly databaseContextFactory: DatabaseContextFactory,\n\t\tprivate readonly project: ProjectConfig & { db: DatabaseConfig },\n\t\tprivate readonly schemaVersionBuilder: SchemaVersionBuilder,\n\t\tprivate readonly migrationGroups: Record<string, MigrationGroup<unknown>>,\n\t\tprivate readonly databaseMetadataResolver: DatabaseMetadataResolver,\n\t) {\n\t}\n\tasync run(logger: Logger) {\n\t\tawait createDatabaseIfNotExists(this.project.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message))\n\t\tconst singleConnection = Connection.createSingle(this.project.db, err => logger.error(err))\n\t\tawait singleConnection.scope(async connection => {\n\t\t\tconst schemaResolver = (connection: Connection.ConnectionLike) => {\n\t\t\t\tconst dbContextMigrations = this.databaseContextFactory.create(connection)\n\t\t\t\treturn this.schemaVersionBuilder.buildSchema(dbContextMigrations)\n\t\t\t}\n\t\t\tconst migrationResolver = new GroupMigrationsResolver(\n\t\t\t\tnew SnapshotMigrationResolver(snapshot, migrations),\n\t\t\t\tObject.fromEntries(Object.entries(this.migrationGroups).map(\n\t\t\t\t\t([group, it]) => [\n\t\t\t\t\t\tgroup,\n\t\t\t\t\t\tnew SnapshotMigrationResolver(\n\t\t\t\t\t\t\tit.snapshot,\n\t\t\t\t\t\t\tit.migrations,\n\t\t\t\t\t\t\tgroup.replace(/[^-_\\w]+/g, '-'),\n\t\t\t\t\t\t\tmigrations,\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t)\n\t\t\tconst migrationsRunner = new DbMigrationsRunner(connection, this.project.systemSchema, migrationResolver)\n\t\t\tawait migrationsRunner.migrate(message => logger.warn(message), {\n\t\t\t\tproject: this.project,\n\t\t\t\tschemaResolver,\n\t\t\t\tdatabaseMetadataResolver: (connection: Connection.ConnectionLike, schema: string) => {\n\t\t\t\t\tconst dbContextMigrations = this.databaseContextFactory.create(connection)\n\t\t\t\t\treturn this.databaseMetadataResolver.resolveMetadata(dbContextMigrations.client, schema)\n\t\t\t\t},\n\n\t\t\t})\n\t\t})\n\t\tawait singleConnection.end()\n\t}\n}\n"],"names":["_20180804102200init","_20180805130501triggereventfunction","_20190114143432eventtrxid","_20190204154500eventrebase","_20190318104147eventrunmigrationstruct","_20190729103000triggereventfunctionfix","_20191128100000missingsettingfallback","_20200327130000projectmigrations","_20200506150000composedprimary","_20200601103000eventtriggerperf","_20210323110000timestampfix","_20210507155800eventlogrework","_202105191232000eventlogfixconstraint","_20211221155500eventsup","_20220208132600fnsearchpath","_20220208140500dropdeadcode","_20220208144400dynamicstageschema","_20221003110000tableondelete","_20230911174000fixondelete","_20231019173000fixunique","_20231024140000schemanullablechecksum","_20240628150000migrationsdropsequence","createDatabaseIfNotExists","Connection","connection","GroupMigrationsResolver","SnapshotMigrationResolver","DbMigrationsRunner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,MAAM,aAAa;AAAA,EAClB,0BAA0BA;AAAAA,EAC1B,4CAA4CC;AAAAA,EAC5C,kCAAkCC;AAAAA,EAClC,kCAAkCC;AAAAA,EAClC,gDAAgDC;AAAAA,EAChD,gDAAgDC;AAAAA,EAChD,8CAA8CC;AAAAA,EAC9C,wCAAwCC;AAAAA,EACxC,sCAAsCC;AAAAA,EACtC,wCAAwCC;AAAAA,EACxC,mCAAmCC;AAAAA,EACnC,sCAAsCC;AAAAA,EACtC,+CAA+CC;AAAAA,EAC/C,+BAA+BC;AAAAA,EAC/B,oCAAoCC;AAAAA,EACpC,mCAAmCC;AAAAA,EACnC,0CAA0CC;AAAAA,EAC1C,qCAAqCC;AAAAA,EACrC,mCAAmCC;AAAAA,EACnC,gCAAgCC;AAAAA,EAChC,8CAA8CC;AAAAA,EAC9C,8CAA8CC;AAC/C;AAGO,MAAM,uBAAuB;AAAA,EACnC,YACkB,wBACA,SACA,sBACA,iBACA,0BAChB;AALgB,SAAA,yBAAA;AACA,SAAA,UAAA;AACA,SAAA,uBAAA;AACA,SAAA,kBAAA;AACA,SAAA,2BAAA;AAAA,EAElB;AAAA,EACA,MAAM,IAAI,QAAgB;AACzB,UAAMC,SAAAA,0BAA0B,KAAK,QAAQ,IAAI,aAAW,OAAO,YAAY,WAAW,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC;AAChI,UAAA,mBAAmBC,SAAAA,WAAW,aAAa,KAAK,QAAQ,IAAI,CAAO,QAAA,OAAO,MAAM,GAAG,CAAC;AACpF,UAAA,iBAAiB,MAAM,OAAM,eAAc;AAC1C,YAAA,iBAAiB,CAACC,gBAA0C;AACjE,cAAM,sBAAsB,KAAK,uBAAuB,OAAOA,WAAU;AAClE,eAAA,KAAK,qBAAqB,YAAY,mBAAmB;AAAA,MAAA;AAEjE,YAAM,oBAAoB,IAAIC,mBAAA;AAAA,QAC7B,IAAIC,mBAA0B,0BAAA,UAAU,UAAU;AAAA,QAClD,OAAO;AAAA,UAAY,OAAO,QAAQ,KAAK,eAAe,EAAE;AAAA,YACvD,CAAC,CAAC,OAAO,EAAE,MAAM;AAAA,cAChB;AAAA,cACA,IAAIA,mBAAA;AAAA,gBACH,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,MAAM,QAAQ,aAAa,GAAG;AAAA,gBAC9B;AAAA,cACD;AAAA,YACD;AAAA,UAAC;AAAA,QACF;AAAA,MAAA;AAED,YAAM,mBAAmB,IAAIC,mBAAAA,iBAAmB,YAAY,KAAK,QAAQ,cAAc,iBAAiB;AACxG,YAAM,iBAAiB,QAAQ,CAAA,YAAW,OAAO,KAAK,OAAO,GAAG;AAAA,QAC/D,SAAS,KAAK;AAAA,QACd;AAAA,QACA,0BAA0B,CAACH,aAAuC,WAAmB;AACpF,gBAAM,sBAAsB,KAAK,uBAAuB,OAAOA,WAAU;AACzE,iBAAO,KAAK,yBAAyB,gBAAgB,oBAAoB,QAAQ,MAAM;AAAA,QACxF;AAAA,MAAA,CAEA;AAAA,IAAA,CACD;AACD,UAAM,iBAAiB;EACxB;AACD;;"}
1
+ {"version":3,"file":"runner.cjs","sources":["../../../../../packages/engine-system-api/src/migrations/runner.ts"],"sourcesContent":["import {\n\tGroupMigrationsResolver,\n\tMigrationGroup,\n\tMigrationsRunner as DbMigrationsRunner,\n\tSnapshotMigrationResolver,\n} from '@contember/database-migrations'\nimport _20180804102200init from './2018-08-04-102200-init'\nimport _20180805130501triggereventfunction from './2018-08-05-130501-trigger-event-function'\nimport _20190114143432eventtrxid from './2019-01-14-143432-event-trx-id'\nimport _20190204154500eventrebase from './2019-02-04-154500-event-rebase'\nimport _20190318104147eventrunmigrationstruct from './2019-03-18-104147-event-run-migration-struct'\nimport _20190729103000triggereventfunctionfix from './2019-07-29-103000-trigger-event-function-fix'\nimport _20191128100000missingsettingfallback from './2019-11-28-100000-missing-setting-fallback'\nimport _20200327130000projectmigrations from './2020-03-27-130000-project-migrations'\nimport _20200506150000composedprimary from './2020-05-06-150000-composed-primary'\nimport _20200601103000eventtriggerperf from './2020-06-01-103000-event-trigger-perf'\nimport _20210323110000timestampfix from './2021-03-23-110000-timestamp-fix'\nimport _20210507155800eventlogrework from './2021-05-07-155800-event-log-rework'\nimport _202105191232000eventlogfixconstraint from './2021-05-19-1232000-event-log-fix-constraint'\nimport _20211221155500eventsup from './2021-12-21-155500-events-up'\nimport _20220208132600fnsearchpath from './2022-02-08-132600-fn-search-path'\nimport _20220208140500dropdeadcode from './2022-02-08-140500-drop-deadcode'\nimport _20220208144400dynamicstageschema from './2022-02-08-144400-dynamic-stage-schema'\nimport _20221003110000tableondelete from './2022-10-03-110000-table-on-delete'\nimport _20230911174000fixondelete from './2023-09-11-174000-fix-on-delete'\nimport _20231019173000fixunique from './2023-10-19-173000-fix-unique'\nimport _20231024140000schemanullablechecksum from './2023-10-24-140000-schema-nullable-checksum'\nimport _20240628150000migrationsdropsequence from './2024-06-28-150000-migrations-drop-sequence'\nimport _20240628153000schema from './2024-06-28-153000-schema'\nimport _20240628153001schemainit from './2024-06-28-153001-schema-init'\nimport _20240729150000eventdataindex from './2024-07-29-150000-event-data-index'\nimport snapshot from './snapshot'\n\nimport { Connection, createDatabaseIfNotExists, DatabaseConfig, DatabaseMetadataResolver } from '@contember/database'\nimport { DatabaseContextFactory, SchemaProvider } from '../model'\nimport { ProjectConfig } from '../types'\nimport { Logger } from '@contember/logger'\n\nconst migrations = {\n\t'2018-08-04-102200-init': _20180804102200init,\n\t'2018-08-05-130501-trigger-event-function': _20180805130501triggereventfunction,\n\t'2019-01-14-143432-event-trx-id': _20190114143432eventtrxid,\n\t'2019-02-04-154500-event-rebase': _20190204154500eventrebase,\n\t'2019-03-18-104147-event-run-migration-struct': _20190318104147eventrunmigrationstruct,\n\t'2019-07-29-103000-trigger-event-function-fix': _20190729103000triggereventfunctionfix,\n\t'2019-11-28-100000-missing-setting-fallback': _20191128100000missingsettingfallback,\n\t'2020-03-27-130000-project-migrations': _20200327130000projectmigrations,\n\t'2020-05-06-150000-composed-primary': _20200506150000composedprimary,\n\t'2020-06-01-103000-event-trigger-perf': _20200601103000eventtriggerperf,\n\t'2021-03-23-110000-timestamp-fix': _20210323110000timestampfix,\n\t'2021-05-07-155800-event-log-rework': _20210507155800eventlogrework,\n\t'2021-05-19-1232000-event-log-fix-constraint': _202105191232000eventlogfixconstraint,\n\t'2021-12-21-155500-events-up': _20211221155500eventsup,\n\t'2022-02-08-132600-fn-search-path': _20220208132600fnsearchpath,\n\t'2022-02-08-140500-drop-deadcode': _20220208140500dropdeadcode,\n\t'2022-02-08-144400-dynamic-stage-schema': _20220208144400dynamicstageschema,\n\t'2022-10-03-110000-table-on-delete': _20221003110000tableondelete,\n\t'2023-09-11-174000-fix-on-delete': _20230911174000fixondelete,\n\t'2023-10-19-173000-fix-unique': _20231019173000fixunique,\n\t'2023-10-24-140000-schema-nullable-checksum': _20231024140000schemanullablechecksum,\n\t'2024-06-28-150000-migrations-drop-sequence': _20240628150000migrationsdropsequence,\n\t'2024-06-28-153000-schema': _20240628153000schema,\n\t'2024-06-28-153001-schema-init': _20240628153001schemainit,\n\t'2024-07-29-150000-event-data-index': _20240729150000eventdataindex,\n}\n\n\nexport class SystemMigrationsRunner {\n\tconstructor(\n\t\tprivate readonly databaseContextFactory: DatabaseContextFactory,\n\t\tprivate readonly project: ProjectConfig & { db: DatabaseConfig },\n\t\tprivate readonly schemaProvider: SchemaProvider,\n\t\tprivate readonly migrationGroups: Record<string, MigrationGroup<unknown>>,\n\t\tprivate readonly databaseMetadataResolver: DatabaseMetadataResolver,\n\t) {\n\t}\n\tasync run(logger: Logger) {\n\t\tawait createDatabaseIfNotExists(this.project.db, message => typeof message === 'string' ? logger.warn(message) : logger.error(message))\n\t\tconst singleConnection = Connection.createSingle(this.project.db, err => logger.error(err))\n\t\tawait singleConnection.scope(async connection => {\n\t\t\tconst schemaResolver = async (connection: Connection.ConnectionLike) => {\n\t\t\t\tconst dbContextMigrations = this.databaseContextFactory.create(connection)\n\t\t\t\treturn await this.schemaProvider.buildSchemaFromMigrations(dbContextMigrations)\n\t\t\t}\n\t\t\tconst migrationResolver = new GroupMigrationsResolver(\n\t\t\t\tnew SnapshotMigrationResolver(snapshot, migrations),\n\t\t\t\tObject.fromEntries(Object.entries(this.migrationGroups).map(\n\t\t\t\t\t([group, it]) => [\n\t\t\t\t\t\tgroup,\n\t\t\t\t\t\tnew SnapshotMigrationResolver(\n\t\t\t\t\t\t\tit.snapshot,\n\t\t\t\t\t\t\tit.migrations,\n\t\t\t\t\t\t\tgroup.replace(/[^-_\\w]+/g, '-'),\n\t\t\t\t\t\t\tmigrations,\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t)\n\t\t\tconst migrationsRunner = new DbMigrationsRunner(connection, this.project.systemSchema, migrationResolver)\n\t\t\tawait migrationsRunner.migrate(message => logger.warn(message), {\n\t\t\t\tproject: this.project,\n\t\t\t\tschemaResolver,\n\t\t\t\tdatabaseMetadataResolver: (connection: Connection.ConnectionLike, schema: string) => {\n\t\t\t\t\tconst dbContextMigrations = this.databaseContextFactory.create(connection)\n\t\t\t\t\treturn this.databaseMetadataResolver.resolveMetadata(dbContextMigrations.client, schema)\n\t\t\t\t},\n\n\t\t\t})\n\t\t})\n\t\tawait singleConnection.end()\n\t}\n}\n"],"names":["_20180804102200init","_20180805130501triggereventfunction","_20190114143432eventtrxid","_20190204154500eventrebase","_20190318104147eventrunmigrationstruct","_20190729103000triggereventfunctionfix","_20191128100000missingsettingfallback","_20200327130000projectmigrations","_20200506150000composedprimary","_20200601103000eventtriggerperf","_20210323110000timestampfix","_20210507155800eventlogrework","_202105191232000eventlogfixconstraint","_20211221155500eventsup","_20220208132600fnsearchpath","_20220208140500dropdeadcode","_20220208144400dynamicstageschema","_20221003110000tableondelete","_20230911174000fixondelete","_20231019173000fixunique","_20231024140000schemanullablechecksum","_20240628150000migrationsdropsequence","_20240628153000schema","_20240628153001schemainit","_20240729150000eventdataindex","createDatabaseIfNotExists","Connection","connection","GroupMigrationsResolver","SnapshotMigrationResolver","DbMigrationsRunner"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,MAAM,aAAa;AAAA,EAClB,0BAA0BA;AAAAA,EAC1B,4CAA4CC;AAAAA,EAC5C,kCAAkCC;AAAAA,EAClC,kCAAkCC;AAAAA,EAClC,gDAAgDC;AAAAA,EAChD,gDAAgDC;AAAAA,EAChD,8CAA8CC;AAAAA,EAC9C,wCAAwCC;AAAAA,EACxC,sCAAsCC;AAAAA,EACtC,wCAAwCC;AAAAA,EACxC,mCAAmCC;AAAAA,EACnC,sCAAsCC;AAAAA,EACtC,+CAA+CC;AAAAA,EAC/C,+BAA+BC;AAAAA,EAC/B,oCAAoCC;AAAAA,EACpC,mCAAmCC;AAAAA,EACnC,0CAA0CC;AAAAA,EAC1C,qCAAqCC;AAAAA,EACrC,mCAAmCC;AAAAA,EACnC,gCAAgCC;AAAAA,EAChC,8CAA8CC;AAAAA,EAC9C,8CAA8CC;AAAAA,EAC9C,4BAA4BC;AAAAA,EAC5B,iCAAiCC;AAAAA,EACjC,sCAAsCC;AACvC;AAGO,MAAM,uBAAuB;AAAA,EACnC,YACkB,wBACA,SACA,gBACA,iBACA,0BAChB;AALgB,SAAA,yBAAA;AACA,SAAA,UAAA;AACA,SAAA,iBAAA;AACA,SAAA,kBAAA;AACA,SAAA,2BAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,IAAI,QAAgB;AACzB,UAAMC,SAAAA,0BAA0B,KAAK,QAAQ,IAAI,aAAW,OAAO,YAAY,WAAW,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,OAAO,CAAC;AAChI,UAAA,mBAAmBC,SAAAA,WAAW,aAAa,KAAK,QAAQ,IAAI,CAAO,QAAA,OAAO,MAAM,GAAG,CAAC;AACpF,UAAA,iBAAiB,MAAM,OAAM,eAAc;AAC1C,YAAA,iBAAiB,OAAOC,gBAA0C;AACvE,cAAM,sBAAsB,KAAK,uBAAuB,OAAOA,WAAU;AACzE,eAAO,MAAM,KAAK,eAAe,0BAA0B,mBAAmB;AAAA,MAC/E;AACA,YAAM,oBAAoB,IAAIC,mBAAA;AAAA,QAC7B,IAAIC,mBAA0B,0BAAA,UAAU,UAAU;AAAA,QAClD,OAAO;AAAA,UAAY,OAAO,QAAQ,KAAK,eAAe,EAAE;AAAA,YACvD,CAAC,CAAC,OAAO,EAAE,MAAM;AAAA,cAChB;AAAA,cACA,IAAIA,mBAAA;AAAA,gBACH,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,MAAM,QAAQ,aAAa,GAAG;AAAA,gBAC9B;AAAA,cAAA;AAAA,YACD;AAAA,UACD;AAAA,QAAC;AAAA,MAEH;AACA,YAAM,mBAAmB,IAAIC,oCAAmB,YAAY,KAAK,QAAQ,cAAc,iBAAiB;AACxG,YAAM,iBAAiB,QAAQ,CAAA,YAAW,OAAO,KAAK,OAAO,GAAG;AAAA,QAC/D,SAAS,KAAK;AAAA,QACd;AAAA,QACA,0BAA0B,CAACH,aAAuC,WAAmB;AACpF,gBAAM,sBAAsB,KAAK,uBAAuB,OAAOA,WAAU;AACzE,iBAAO,KAAK,yBAAyB,gBAAgB,oBAAoB,QAAQ,MAAM;AAAA,QAAA;AAAA,MACxF,CAEA;AAAA,IAAA,CACD;AACD,UAAM,iBAAiB,IAAI;AAAA,EAAA;AAE7B;;"}