@contember/engine-system-api 2.0.0-alpha.12 → 2.0.0-alpha.14

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 (394) 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 +4 -3
  6. package/dist/development/src/SystemContainer.js.map +1 -1
  7. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs +1 -2
  8. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  9. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js +1 -2
  10. package/dist/development/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  11. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs +1 -2
  12. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  13. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js +1 -2
  14. package/dist/development/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  15. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs +1 -2
  16. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  17. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js +1 -2
  18. package/dist/development/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  19. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs +1 -2
  20. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  21. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -2
  22. package/dist/development/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  23. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs +1 -1
  24. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  25. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js +1 -1
  26. package/dist/development/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  27. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs +1 -1
  28. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  29. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js +1 -1
  30. package/dist/development/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  31. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs +1 -1
  32. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  33. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js +1 -1
  34. package/dist/development/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  35. package/dist/development/src/migrations/2024-06-28-153000-schema.cjs +18 -0
  36. package/dist/development/src/migrations/2024-06-28-153000-schema.cjs.map +1 -0
  37. package/dist/development/src/migrations/2024-06-28-153000-schema.js +19 -0
  38. package/dist/development/src/migrations/2024-06-28-153000-schema.js.map +1 -0
  39. package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs +12 -0
  40. package/dist/development/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -0
  41. package/dist/development/src/migrations/2024-06-28-153001-schema-init.js +13 -0
  42. package/dist/development/src/migrations/2024-06-28-153001-schema-init.js.map +1 -0
  43. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs +11 -0
  44. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -0
  45. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js +12 -0
  46. package/dist/development/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -0
  47. package/dist/development/src/migrations/runner.cjs +11 -5
  48. package/dist/development/src/migrations/runner.cjs.map +1 -1
  49. package/dist/development/src/migrations/runner.js +11 -5
  50. package/dist/development/src/migrations/runner.js.map +1 -1
  51. package/dist/development/src/migrations/snapshot.cjs +17 -1
  52. package/dist/development/src/migrations/snapshot.cjs.map +1 -1
  53. package/dist/development/src/migrations/snapshot.js +17 -1
  54. package/dist/development/src/migrations/snapshot.js.map +1 -1
  55. package/dist/development/src/model/authorization/AuthorizationActions.cjs +1 -0
  56. package/dist/development/src/model/authorization/AuthorizationActions.cjs.map +1 -1
  57. package/dist/development/src/model/authorization/AuthorizationActions.js +1 -0
  58. package/dist/development/src/model/authorization/AuthorizationActions.js.map +1 -1
  59. package/dist/development/src/model/authorization/PermissionsFactory.cjs +1 -0
  60. package/dist/development/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  61. package/dist/development/src/model/authorization/PermissionsFactory.js +1 -0
  62. package/dist/development/src/model/authorization/PermissionsFactory.js.map +1 -1
  63. package/dist/development/src/model/authorization/StagePermissionsFactory.cjs +4 -5
  64. package/dist/development/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  65. package/dist/development/src/model/authorization/StagePermissionsFactory.js +4 -5
  66. package/dist/development/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  67. package/dist/development/src/model/authorization/StageScope.cjs +2 -2
  68. package/dist/development/src/model/authorization/StageScope.cjs.map +1 -1
  69. package/dist/development/src/model/authorization/StageScope.js +2 -2
  70. package/dist/development/src/model/authorization/StageScope.js.map +1 -1
  71. package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs +28 -0
  72. package/dist/development/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -0
  73. package/dist/development/src/model/commands/schema/SaveSchemaCommand.js +28 -0
  74. package/dist/development/src/model/commands/schema/SaveSchemaCommand.js.map +1 -0
  75. package/dist/development/src/model/migrations/MigrationAlterer.cjs +10 -0
  76. package/dist/development/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  77. package/dist/development/src/model/migrations/MigrationAlterer.js +10 -0
  78. package/dist/development/src/model/migrations/MigrationAlterer.js.map +1 -1
  79. package/dist/development/src/model/migrations/ProjectMigrator.cjs +29 -10
  80. package/dist/development/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  81. package/dist/development/src/model/migrations/ProjectMigrator.js +30 -11
  82. package/dist/development/src/model/migrations/ProjectMigrator.js.map +1 -1
  83. package/dist/development/src/model/migrations/SchemaProvider.cjs +58 -0
  84. package/dist/development/src/model/migrations/SchemaProvider.cjs.map +1 -0
  85. package/dist/development/src/model/migrations/SchemaProvider.js +58 -0
  86. package/dist/development/src/model/migrations/SchemaProvider.js.map +1 -0
  87. package/dist/development/src/model/queries/events/EventsQuery.cjs +10 -14
  88. package/dist/development/src/model/queries/events/EventsQuery.cjs.map +1 -1
  89. package/dist/development/src/model/queries/events/EventsQuery.js +10 -14
  90. package/dist/development/src/model/queries/events/EventsQuery.js.map +1 -1
  91. package/dist/development/src/model/queries/schema/SchemaQuery.cjs +34 -0
  92. package/dist/development/src/model/queries/schema/SchemaQuery.cjs.map +1 -0
  93. package/dist/development/src/model/queries/schema/SchemaQuery.js +34 -0
  94. package/dist/development/src/model/queries/schema/SchemaQuery.js.map +1 -0
  95. package/dist/development/src/resolvers/ResolverFactory.cjs +6 -2
  96. package/dist/development/src/resolvers/ResolverFactory.cjs.map +1 -1
  97. package/dist/development/src/resolvers/ResolverFactory.js +7 -3
  98. package/dist/development/src/resolvers/ResolverFactory.js.map +1 -1
  99. package/dist/development/src/resolvers/SystemResolverContext.cjs +5 -5
  100. package/dist/development/src/resolvers/SystemResolverContext.cjs.map +1 -1
  101. package/dist/development/src/resolvers/SystemResolverContext.js +5 -5
  102. package/dist/development/src/resolvers/SystemResolverContext.js.map +1 -1
  103. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs +0 -1
  104. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  105. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js +0 -1
  106. package/dist/development/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  107. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs +0 -1
  108. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  109. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js +0 -1
  110. package/dist/development/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  111. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
  112. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  113. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
  114. package/dist/development/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  115. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs +0 -1
  116. package/dist/development/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  117. package/dist/development/src/resolvers/query/EventsQueryResolver.js +0 -1
  118. package/dist/development/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  119. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs +0 -1
  120. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  121. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js +0 -1
  122. package/dist/development/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  123. package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs +23 -0
  124. package/dist/development/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -0
  125. package/dist/development/src/resolvers/query/SchemaQueryResolver.js +23 -0
  126. package/dist/development/src/resolvers/query/SchemaQueryResolver.js.map +1 -0
  127. package/dist/development/src/resolvers/query/StagesQueryResolver.cjs +0 -1
  128. package/dist/development/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  129. package/dist/development/src/resolvers/query/StagesQueryResolver.js +0 -1
  130. package/dist/development/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  131. package/dist/development/src/resolvers/types/OldValuesHelpers.cjs +0 -1
  132. package/dist/development/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  133. package/dist/development/src/resolvers/types/OldValuesHelpers.js +0 -1
  134. package/dist/development/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  135. package/dist/development/src/schema/system.graphql.cjs +3 -1
  136. package/dist/development/src/schema/system.graphql.cjs.map +1 -1
  137. package/dist/development/src/schema/system.graphql.js +3 -1
  138. package/dist/development/src/schema/system.graphql.js.map +1 -1
  139. package/dist/development/src/schema/types.cjs.map +1 -1
  140. package/dist/development/src/schema/types.js.map +1 -1
  141. package/dist/production/index.cjs +2 -2
  142. package/dist/production/index.js +2 -2
  143. package/dist/production/src/SystemContainer.cjs +4 -3
  144. package/dist/production/src/SystemContainer.cjs.map +1 -1
  145. package/dist/production/src/SystemContainer.js +4 -3
  146. package/dist/production/src/SystemContainer.js.map +1 -1
  147. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs +1 -2
  148. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.cjs.map +1 -1
  149. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js +1 -2
  150. package/dist/production/src/migrations/2020-05-06-150000-composed-primary.js.map +1 -1
  151. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs +1 -2
  152. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.cjs.map +1 -1
  153. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js +1 -2
  154. package/dist/production/src/migrations/2020-06-01-103000-event-trigger-perf.js.map +1 -1
  155. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs +1 -2
  156. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.cjs.map +1 -1
  157. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js +1 -2
  158. package/dist/production/src/migrations/2021-05-07-155800-event-log-rework.js.map +1 -1
  159. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs +1 -2
  160. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.cjs.map +1 -1
  161. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js +1 -2
  162. package/dist/production/src/migrations/2021-05-19-1232000-event-log-fix-constraint.js.map +1 -1
  163. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs +1 -1
  164. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.cjs.map +1 -1
  165. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js +1 -1
  166. package/dist/production/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -1
  167. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs +1 -1
  168. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.cjs.map +1 -1
  169. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js +1 -1
  170. package/dist/production/src/migrations/2023-09-11-174000-fix-on-delete.js.map +1 -1
  171. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs +1 -1
  172. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.cjs.map +1 -1
  173. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js +1 -1
  174. package/dist/production/src/migrations/2023-10-19-173000-fix-unique.js.map +1 -1
  175. package/dist/production/src/migrations/2024-06-28-153000-schema.cjs +18 -0
  176. package/dist/production/src/migrations/2024-06-28-153000-schema.cjs.map +1 -0
  177. package/dist/production/src/migrations/2024-06-28-153000-schema.js +19 -0
  178. package/dist/production/src/migrations/2024-06-28-153000-schema.js.map +1 -0
  179. package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs +12 -0
  180. package/dist/production/src/migrations/2024-06-28-153001-schema-init.cjs.map +1 -0
  181. package/dist/production/src/migrations/2024-06-28-153001-schema-init.js +13 -0
  182. package/dist/production/src/migrations/2024-06-28-153001-schema-init.js.map +1 -0
  183. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs +11 -0
  184. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.cjs.map +1 -0
  185. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js +12 -0
  186. package/dist/production/src/migrations/2024-07-29-150000-event-data-index.js.map +1 -0
  187. package/dist/production/src/migrations/runner.cjs +11 -5
  188. package/dist/production/src/migrations/runner.cjs.map +1 -1
  189. package/dist/production/src/migrations/runner.js +11 -5
  190. package/dist/production/src/migrations/runner.js.map +1 -1
  191. package/dist/production/src/migrations/snapshot.cjs +17 -1
  192. package/dist/production/src/migrations/snapshot.cjs.map +1 -1
  193. package/dist/production/src/migrations/snapshot.js +17 -1
  194. package/dist/production/src/migrations/snapshot.js.map +1 -1
  195. package/dist/production/src/model/authorization/AuthorizationActions.cjs +1 -0
  196. package/dist/production/src/model/authorization/AuthorizationActions.cjs.map +1 -1
  197. package/dist/production/src/model/authorization/AuthorizationActions.js +1 -0
  198. package/dist/production/src/model/authorization/AuthorizationActions.js.map +1 -1
  199. package/dist/production/src/model/authorization/PermissionsFactory.cjs +1 -0
  200. package/dist/production/src/model/authorization/PermissionsFactory.cjs.map +1 -1
  201. package/dist/production/src/model/authorization/PermissionsFactory.js +1 -0
  202. package/dist/production/src/model/authorization/PermissionsFactory.js.map +1 -1
  203. package/dist/production/src/model/authorization/StagePermissionsFactory.cjs +4 -5
  204. package/dist/production/src/model/authorization/StagePermissionsFactory.cjs.map +1 -1
  205. package/dist/production/src/model/authorization/StagePermissionsFactory.js +4 -5
  206. package/dist/production/src/model/authorization/StagePermissionsFactory.js.map +1 -1
  207. package/dist/production/src/model/authorization/StageScope.cjs +2 -2
  208. package/dist/production/src/model/authorization/StageScope.cjs.map +1 -1
  209. package/dist/production/src/model/authorization/StageScope.js +2 -2
  210. package/dist/production/src/model/authorization/StageScope.js.map +1 -1
  211. package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs +28 -0
  212. package/dist/production/src/model/commands/schema/SaveSchemaCommand.cjs.map +1 -0
  213. package/dist/production/src/model/commands/schema/SaveSchemaCommand.js +28 -0
  214. package/dist/production/src/model/commands/schema/SaveSchemaCommand.js.map +1 -0
  215. package/dist/production/src/model/migrations/MigrationAlterer.cjs +10 -0
  216. package/dist/production/src/model/migrations/MigrationAlterer.cjs.map +1 -1
  217. package/dist/production/src/model/migrations/MigrationAlterer.js +10 -0
  218. package/dist/production/src/model/migrations/MigrationAlterer.js.map +1 -1
  219. package/dist/production/src/model/migrations/ProjectMigrator.cjs +29 -10
  220. package/dist/production/src/model/migrations/ProjectMigrator.cjs.map +1 -1
  221. package/dist/production/src/model/migrations/ProjectMigrator.js +30 -11
  222. package/dist/production/src/model/migrations/ProjectMigrator.js.map +1 -1
  223. package/dist/production/src/model/migrations/SchemaProvider.cjs +58 -0
  224. package/dist/production/src/model/migrations/SchemaProvider.cjs.map +1 -0
  225. package/dist/production/src/model/migrations/SchemaProvider.js +58 -0
  226. package/dist/production/src/model/migrations/SchemaProvider.js.map +1 -0
  227. package/dist/production/src/model/queries/events/EventsQuery.cjs +10 -14
  228. package/dist/production/src/model/queries/events/EventsQuery.cjs.map +1 -1
  229. package/dist/production/src/model/queries/events/EventsQuery.js +10 -14
  230. package/dist/production/src/model/queries/events/EventsQuery.js.map +1 -1
  231. package/dist/production/src/model/queries/schema/SchemaQuery.cjs +34 -0
  232. package/dist/production/src/model/queries/schema/SchemaQuery.cjs.map +1 -0
  233. package/dist/production/src/model/queries/schema/SchemaQuery.js +34 -0
  234. package/dist/production/src/model/queries/schema/SchemaQuery.js.map +1 -0
  235. package/dist/production/src/resolvers/ResolverFactory.cjs +6 -2
  236. package/dist/production/src/resolvers/ResolverFactory.cjs.map +1 -1
  237. package/dist/production/src/resolvers/ResolverFactory.js +7 -3
  238. package/dist/production/src/resolvers/ResolverFactory.js.map +1 -1
  239. package/dist/production/src/resolvers/SystemResolverContext.cjs +5 -5
  240. package/dist/production/src/resolvers/SystemResolverContext.cjs.map +1 -1
  241. package/dist/production/src/resolvers/SystemResolverContext.js +5 -5
  242. package/dist/production/src/resolvers/SystemResolverContext.js.map +1 -1
  243. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs +0 -1
  244. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.cjs.map +1 -1
  245. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js +0 -1
  246. package/dist/production/src/resolvers/mutation/MigrateMutationResolver.js.map +1 -1
  247. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs +0 -1
  248. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.cjs.map +1 -1
  249. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js +0 -1
  250. package/dist/production/src/resolvers/mutation/MigrationAlterMutationResolver.js.map +1 -1
  251. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs +1 -1
  252. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.cjs.map +1 -1
  253. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js +1 -1
  254. package/dist/production/src/resolvers/mutation/TruncateMutationResolver.js.map +1 -1
  255. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs +0 -1
  256. package/dist/production/src/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  257. package/dist/production/src/resolvers/query/EventsQueryResolver.js +0 -1
  258. package/dist/production/src/resolvers/query/EventsQueryResolver.js.map +1 -1
  259. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs +0 -1
  260. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.cjs.map +1 -1
  261. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js +0 -1
  262. package/dist/production/src/resolvers/query/ExecutedMigrationsQueryResolver.js.map +1 -1
  263. package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs +23 -0
  264. package/dist/production/src/resolvers/query/SchemaQueryResolver.cjs.map +1 -0
  265. package/dist/production/src/resolvers/query/SchemaQueryResolver.js +23 -0
  266. package/dist/production/src/resolvers/query/SchemaQueryResolver.js.map +1 -0
  267. package/dist/production/src/resolvers/query/StagesQueryResolver.cjs +0 -1
  268. package/dist/production/src/resolvers/query/StagesQueryResolver.cjs.map +1 -1
  269. package/dist/production/src/resolvers/query/StagesQueryResolver.js +0 -1
  270. package/dist/production/src/resolvers/query/StagesQueryResolver.js.map +1 -1
  271. package/dist/production/src/resolvers/types/OldValuesHelpers.cjs +0 -1
  272. package/dist/production/src/resolvers/types/OldValuesHelpers.cjs.map +1 -1
  273. package/dist/production/src/resolvers/types/OldValuesHelpers.js +0 -1
  274. package/dist/production/src/resolvers/types/OldValuesHelpers.js.map +1 -1
  275. package/dist/production/src/schema/system.graphql.cjs +3 -1
  276. package/dist/production/src/schema/system.graphql.cjs.map +1 -1
  277. package/dist/production/src/schema/system.graphql.js +3 -1
  278. package/dist/production/src/schema/system.graphql.js.map +1 -1
  279. package/dist/production/src/schema/types.cjs.map +1 -1
  280. package/dist/production/src/schema/types.js.map +1 -1
  281. package/dist/tests/cases/unit/eventsQuery.test.d.ts +2 -0
  282. package/dist/tests/cases/unit/eventsQuery.test.d.ts.map +1 -0
  283. package/dist/tests/src/uuid.d.ts +3 -0
  284. package/dist/tests/src/uuid.d.ts.map +1 -0
  285. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  286. package/dist/types/SystemContainer.d.ts +7 -3
  287. package/dist/types/SystemContainer.d.ts.map +1 -1
  288. package/dist/types/index.d.ts +1 -1
  289. package/dist/types/index.d.ts.map +1 -1
  290. package/dist/types/migrations/2024-06-28-153000-schema.d.ts +3 -0
  291. package/dist/types/migrations/2024-06-28-153000-schema.d.ts.map +1 -0
  292. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts +4 -0
  293. package/dist/types/migrations/2024-06-28-153001-schema-init.d.ts.map +1 -0
  294. package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts +3 -0
  295. package/dist/types/migrations/2024-07-29-150000-event-data-index.d.ts.map +1 -0
  296. package/dist/types/migrations/runner.d.ts +3 -3
  297. package/dist/types/migrations/runner.d.ts.map +1 -1
  298. package/dist/types/migrations/snapshot.d.ts.map +1 -1
  299. package/dist/types/migrations/types.d.ts +2 -2
  300. package/dist/types/migrations/types.d.ts.map +1 -1
  301. package/dist/types/model/SchemaGetter.d.ts +6 -0
  302. package/dist/types/model/SchemaGetter.d.ts.map +1 -0
  303. package/dist/types/model/authorization/AuthorizationActions.d.ts +5 -0
  304. package/dist/types/model/authorization/AuthorizationActions.d.ts.map +1 -1
  305. package/dist/types/model/authorization/PermissionsFactory.d.ts.map +1 -1
  306. package/dist/types/model/authorization/StagePermissionsFactory.d.ts +4 -4
  307. package/dist/types/model/authorization/StagePermissionsFactory.d.ts.map +1 -1
  308. package/dist/types/model/authorization/StageScope.d.ts.map +1 -1
  309. package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts +8 -0
  310. package/dist/types/model/commands/schema/SaveSchemaCommand.d.ts.map +1 -0
  311. package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts +3 -2
  312. package/dist/types/model/dependencies/content/ContentQueryExecutor.d.ts.map +1 -1
  313. package/dist/types/model/migrations/MigrationAlterer.d.ts +4 -0
  314. package/dist/types/model/migrations/MigrationAlterer.d.ts.map +1 -1
  315. package/dist/types/model/migrations/ProjectMigrator.d.ts +3 -3
  316. package/dist/types/model/migrations/ProjectMigrator.d.ts.map +1 -1
  317. package/dist/types/model/migrations/SchemaProvider.d.ts +28 -0
  318. package/dist/types/model/migrations/SchemaProvider.d.ts.map +1 -0
  319. package/dist/types/model/migrations/index.d.ts +1 -1
  320. package/dist/types/model/migrations/index.d.ts.map +1 -1
  321. package/dist/types/model/queries/events/EventsQuery.d.ts.map +1 -1
  322. package/dist/types/model/queries/index.d.ts +1 -0
  323. package/dist/types/model/queries/index.d.ts.map +1 -1
  324. package/dist/types/model/queries/schema/SchemaQuery.d.ts +8 -0
  325. package/dist/types/model/queries/schema/SchemaQuery.d.ts.map +1 -0
  326. package/dist/types/model/queries/schema/index.d.ts +2 -0
  327. package/dist/types/model/queries/schema/index.d.ts.map +1 -0
  328. package/dist/types/resolvers/ResolverFactory.d.ts +3 -1
  329. package/dist/types/resolvers/ResolverFactory.d.ts.map +1 -1
  330. package/dist/types/resolvers/SystemResolverContext.d.ts +4 -4
  331. package/dist/types/resolvers/SystemResolverContext.d.ts.map +1 -1
  332. package/dist/types/resolvers/query/SchemaQueryResolver.d.ts +7 -0
  333. package/dist/types/resolvers/query/SchemaQueryResolver.d.ts.map +1 -0
  334. package/dist/types/schema/system.graphql.d.ts.map +1 -1
  335. package/dist/types/schema/types.d.ts +15 -3
  336. package/dist/types/schema/types.d.ts.map +1 -1
  337. package/dist/types/tsconfig.tsbuildinfo +1 -1
  338. package/graphql.codegen.yml +2 -0
  339. package/package.json +12 -12
  340. package/src/SystemContainer.ts +14 -11
  341. package/src/bin/runMigrations.ts +4 -4
  342. package/src/index.ts +3 -2
  343. package/src/migrations/2020-05-06-150000-composed-primary.ts +1 -1
  344. package/src/migrations/2020-06-01-103000-event-trigger-perf.ts +1 -1
  345. package/src/migrations/2021-05-07-155800-event-log-rework.ts +1 -1
  346. package/src/migrations/2021-05-19-1232000-event-log-fix-constraint.ts +1 -1
  347. package/src/migrations/2022-10-03-110000-table-on-delete.ts +1 -1
  348. package/src/migrations/2023-09-11-174000-fix-on-delete.ts +1 -1
  349. package/src/migrations/2023-10-19-173000-fix-unique.ts +1 -1
  350. package/src/migrations/2024-06-28-153000-schema.ts +20 -0
  351. package/src/migrations/2024-06-28-153001-schema-init.ts +12 -0
  352. package/src/migrations/2024-07-29-150000-event-data-index.ts +11 -0
  353. package/src/migrations/runner.ts +10 -4
  354. package/src/migrations/snapshot.ts +17 -1
  355. package/src/migrations/types.ts +2 -2
  356. package/src/model/SchemaGetter.ts +3 -0
  357. package/src/model/authorization/AuthorizationActions.ts +1 -0
  358. package/src/model/authorization/PermissionsFactory.ts +1 -0
  359. package/src/model/authorization/StagePermissionsFactory.ts +5 -5
  360. package/src/model/authorization/StageScope.ts +2 -2
  361. package/src/model/commands/schema/SaveSchemaCommand.ts +31 -0
  362. package/src/model/dependencies/content/ContentQueryExecutor.ts +3 -2
  363. package/src/model/migrations/MigrationAlterer.ts +14 -0
  364. package/src/model/migrations/ProjectMigrator.ts +34 -12
  365. package/src/model/migrations/SchemaProvider.ts +77 -0
  366. package/src/model/migrations/index.ts +1 -1
  367. package/src/model/queries/events/EventsQuery.ts +15 -17
  368. package/src/model/queries/index.ts +1 -0
  369. package/src/model/queries/schema/SchemaQuery.ts +48 -0
  370. package/src/model/queries/schema/index.ts +1 -0
  371. package/src/resolvers/ResolverFactory.ts +9 -1
  372. package/src/resolvers/SystemResolverContext.ts +8 -13
  373. package/src/resolvers/mutation/TruncateMutationResolver.ts +1 -1
  374. package/src/resolvers/query/SchemaQueryResolver.ts +19 -0
  375. package/src/schema/system.graphql.ts +3 -1
  376. package/src/schema/types.ts +12 -2
  377. package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +9 -1
  378. package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +9 -1
  379. package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +17 -6
  380. package/tests/cases/migrations/2023-09-11-174000-fix-on-delete.test.ts +32 -12
  381. package/tests/cases/migrations/2023-10-19-173000-fix-unique.test.ts +9 -1
  382. package/tests/cases/unit/eventsQuery.test.ts +39 -0
  383. package/tests/src/uuid.ts +4 -0
  384. package/dist/development/src/model/migrations/SchemaVersionBuilder.cjs +0 -37
  385. package/dist/development/src/model/migrations/SchemaVersionBuilder.cjs.map +0 -1
  386. package/dist/development/src/model/migrations/SchemaVersionBuilder.js +0 -37
  387. package/dist/development/src/model/migrations/SchemaVersionBuilder.js.map +0 -1
  388. package/dist/production/src/model/migrations/SchemaVersionBuilder.cjs +0 -37
  389. package/dist/production/src/model/migrations/SchemaVersionBuilder.cjs.map +0 -1
  390. package/dist/production/src/model/migrations/SchemaVersionBuilder.js +0 -37
  391. package/dist/production/src/model/migrations/SchemaVersionBuilder.js.map +0 -1
  392. package/dist/types/model/migrations/SchemaVersionBuilder.d.ts +0 -37
  393. package/dist/types/model/migrations/SchemaVersionBuilder.d.ts.map +0 -1
  394. package/src/model/migrations/SchemaVersionBuilder.ts +0 -43
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaProvider.js","sources":["../../../../../../packages/engine-system-api/src/model/migrations/SchemaProvider.ts"],"sourcesContent":["import { SchemaQuery } from '../queries'\nimport { DatabaseContext } from '../database'\nimport { calculateSchemaChecksum, emptySchema, normalizeSchema } from '@contember/schema-utils'\nimport { ExecutedMigrationsResolver } from './ExecutedMigrationsResolver'\nimport { SchemaMigrator } from '@contember/schema-migrations'\nimport { Schema } from '@contember/schema'\n\nexport type SchemaMeta = {\n\tchecksum: string\n\tversion: string\n\tupdatedAt: Date\n\tid: number\n}\n\nexport const emptyVersionedSchema: SchemaWithMeta = {\n\tschema: emptySchema,\n\tmeta: {},\n}\n\nexport type SchemaWithMeta = {\n\tschema: Schema\n\tmeta: SchemaMeta | { [K in keyof SchemaMeta]?: undefined }\n}\n\nexport class SchemaProvider {\n\tconstructor(\n\t\tprivate readonly executedMigrationsResolver: ExecutedMigrationsResolver,\n\t\tprivate readonly schemaMigrator: SchemaMigrator,\n\t) {\n\t}\n\n\tasync buildSchemaFromMigrations(db: DatabaseContext): Promise<SchemaWithMeta> {\n\t\tconst newMigrations = (await this.executedMigrationsResolver.getMigrations(db))\n\n\t\tconst partialResult = newMigrations.reduce<SchemaWithMeta>(\n\t\t\t(schema, migration) => {\n\t\t\t\tif (migration.type !== 'schema') {\n\t\t\t\t\treturn schema\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tschema: this.schemaMigrator.applyModifications(schema.schema, migration.modifications, migration.formatVersion),\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tversion: migration.version,\n\t\t\t\t\t\tid: migration.id,\n\t\t\t\t\t\tupdatedAt: migration.executedAt,\n\t\t\t\t\t\tchecksum: '',\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t\temptyVersionedSchema,\n\t\t)\n\n\t\tif (!partialResult.meta.version) {\n\t\t\treturn emptyVersionedSchema\n\t\t}\n\n\t\treturn {\n\t\t\tschema: partialResult.schema,\n\t\t\tmeta: {\n\t\t\t\t...partialResult.meta,\n\t\t\t\tchecksum: calculateSchemaChecksum(partialResult.schema),\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic async fetch({ db, currentSchema }: {\n\t\tdb: DatabaseContext\n\t\tcurrentSchema?: SchemaWithMeta | null\n\t}): Promise<SchemaWithMeta> {\n\t\tconst newSchema = await db.queryHandler.fetch(new SchemaQuery(currentSchema?.meta.checksum))\n\t\tif (!newSchema) {\n\t\t\treturn currentSchema ?? emptyVersionedSchema\n\t\t}\n\n\t\treturn newSchema\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAcO,MAAM,uBAAuC;AAAA,EACnD,QAAQ;AAAA,EACR,MAAM,CAAC;AACR;AAOO,MAAM,eAAe;AAAA,EAC3B,YACkB,4BACA,gBAChB;AAFgB,SAAA,6BAAA;AACA,SAAA,iBAAA;AAAA,EAElB;AAAA,EAEA,MAAM,0BAA0B,IAA8C;AAC7E,UAAM,gBAAiB,MAAM,KAAK,2BAA2B,cAAc,EAAE;AAE7E,UAAM,gBAAgB,cAAc;AAAA,MACnC,CAAC,QAAQ,cAAc;AAClB,YAAA,UAAU,SAAS,UAAU;AACzB,iBAAA;AAAA,QACR;AACO,eAAA;AAAA,UACN,QAAQ,KAAK,eAAe,mBAAmB,OAAO,QAAQ,UAAU,eAAe,UAAU,aAAa;AAAA,UAC9G,MAAM;AAAA,YACL,SAAS,UAAU;AAAA,YACnB,IAAI,UAAU;AAAA,YACd,WAAW,UAAU;AAAA,YACrB,UAAU;AAAA,UACX;AAAA,QAAA;AAAA,MAEF;AAAA,MACA;AAAA,IAAA;AAGG,QAAA,CAAC,cAAc,KAAK,SAAS;AACzB,aAAA;AAAA,IACR;AAEO,WAAA;AAAA,MACN,QAAQ,cAAc;AAAA,MACtB,MAAM;AAAA,QACL,GAAG,cAAc;AAAA,QACjB,UAAU,wBAAwB,cAAc,MAAM;AAAA,MACvD;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,MAAa,MAAM,EAAE,IAAI,iBAGG;AACrB,UAAA,YAAY,MAAM,GAAG,aAAa,MAAM,IAAI,YAAY,eAAe,KAAK,QAAQ,CAAC;AAC3F,QAAI,CAAC,WAAW;AACf,aAAO,iBAAiB;AAAA,IACzB;AAEO,WAAA;AAAA,EACR;AACD;"}
@@ -49,23 +49,19 @@ class EventsQuery extends Database.DatabaseQuery {
49
49
  return qb2.orderBy("created_at", "desc");
50
50
  }
51
51
  }).match(createInMatcher("type", this.filter.types?.map((it) => it.toLowerCase()))).match(createInMatcher("table_name", this.filter.tables)).match(createInMatcher("transaction_id", this.filter.transactions)).match(createInMatcher("identity_id", this.filter.identities)).match(createDateMatcher("created_at", this.filter.createdAt ?? void 0)).match(createDateMatcher("applied_at", this.filter.appliedAt ?? void 0)).match((qb2) => {
52
- var _a;
53
52
  if (!this.filter.rows) {
54
53
  return qb2;
55
54
  }
56
- const byTable = {};
57
- for (const row of this.filter.rows) {
58
- byTable[_a = row.tableName] ?? (byTable[_a] = []);
59
- byTable[row.tableName].push(row.primaryKey);
60
- }
61
- const rowFilters = Object.entries(byTable);
62
- const ors = rowFilters.reduce(
63
- (expr, [table, rowIds]) => expr.and(
64
- Database.ConditionBuilder.create().compare("table_name", Database.Operator.eq, table).in("row_ids", rowIds.map((it) => JSON.stringify(it)))
65
- ),
66
- Database.ConditionBuilder.create()
67
- );
68
- return qb2.where(Database.ConditionBuilder.create().or(ors));
55
+ const ors = this.filter.rows.map((row) => {
56
+ const builder = Database.ConditionBuilder.create().compare("table_name", Database.Operator.eq, row.tableName);
57
+ return row.primaryKey.reduce((expr, val, index) => {
58
+ if (val === null) {
59
+ return expr;
60
+ }
61
+ return expr.raw(`"row_ids"->${index} = ?::jsonb`, JSON.stringify(val));
62
+ }, builder).getSql();
63
+ }).filter((it) => it !== null);
64
+ return qb2.where(Database.ConditionBuilder.create().or(Database.ConditionBuilder.create(ors)));
69
65
  }).limit(this.limit, this.offset);
70
66
  return EventQueryHelpers.createEventsFromRows(await qb.getResult(db));
71
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventsQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification, Value,\n} from '@contember/database'\nimport { ContentEvent } from '../../events'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on =>\n\t\t\t\ton.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']),\n\t\t\t)\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher('transaction_id', this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\t\t\t\ttype PrimaryKey = readonly string[]\n\t\t\t\tconst byTable: Record<string, PrimaryKey[]> = {}\n\t\t\t\tfor (const row of this.filter.rows) {\n\t\t\t\t\tbyTable[row.tableName] ??= []\n\t\t\t\t\tbyTable[row.tableName].push(row.primaryKey)\n\t\t\t\t}\n\t\t\t\tconst rowFilters = Object.entries(byTable)\n\t\t\t\tconst ors = rowFilters.reduce(\n\t\t\t\t\t(expr, [table, rowIds]) =>\n\t\t\t\t\t\texpr.and(\n\t\t\t\t\t\t\tConditionBuilder.create()\n\t\t\t\t\t\t\t\t.compare('table_name', Operator.eq, table)\n\t\t\t\t\t\t\t\t.in('row_ids', rowIds.map(it => JSON.stringify(it))),\n\t\t\t\t\t\t),\n\t\t\t\t\tConditionBuilder.create(),\n\t\t\t\t)\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ors))\n\t\t\t})\n\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n\n}\n"],"names":["DatabaseQuery","qb","Operator","ConditionBuilder","SelectBuilder","EventsOrder","createEventsFromRows"],"mappings":"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"}
1
+ {"version":3,"file":"EventsQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tLiteral,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification, Value,\n} from '@contember/database'\nimport { ContentEvent } from '../../events'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on =>\n\t\t\t\ton.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']),\n\t\t\t)\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher('transaction_id', this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\n\t\t\t\tconst ors: Literal[] = this.filter.rows.map(row => {\n\t\t\t\t\tconst builder = ConditionBuilder.create()\n\t\t\t\t\t\t.compare('table_name', Operator.eq, row.tableName)\n\n\t\t\t\t\treturn row.primaryKey.reduce((expr, val, index) => {\n\t\t\t\t\t\tif (val === null) {\n\t\t\t\t\t\t\treturn expr\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn expr.raw(`\"row_ids\"->${index} = ?::jsonb`, JSON.stringify(val))\n\t\t\t\t\t}, builder).getSql()\n\t\t\t\t}).filter((it): it is Literal => it !== null)\n\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)))\n\t\t\t})\n\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n\n}\n"],"names":["DatabaseQuery","qb","Operator","ConditionBuilder","SelectBuilder","EventsOrder","createEventsFromRows"],"mappings":"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"}
@@ -47,23 +47,19 @@ class EventsQuery extends DatabaseQuery {
47
47
  return qb2.orderBy("created_at", "desc");
48
48
  }
49
49
  }).match(createInMatcher("type", this.filter.types?.map((it) => it.toLowerCase()))).match(createInMatcher("table_name", this.filter.tables)).match(createInMatcher("transaction_id", this.filter.transactions)).match(createInMatcher("identity_id", this.filter.identities)).match(createDateMatcher("created_at", this.filter.createdAt ?? void 0)).match(createDateMatcher("applied_at", this.filter.appliedAt ?? void 0)).match((qb2) => {
50
- var _a;
51
50
  if (!this.filter.rows) {
52
51
  return qb2;
53
52
  }
54
- const byTable = {};
55
- for (const row of this.filter.rows) {
56
- byTable[_a = row.tableName] ?? (byTable[_a] = []);
57
- byTable[row.tableName].push(row.primaryKey);
58
- }
59
- const rowFilters = Object.entries(byTable);
60
- const ors = rowFilters.reduce(
61
- (expr, [table, rowIds]) => expr.and(
62
- ConditionBuilder.create().compare("table_name", Operator.eq, table).in("row_ids", rowIds.map((it) => JSON.stringify(it)))
63
- ),
64
- ConditionBuilder.create()
65
- );
66
- return qb2.where(ConditionBuilder.create().or(ors));
53
+ const ors = this.filter.rows.map((row) => {
54
+ const builder = ConditionBuilder.create().compare("table_name", Operator.eq, row.tableName);
55
+ return row.primaryKey.reduce((expr, val, index) => {
56
+ if (val === null) {
57
+ return expr;
58
+ }
59
+ return expr.raw(`"row_ids"->${index} = ?::jsonb`, JSON.stringify(val));
60
+ }, builder).getSql();
61
+ }).filter((it) => it !== null);
62
+ return qb2.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)));
67
63
  }).limit(this.limit, this.offset);
68
64
  return createEventsFromRows(await qb.getResult(db));
69
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventsQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification, Value,\n} from '@contember/database'\nimport { ContentEvent } from '../../events'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on =>\n\t\t\t\ton.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']),\n\t\t\t)\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher('transaction_id', this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\t\t\t\ttype PrimaryKey = readonly string[]\n\t\t\t\tconst byTable: Record<string, PrimaryKey[]> = {}\n\t\t\t\tfor (const row of this.filter.rows) {\n\t\t\t\t\tbyTable[row.tableName] ??= []\n\t\t\t\t\tbyTable[row.tableName].push(row.primaryKey)\n\t\t\t\t}\n\t\t\t\tconst rowFilters = Object.entries(byTable)\n\t\t\t\tconst ors = rowFilters.reduce(\n\t\t\t\t\t(expr, [table, rowIds]) =>\n\t\t\t\t\t\texpr.and(\n\t\t\t\t\t\t\tConditionBuilder.create()\n\t\t\t\t\t\t\t\t.compare('table_name', Operator.eq, table)\n\t\t\t\t\t\t\t\t.in('row_ids', rowIds.map(it => JSON.stringify(it))),\n\t\t\t\t\t\t),\n\t\t\t\t\tConditionBuilder.create(),\n\t\t\t\t)\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ors))\n\t\t\t})\n\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n\n}\n"],"names":["qb"],"mappings":"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"}
1
+ {"version":3,"file":"EventsQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/events/EventsQuery.ts"],"sourcesContent":["import {\n\tConditionBuilder,\n\tDatabaseQuery,\n\tDatabaseQueryable,\n\tLiteral,\n\tOperator,\n\tSelectBuilder,\n\tSelectBuilderSpecification, Value,\n} from '@contember/database'\nimport { ContentEvent } from '../../events'\nimport { EventsFilter, EventsFilterDate, EventsOrder } from '../../../schema'\nimport { createEventsFromRows, EventRow } from './EventQueryHelpers'\n\nexport class EventsQuery extends DatabaseQuery<ContentEvent[]> {\n\tconstructor(\n\t\tprivate readonly filter: EventsFilter,\n\t\tprivate readonly order: EventsOrder,\n\t\tprivate readonly offset: number,\n\t\tprivate readonly limit: number,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch({ db }: DatabaseQueryable): Promise<ContentEvent[]> {\n\t\tconst createDateMatcher = (column: string, dateFilter: EventsFilterDate | undefined): SelectBuilderSpecification => qb => {\n\t\t\tif (!dateFilter) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\tconst { from, to } = dateFilter\n\t\t\tif (from) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.gte, from))\n\t\t\t}\n\t\t\tif (to) {\n\t\t\t\tqb = qb.where(expr => expr.compare(column, Operator.lte, to))\n\t\t\t}\n\t\t\treturn qb\n\t\t}\n\t\tconst createInMatcher = (column: string | [string, string], values?: readonly Value[] | null): SelectBuilderSpecification => qb => {\n\t\t\tif (!values) {\n\t\t\t\treturn qb\n\t\t\t}\n\t\t\treturn qb.where(ConditionBuilder.create().in(column, values))\n\t\t}\n\n\t\tconst qb = SelectBuilder.create<EventRow>()\n\t\t\t.select('id')\n\t\t\t.select('type')\n\t\t\t.select('table_name')\n\t\t\t.select('row_ids')\n\t\t\t.select('values')\n\t\t\t.select('created_at')\n\t\t\t.select('applied_at')\n\t\t\t.select('identity_id')\n\t\t\t.select(['event_data', 'transaction_id'])\n\n\t\t\t.from('event_data')\n\t\t\t.join('stage_transaction', undefined, on =>\n\t\t\t\ton.columnsEq(['event_data', 'transaction_id'], ['stage_transaction', 'transaction_id']),\n\t\t\t)\n\t\t\t.match(qb => {\n\t\t\t\tswitch (this.order) {\n\t\t\t\t\tcase EventsOrder.AppliedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'asc')\n\t\t\t\t\tcase EventsOrder.AppliedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('applied_at', 'desc')\n\t\t\t\t\tcase EventsOrder.CreatedAtAsc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'asc')\n\t\t\t\t\tcase EventsOrder.CreatedAtDesc:\n\t\t\t\t\t\treturn qb.orderBy('created_at', 'desc')\n\t\t\t\t}\n\t\t\t})\n\t\t\t.match(createInMatcher('type', this.filter.types?.map(it => it.toLowerCase())))\n\t\t\t.match(createInMatcher('table_name', this.filter.tables))\n\t\t\t.match(createInMatcher('transaction_id', this.filter.transactions))\n\t\t\t.match(createInMatcher('identity_id', this.filter.identities))\n\t\t\t.match(createDateMatcher('created_at', this.filter.createdAt ?? undefined))\n\t\t\t.match(createDateMatcher('applied_at', this.filter.appliedAt ?? undefined))\n\t\t\t.match(qb => {\n\t\t\t\tif (!this.filter.rows) {\n\t\t\t\t\treturn qb\n\t\t\t\t}\n\n\t\t\t\tconst ors: Literal[] = this.filter.rows.map(row => {\n\t\t\t\t\tconst builder = ConditionBuilder.create()\n\t\t\t\t\t\t.compare('table_name', Operator.eq, row.tableName)\n\n\t\t\t\t\treturn row.primaryKey.reduce((expr, val, index) => {\n\t\t\t\t\t\tif (val === null) {\n\t\t\t\t\t\t\treturn expr\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn expr.raw(`\"row_ids\"->${index} = ?::jsonb`, JSON.stringify(val))\n\t\t\t\t\t}, builder).getSql()\n\t\t\t\t}).filter((it): it is Literal => it !== null)\n\n\t\t\t\treturn qb.where(ConditionBuilder.create().or(ConditionBuilder.create(ors)))\n\t\t\t})\n\n\t\t\t.limit(this.limit, this.offset)\n\n\t\treturn createEventsFromRows(await qb.getResult(db))\n\t}\n\n}\n"],"names":["qb"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Database = require("@contember/database");
4
+ class SchemaQuery extends Database.DatabaseQuery {
5
+ constructor(currentHash) {
6
+ super();
7
+ this.currentHash = currentHash;
8
+ }
9
+ async fetch(queryable) {
10
+ const query = Database.SelectBuilder.create().from("schema").select(new Database.Literal("*")).where({
11
+ id: "single"
12
+ }).match((it) => {
13
+ if (!this.currentHash) {
14
+ return it;
15
+ }
16
+ return it.where((it2) => it2.raw("checksum != ?", this.currentHash));
17
+ });
18
+ const row = this.fetchOneOrNull(await query.getResult(queryable.db));
19
+ if (!row) {
20
+ return null;
21
+ }
22
+ return {
23
+ schema: row.schema,
24
+ meta: {
25
+ checksum: row.checksum,
26
+ version: row.version,
27
+ updatedAt: row.updated_at,
28
+ id: row.migration_id
29
+ }
30
+ };
31
+ }
32
+ }
33
+ exports.SchemaQuery = SchemaQuery;
34
+ //# sourceMappingURL=SchemaQuery.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaQuery.cjs","sources":["../../../../../../../packages/engine-system-api/src/model/queries/schema/SchemaQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SchemaWithMeta } from '../../migrations'\n\nexport class SchemaQuery extends DatabaseQuery<SchemaWithMeta | null> {\n\n\tconstructor(\n\t\tprivate readonly currentHash?: string,\n\t) {\n\t\tsuper()\n\t}\n\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<SchemaWithMeta | null> {\n\t\tconst query = SelectBuilder.create<{\n\t\t\tschema: Schema\n\t\t\tchecksum: string\n\t\t\tversion: string\n\t\t\tupdated_at: Date\n\t\t\tmigration_id: number\n\t\t}>()\n\t\t\t.from('schema')\n\t\t\t.select(new Literal('*'))\n\t\t\t.where({\n\t\t\t\tid: 'single',\n\t\t\t})\n\t\t\t.match(it => {\n\t\t\t\tif (!this.currentHash) {\n\t\t\t\t\treturn it\n\t\t\t\t}\n\t\t\t\treturn it.where(it => it.raw('checksum != ?', this.currentHash))\n\t\t\t})\n\n\t\tconst row = this.fetchOneOrNull(await query.getResult(queryable.db))\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\t\treturn {\n\t\t\tschema: row.schema,\n\t\t\tmeta: {\n\t\t\t\tchecksum: row.checksum,\n\t\t\t\tversion: row.version,\n\t\t\t\tupdatedAt: row.updated_at,\n\t\t\t\tid: row.migration_id,\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder","Literal","it"],"mappings":";;;AAIO,MAAM,oBAAoBA,SAAAA,cAAqC;AAAA,EAErE,YACkB,aAChB;AACK;AAFW,SAAA,cAAA;AAAA,EAGlB;AAAA,EAGA,MAAM,MAAM,WAA8D;AACzE,UAAM,QAAQC,SAAAA,cAAc,OAMzB,EACD,KAAK,QAAQ,EACb,OAAO,IAAIC,SAAA,QAAQ,GAAG,CAAC,EACvB,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACJ,EACA,MAAM,CAAM,OAAA;AACR,UAAA,CAAC,KAAK,aAAa;AACf,eAAA;AAAA,MACR;AACO,aAAA,GAAG,MAAM,CAAAC,QAAMA,IAAG,IAAI,iBAAiB,KAAK,WAAW,CAAC;AAAA,IAAA,CAC/D;AAEI,UAAA,MAAO,KAAK,eAAe,MAAM,MAAM,UAAU,UAAU,EAAE,CAAC;AACpE,QAAI,CAAC,KAAK;AACF,aAAA;AAAA,IACR;AACO,WAAA;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,MAAM;AAAA,QACL,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,IAAI,IAAI;AAAA,MACT;AAAA,IAAA;AAAA,EAEF;AACD;;"}
@@ -0,0 +1,34 @@
1
+ import { DatabaseQuery, SelectBuilder, Literal } from "@contember/database";
2
+ class SchemaQuery extends DatabaseQuery {
3
+ constructor(currentHash) {
4
+ super();
5
+ this.currentHash = currentHash;
6
+ }
7
+ async fetch(queryable) {
8
+ const query = SelectBuilder.create().from("schema").select(new Literal("*")).where({
9
+ id: "single"
10
+ }).match((it) => {
11
+ if (!this.currentHash) {
12
+ return it;
13
+ }
14
+ return it.where((it2) => it2.raw("checksum != ?", this.currentHash));
15
+ });
16
+ const row = this.fetchOneOrNull(await query.getResult(queryable.db));
17
+ if (!row) {
18
+ return null;
19
+ }
20
+ return {
21
+ schema: row.schema,
22
+ meta: {
23
+ checksum: row.checksum,
24
+ version: row.version,
25
+ updatedAt: row.updated_at,
26
+ id: row.migration_id
27
+ }
28
+ };
29
+ }
30
+ }
31
+ export {
32
+ SchemaQuery
33
+ };
34
+ //# sourceMappingURL=SchemaQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaQuery.js","sources":["../../../../../../../packages/engine-system-api/src/model/queries/schema/SchemaQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, Literal, SelectBuilder } from '@contember/database'\nimport { Schema } from '@contember/schema'\nimport { SchemaWithMeta } from '../../migrations'\n\nexport class SchemaQuery extends DatabaseQuery<SchemaWithMeta | null> {\n\n\tconstructor(\n\t\tprivate readonly currentHash?: string,\n\t) {\n\t\tsuper()\n\t}\n\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<SchemaWithMeta | null> {\n\t\tconst query = SelectBuilder.create<{\n\t\t\tschema: Schema\n\t\t\tchecksum: string\n\t\t\tversion: string\n\t\t\tupdated_at: Date\n\t\t\tmigration_id: number\n\t\t}>()\n\t\t\t.from('schema')\n\t\t\t.select(new Literal('*'))\n\t\t\t.where({\n\t\t\t\tid: 'single',\n\t\t\t})\n\t\t\t.match(it => {\n\t\t\t\tif (!this.currentHash) {\n\t\t\t\t\treturn it\n\t\t\t\t}\n\t\t\t\treturn it.where(it => it.raw('checksum != ?', this.currentHash))\n\t\t\t})\n\n\t\tconst row = this.fetchOneOrNull(await query.getResult(queryable.db))\n\t\tif (!row) {\n\t\t\treturn null\n\t\t}\n\t\treturn {\n\t\t\tschema: row.schema,\n\t\t\tmeta: {\n\t\t\t\tchecksum: row.checksum,\n\t\t\t\tversion: row.version,\n\t\t\t\tupdatedAt: row.updated_at,\n\t\t\t\tid: row.migration_id,\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["it"],"mappings":";AAIO,MAAM,oBAAoB,cAAqC;AAAA,EAErE,YACkB,aAChB;AACK;AAFW,SAAA,cAAA;AAAA,EAGlB;AAAA,EAGA,MAAM,MAAM,WAA8D;AACzE,UAAM,QAAQ,cAAc,OAMzB,EACD,KAAK,QAAQ,EACb,OAAO,IAAI,QAAQ,GAAG,CAAC,EACvB,MAAM;AAAA,MACN,IAAI;AAAA,IAAA,CACJ,EACA,MAAM,CAAM,OAAA;AACR,UAAA,CAAC,KAAK,aAAa;AACf,eAAA;AAAA,MACR;AACO,aAAA,GAAG,MAAM,CAAAA,QAAMA,IAAG,IAAI,iBAAiB,KAAK,WAAW,CAAC;AAAA,IAAA,CAC/D;AAEI,UAAA,MAAO,KAAK,eAAe,MAAM,MAAM,UAAU,UAAU,EAAE,CAAC;AACpE,QAAI,CAAC,KAAK;AACF,aAAA;AAAA,IACR;AACO,WAAA;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,MAAM;AAAA,QACL,UAAU,IAAI;AAAA,QACd,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,IAAI,IAAI;AAAA,MACT;AAAA,IAAA;AAAA,EAEF;AACD;"}
@@ -7,7 +7,7 @@ const assertNever = require("../utils/assertNever.cjs");
7
7
  const graphqlUtils = require("@contember/graphql-utils");
8
8
  const graphql = require("graphql");
9
9
  class ResolverFactory {
10
- constructor(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver) {
10
+ constructor(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver) {
11
11
  this.stagesQueryResolver = stagesQueryResolver;
12
12
  this.executedMigrationsQueryResolver = executedMigrationsQueryResolver;
13
13
  this.migrateMutationResolver = migrateMutationResolver;
@@ -15,12 +15,14 @@ class ResolverFactory {
15
15
  this.migrationAlterMutationResolver = migrationAlterMutationResolver;
16
16
  this.eventsQueryResolver = eventsQueryResolver;
17
17
  this.eventOldValuesResolver = eventOldValuesResolver;
18
+ this.schemaQueryResolver = schemaQueryResolver;
18
19
  }
19
20
  create(debugMode) {
20
21
  const resolvers = {
21
22
  DateTime: graphqlUtils.DateTimeType,
22
23
  Json: graphqlUtils.JSONType,
23
24
  PrimaryKey: PrimaryKeyType,
25
+ Schema: SchemaType,
24
26
  Event: {
25
27
  __resolveType: (obj) => {
26
28
  switch (obj.type) {
@@ -41,7 +43,8 @@ class ResolverFactory {
41
43
  Query: {
42
44
  stages: this.stagesQueryResolver.stages.bind(this.stagesQueryResolver),
43
45
  executedMigrations: this.executedMigrationsQueryResolver.executedMigrations.bind(this.executedMigrationsQueryResolver),
44
- events: this.eventsQueryResolver.events.bind(this.eventsQueryResolver)
46
+ events: this.eventsQueryResolver.events.bind(this.eventsQueryResolver),
47
+ schema: this.schemaQueryResolver.schema.bind(this.schemaQueryResolver)
45
48
  },
46
49
  Mutation: {
47
50
  migrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver)
@@ -68,6 +71,7 @@ const parseValue = (value) => {
68
71
  }
69
72
  throw new graphql.GraphQLError("PrimaryKey cannot represent value: " + JSON.stringify(value));
70
73
  };
74
+ const SchemaType = graphqlUtils.createJsonLikeType("Schema", "Content schema custom scalar type");
71
75
  const PrimaryKeyType = new graphql.GraphQLScalarType({
72
76
  name: "PrimaryKey",
73
77
  description: "PrimaryKey custom scalar type. Can be Int or String",
@@ -1 +1 @@
1
- {"version":3,"file":"ResolverFactory.cjs","sources":["../../../../../packages/engine-system-api/src/resolvers/ResolverFactory.ts"],"sourcesContent":["import { EventsQueryResolver, ExecutedMigrationsQueryResolver, StagesQueryResolver } from './query'\nimport { Event, EventType, Resolvers } from '../schema'\nimport { assertNever } from '../utils'\nimport { MigrateMutationResolver, MigrationAlterMutationResolver, TruncateMutationResolver } from './mutation'\nimport { DateTimeType, JSONType } from '@contember/graphql-utils'\nimport { EventOldValuesResolver } from './types'\nimport { GraphQLError, GraphQLScalarType, Kind } from 'graphql'\n\nexport class ResolverFactory {\n\tpublic constructor(\n\t\tprivate readonly stagesQueryResolver: StagesQueryResolver,\n\t\tprivate readonly executedMigrationsQueryResolver: ExecutedMigrationsQueryResolver,\n\t\tprivate readonly migrateMutationResolver: MigrateMutationResolver,\n\t\tprivate readonly truncateMutationResolver: TruncateMutationResolver,\n\t\tprivate readonly migrationAlterMutationResolver: MigrationAlterMutationResolver,\n\t\tprivate readonly eventsQueryResolver: EventsQueryResolver,\n\t\tprivate readonly eventOldValuesResolver: EventOldValuesResolver,\n\t) {}\n\n\tcreate(debugMode: boolean): Resolvers {\n\t\tconst resolvers: Resolvers & Required<Pick<Resolvers, 'Mutation'>> = {\n\t\t\tDateTime: DateTimeType,\n\t\t\tJson: JSONType,\n\t\t\tPrimaryKey: PrimaryKeyType,\n\t\t\tEvent: {\n\t\t\t\t__resolveType: (obj: Event) => {\n\t\t\t\t\tswitch (obj.type) {\n\t\t\t\t\t\tcase EventType.Create:\n\t\t\t\t\t\t\treturn 'CreateEvent'\n\t\t\t\t\t\tcase EventType.Update:\n\t\t\t\t\t\t\treturn 'UpdateEvent'\n\t\t\t\t\t\tcase EventType.Delete:\n\t\t\t\t\t\t\treturn 'DeleteEvent'\n\t\t\t\t\t\tcase null:\n\t\t\t\t\t\tcase undefined:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(obj.type)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\tstages: this.stagesQueryResolver.stages.bind(this.stagesQueryResolver),\n\t\t\t\texecutedMigrations: this.executedMigrationsQueryResolver.executedMigrations.bind(this.executedMigrationsQueryResolver),\n\t\t\t\tevents: this.eventsQueryResolver.events.bind(this.eventsQueryResolver),\n\t\t\t},\n\t\t\tMutation: {\n\t\t\t\tmigrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver),\n\t\t\t},\n\t\t\tDeleteEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t\tUpdateEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t}\n\t\tif (debugMode) {\n\t\t\tresolvers.Mutation.truncate = this.truncateMutationResolver.truncate.bind(this.truncateMutationResolver)\n\t\t\tresolvers.Mutation.migrationDelete = this.migrationAlterMutationResolver.migrationDelete.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.migrationModify = this.migrationAlterMutationResolver.migrationModify.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.forceMigrate = this.migrateMutationResolver.migrateForce.bind(this.migrateMutationResolver)\n\t\t}\n\t\treturn resolvers\n\t}\n}\n\nconst parseValue = (value: any) => {\n\tif ((typeof value === 'string' && value !== '') || typeof value === 'number' && isFinite(value) && Math.floor(value) === value) {\n\t\treturn value\n\t}\n\tthrow new GraphQLError('PrimaryKey cannot represent value: ' + JSON.stringify(value))\n}\nexport const PrimaryKeyType = new GraphQLScalarType({\n\tname: 'PrimaryKey',\n\tdescription: 'PrimaryKey custom scalar type. Can be Int or String',\n\tserialize: parseValue,\n\tparseValue: parseValue,\n\tparseLiteral(ast) {\n\t\tif (ast.kind === Kind.STRING) {\n\t\t\treturn ast.value\n\t\t}\n\t\tif (ast.kind === Kind.INT) {\n\t\t\treturn Number.parseInt(ast.value, 10)\n\t\t}\n\t\treturn null\n\t},\n})\n"],"names":["DateTimeType","JSONType","EventType","assertNever","GraphQLError","GraphQLScalarType","Kind"],"mappings":";;;;;;;;AAQO,MAAM,gBAAgB;AAAA,EACrB,YACW,qBACA,iCACA,yBACA,0BACA,gCACA,qBACA,wBAChB;AAPgB,SAAA,sBAAA;AACA,SAAA,kCAAA;AACA,SAAA,0BAAA;AACA,SAAA,2BAAA;AACA,SAAA,iCAAA;AACA,SAAA,sBAAA;AACA,SAAA,yBAAA;AAAA,EACf;AAAA,EAEH,OAAO,WAA+B;AACrC,UAAM,YAA+D;AAAA,MACpE,UAAUA,aAAA;AAAA,MACV,MAAMC,aAAA;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,QACN,eAAe,CAAC,QAAe;AAC9B,kBAAQ,IAAI,MAAM;AAAA,YACjB,KAAKC,MAAU,UAAA;AACP,qBAAA;AAAA,YACR,KAAKA,MAAU,UAAA;AACP,qBAAA;AAAA,YACR,KAAKA,MAAU,UAAA;AACP,qBAAA;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AACG,qBAAA;AAAA,YACR;AACQ,qBAAAC,YAAA,YAAY,IAAI,IAAI;AAAA,UAC7B;AAAA,QACD;AAAA,MACD;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,QACrE,oBAAoB,KAAK,gCAAgC,mBAAmB,KAAK,KAAK,+BAA+B;AAAA,QACrH,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,MACtE;AAAA,MACA,UAAU;AAAA,QACT,SAAS,KAAK,wBAAwB,QAAQ,KAAK,KAAK,uBAAuB;AAAA,MAChF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,IAAA;AAED,QAAI,WAAW;AACd,gBAAU,SAAS,WAAW,KAAK,yBAAyB,SAAS,KAAK,KAAK,wBAAwB;AACvG,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,eAAe,KAAK,wBAAwB,aAAa,KAAK,KAAK,uBAAuB;AAAA,IAC9G;AACO,WAAA;AAAA,EACR;AACD;AAEA,MAAM,aAAa,CAAC,UAAgB;AACnC,MAAK,OAAO,UAAU,YAAY,UAAU,MAAO,OAAO,UAAU,YAAY,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,OAAO;AACxH,WAAA;AAAA,EACR;AACA,QAAM,IAAIC,QAAa,aAAA,wCAAwC,KAAK,UAAU,KAAK,CAAC;AACrF;AACa,MAAA,iBAAiB,IAAIC,QAAAA,kBAAkB;AAAA,EACnD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,aAAa,KAAK;AACb,QAAA,IAAI,SAASC,QAAA,KAAK,QAAQ;AAC7B,aAAO,IAAI;AAAA,IACZ;AACI,QAAA,IAAI,SAASA,QAAA,KAAK,KAAK;AAC1B,aAAO,OAAO,SAAS,IAAI,OAAO,EAAE;AAAA,IACrC;AACO,WAAA;AAAA,EACR;AACD,CAAC;;;"}
1
+ {"version":3,"file":"ResolverFactory.cjs","sources":["../../../../../packages/engine-system-api/src/resolvers/ResolverFactory.ts"],"sourcesContent":["import { EventsQueryResolver, ExecutedMigrationsQueryResolver, StagesQueryResolver } from './query'\nimport { Event, EventType, Resolvers } from '../schema'\nimport { assertNever } from '../utils'\nimport { MigrateMutationResolver, MigrationAlterMutationResolver, TruncateMutationResolver } from './mutation'\nimport { DateTimeType, JSONType, createJsonLikeType } from '@contember/graphql-utils'\nimport { EventOldValuesResolver } from './types'\nimport { GraphQLError, GraphQLScalarType, Kind } from 'graphql'\nimport { SchemaQueryResolver } from './query/SchemaQueryResolver'\n\nexport class ResolverFactory {\n\tpublic constructor(\n\t\tprivate readonly stagesQueryResolver: StagesQueryResolver,\n\t\tprivate readonly executedMigrationsQueryResolver: ExecutedMigrationsQueryResolver,\n\t\tprivate readonly migrateMutationResolver: MigrateMutationResolver,\n\t\tprivate readonly truncateMutationResolver: TruncateMutationResolver,\n\t\tprivate readonly migrationAlterMutationResolver: MigrationAlterMutationResolver,\n\t\tprivate readonly eventsQueryResolver: EventsQueryResolver,\n\t\tprivate readonly eventOldValuesResolver: EventOldValuesResolver,\n\t\tprivate readonly schemaQueryResolver: SchemaQueryResolver,\n\t) {}\n\n\tcreate(debugMode: boolean): Resolvers {\n\t\tconst resolvers: Resolvers & Required<Pick<Resolvers, 'Mutation'>> = {\n\t\t\tDateTime: DateTimeType,\n\t\t\tJson: JSONType,\n\t\t\tPrimaryKey: PrimaryKeyType,\n\t\t\tSchema: SchemaType,\n\t\t\tEvent: {\n\t\t\t\t__resolveType: (obj: Event) => {\n\t\t\t\t\tswitch (obj.type) {\n\t\t\t\t\t\tcase EventType.Create:\n\t\t\t\t\t\t\treturn 'CreateEvent'\n\t\t\t\t\t\tcase EventType.Update:\n\t\t\t\t\t\t\treturn 'UpdateEvent'\n\t\t\t\t\t\tcase EventType.Delete:\n\t\t\t\t\t\t\treturn 'DeleteEvent'\n\t\t\t\t\t\tcase null:\n\t\t\t\t\t\tcase undefined:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(obj.type)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\tstages: this.stagesQueryResolver.stages.bind(this.stagesQueryResolver),\n\t\t\t\texecutedMigrations: this.executedMigrationsQueryResolver.executedMigrations.bind(this.executedMigrationsQueryResolver),\n\t\t\t\tevents: this.eventsQueryResolver.events.bind(this.eventsQueryResolver),\n\t\t\t\tschema: this.schemaQueryResolver.schema.bind(this.schemaQueryResolver),\n\t\t\t},\n\t\t\tMutation: {\n\t\t\t\tmigrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver),\n\t\t\t},\n\t\t\tDeleteEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t\tUpdateEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t}\n\t\tif (debugMode) {\n\t\t\tresolvers.Mutation.truncate = this.truncateMutationResolver.truncate.bind(this.truncateMutationResolver)\n\t\t\tresolvers.Mutation.migrationDelete = this.migrationAlterMutationResolver.migrationDelete.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.migrationModify = this.migrationAlterMutationResolver.migrationModify.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.forceMigrate = this.migrateMutationResolver.migrateForce.bind(this.migrateMutationResolver)\n\t\t}\n\t\treturn resolvers\n\t}\n}\n\nconst parseValue = (value: any) => {\n\tif ((typeof value === 'string' && value !== '') || typeof value === 'number' && isFinite(value) && Math.floor(value) === value) {\n\t\treturn value\n\t}\n\tthrow new GraphQLError('PrimaryKey cannot represent value: ' + JSON.stringify(value))\n}\n\nconst SchemaType = createJsonLikeType('Schema', 'Content schema custom scalar type')\n\n\nexport const PrimaryKeyType = new GraphQLScalarType({\n\tname: 'PrimaryKey',\n\tdescription: 'PrimaryKey custom scalar type. Can be Int or String',\n\tserialize: parseValue,\n\tparseValue: parseValue,\n\tparseLiteral(ast) {\n\t\tif (ast.kind === Kind.STRING) {\n\t\t\treturn ast.value\n\t\t}\n\t\tif (ast.kind === Kind.INT) {\n\t\t\treturn Number.parseInt(ast.value, 10)\n\t\t}\n\t\treturn null\n\t},\n})\n"],"names":["DateTimeType","JSONType","EventType","assertNever","GraphQLError","createJsonLikeType","GraphQLScalarType","Kind"],"mappings":";;;;;;;;AASO,MAAM,gBAAgB;AAAA,EACrB,YACW,qBACA,iCACA,yBACA,0BACA,gCACA,qBACA,wBACA,qBAChB;AARgB,SAAA,sBAAA;AACA,SAAA,kCAAA;AACA,SAAA,0BAAA;AACA,SAAA,2BAAA;AACA,SAAA,iCAAA;AACA,SAAA,sBAAA;AACA,SAAA,yBAAA;AACA,SAAA,sBAAA;AAAA,EACf;AAAA,EAEH,OAAO,WAA+B;AACrC,UAAM,YAA+D;AAAA,MACpE,UAAUA,aAAA;AAAA,MACV,MAAMC,aAAA;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,OAAO;AAAA,QACN,eAAe,CAAC,QAAe;AAC9B,kBAAQ,IAAI,MAAM;AAAA,YACjB,KAAKC,MAAU,UAAA;AACP,qBAAA;AAAA,YACR,KAAKA,MAAU,UAAA;AACP,qBAAA;AAAA,YACR,KAAKA,MAAU,UAAA;AACP,qBAAA;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AACG,qBAAA;AAAA,YACR;AACQ,qBAAAC,YAAA,YAAY,IAAI,IAAI;AAAA,UAC7B;AAAA,QACD;AAAA,MACD;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,QACrE,oBAAoB,KAAK,gCAAgC,mBAAmB,KAAK,KAAK,+BAA+B;AAAA,QACrH,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,QACrE,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,MACtE;AAAA,MACA,UAAU;AAAA,QACT,SAAS,KAAK,wBAAwB,QAAQ,KAAK,KAAK,uBAAuB;AAAA,MAChF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,IAAA;AAED,QAAI,WAAW;AACd,gBAAU,SAAS,WAAW,KAAK,yBAAyB,SAAS,KAAK,KAAK,wBAAwB;AACvG,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,eAAe,KAAK,wBAAwB,aAAa,KAAK,KAAK,uBAAuB;AAAA,IAC9G;AACO,WAAA;AAAA,EACR;AACD;AAEA,MAAM,aAAa,CAAC,UAAgB;AACnC,MAAK,OAAO,UAAU,YAAY,UAAU,MAAO,OAAO,UAAU,YAAY,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,OAAO;AACxH,WAAA;AAAA,EACR;AACA,QAAM,IAAIC,QAAa,aAAA,wCAAwC,KAAK,UAAU,KAAK,CAAC;AACrF;AAEA,MAAM,aAAaC,aAAmB,mBAAA,UAAU,mCAAmC;AAGtE,MAAA,iBAAiB,IAAIC,QAAAA,kBAAkB;AAAA,EACnD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,aAAa,KAAK;AACb,QAAA,IAAI,SAASC,QAAA,KAAK,QAAQ;AAC7B,aAAO,IAAI;AAAA,IACZ;AACI,QAAA,IAAI,SAASA,QAAA,KAAK,KAAK;AAC1B,aAAO,OAAO,SAAS,IAAI,OAAO,EAAE;AAAA,IACrC;AACO,WAAA;AAAA,EACR;AACD,CAAC;;;"}
@@ -2,10 +2,10 @@ import { EventType } from "../schema/types.js";
2
2
  import "../schema/dev.graphql.js";
3
3
  import "../schema/system.graphql.js";
4
4
  import { assertNever } from "../utils/assertNever.js";
5
- import { DateTimeType, JSONType } from "@contember/graphql-utils";
5
+ import { createJsonLikeType, DateTimeType, JSONType } from "@contember/graphql-utils";
6
6
  import { GraphQLScalarType, Kind, GraphQLError } from "graphql";
7
7
  class ResolverFactory {
8
- constructor(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver) {
8
+ constructor(stagesQueryResolver, executedMigrationsQueryResolver, migrateMutationResolver, truncateMutationResolver, migrationAlterMutationResolver, eventsQueryResolver, eventOldValuesResolver, schemaQueryResolver) {
9
9
  this.stagesQueryResolver = stagesQueryResolver;
10
10
  this.executedMigrationsQueryResolver = executedMigrationsQueryResolver;
11
11
  this.migrateMutationResolver = migrateMutationResolver;
@@ -13,12 +13,14 @@ class ResolverFactory {
13
13
  this.migrationAlterMutationResolver = migrationAlterMutationResolver;
14
14
  this.eventsQueryResolver = eventsQueryResolver;
15
15
  this.eventOldValuesResolver = eventOldValuesResolver;
16
+ this.schemaQueryResolver = schemaQueryResolver;
16
17
  }
17
18
  create(debugMode) {
18
19
  const resolvers = {
19
20
  DateTime: DateTimeType,
20
21
  Json: JSONType,
21
22
  PrimaryKey: PrimaryKeyType,
23
+ Schema: SchemaType,
22
24
  Event: {
23
25
  __resolveType: (obj) => {
24
26
  switch (obj.type) {
@@ -39,7 +41,8 @@ class ResolverFactory {
39
41
  Query: {
40
42
  stages: this.stagesQueryResolver.stages.bind(this.stagesQueryResolver),
41
43
  executedMigrations: this.executedMigrationsQueryResolver.executedMigrations.bind(this.executedMigrationsQueryResolver),
42
- events: this.eventsQueryResolver.events.bind(this.eventsQueryResolver)
44
+ events: this.eventsQueryResolver.events.bind(this.eventsQueryResolver),
45
+ schema: this.schemaQueryResolver.schema.bind(this.schemaQueryResolver)
43
46
  },
44
47
  Mutation: {
45
48
  migrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver)
@@ -66,6 +69,7 @@ const parseValue = (value) => {
66
69
  }
67
70
  throw new GraphQLError("PrimaryKey cannot represent value: " + JSON.stringify(value));
68
71
  };
72
+ const SchemaType = createJsonLikeType("Schema", "Content schema custom scalar type");
69
73
  const PrimaryKeyType = new GraphQLScalarType({
70
74
  name: "PrimaryKey",
71
75
  description: "PrimaryKey custom scalar type. Can be Int or String",
@@ -1 +1 @@
1
- {"version":3,"file":"ResolverFactory.js","sources":["../../../../../packages/engine-system-api/src/resolvers/ResolverFactory.ts"],"sourcesContent":["import { EventsQueryResolver, ExecutedMigrationsQueryResolver, StagesQueryResolver } from './query'\nimport { Event, EventType, Resolvers } from '../schema'\nimport { assertNever } from '../utils'\nimport { MigrateMutationResolver, MigrationAlterMutationResolver, TruncateMutationResolver } from './mutation'\nimport { DateTimeType, JSONType } from '@contember/graphql-utils'\nimport { EventOldValuesResolver } from './types'\nimport { GraphQLError, GraphQLScalarType, Kind } from 'graphql'\n\nexport class ResolverFactory {\n\tpublic constructor(\n\t\tprivate readonly stagesQueryResolver: StagesQueryResolver,\n\t\tprivate readonly executedMigrationsQueryResolver: ExecutedMigrationsQueryResolver,\n\t\tprivate readonly migrateMutationResolver: MigrateMutationResolver,\n\t\tprivate readonly truncateMutationResolver: TruncateMutationResolver,\n\t\tprivate readonly migrationAlterMutationResolver: MigrationAlterMutationResolver,\n\t\tprivate readonly eventsQueryResolver: EventsQueryResolver,\n\t\tprivate readonly eventOldValuesResolver: EventOldValuesResolver,\n\t) {}\n\n\tcreate(debugMode: boolean): Resolvers {\n\t\tconst resolvers: Resolvers & Required<Pick<Resolvers, 'Mutation'>> = {\n\t\t\tDateTime: DateTimeType,\n\t\t\tJson: JSONType,\n\t\t\tPrimaryKey: PrimaryKeyType,\n\t\t\tEvent: {\n\t\t\t\t__resolveType: (obj: Event) => {\n\t\t\t\t\tswitch (obj.type) {\n\t\t\t\t\t\tcase EventType.Create:\n\t\t\t\t\t\t\treturn 'CreateEvent'\n\t\t\t\t\t\tcase EventType.Update:\n\t\t\t\t\t\t\treturn 'UpdateEvent'\n\t\t\t\t\t\tcase EventType.Delete:\n\t\t\t\t\t\t\treturn 'DeleteEvent'\n\t\t\t\t\t\tcase null:\n\t\t\t\t\t\tcase undefined:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(obj.type)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\tstages: this.stagesQueryResolver.stages.bind(this.stagesQueryResolver),\n\t\t\t\texecutedMigrations: this.executedMigrationsQueryResolver.executedMigrations.bind(this.executedMigrationsQueryResolver),\n\t\t\t\tevents: this.eventsQueryResolver.events.bind(this.eventsQueryResolver),\n\t\t\t},\n\t\t\tMutation: {\n\t\t\t\tmigrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver),\n\t\t\t},\n\t\t\tDeleteEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t\tUpdateEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t}\n\t\tif (debugMode) {\n\t\t\tresolvers.Mutation.truncate = this.truncateMutationResolver.truncate.bind(this.truncateMutationResolver)\n\t\t\tresolvers.Mutation.migrationDelete = this.migrationAlterMutationResolver.migrationDelete.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.migrationModify = this.migrationAlterMutationResolver.migrationModify.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.forceMigrate = this.migrateMutationResolver.migrateForce.bind(this.migrateMutationResolver)\n\t\t}\n\t\treturn resolvers\n\t}\n}\n\nconst parseValue = (value: any) => {\n\tif ((typeof value === 'string' && value !== '') || typeof value === 'number' && isFinite(value) && Math.floor(value) === value) {\n\t\treturn value\n\t}\n\tthrow new GraphQLError('PrimaryKey cannot represent value: ' + JSON.stringify(value))\n}\nexport const PrimaryKeyType = new GraphQLScalarType({\n\tname: 'PrimaryKey',\n\tdescription: 'PrimaryKey custom scalar type. Can be Int or String',\n\tserialize: parseValue,\n\tparseValue: parseValue,\n\tparseLiteral(ast) {\n\t\tif (ast.kind === Kind.STRING) {\n\t\t\treturn ast.value\n\t\t}\n\t\tif (ast.kind === Kind.INT) {\n\t\t\treturn Number.parseInt(ast.value, 10)\n\t\t}\n\t\treturn null\n\t},\n})\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,gBAAgB;AAAA,EACrB,YACW,qBACA,iCACA,yBACA,0BACA,gCACA,qBACA,wBAChB;AAPgB,SAAA,sBAAA;AACA,SAAA,kCAAA;AACA,SAAA,0BAAA;AACA,SAAA,2BAAA;AACA,SAAA,iCAAA;AACA,SAAA,sBAAA;AACA,SAAA,yBAAA;AAAA,EACf;AAAA,EAEH,OAAO,WAA+B;AACrC,UAAM,YAA+D;AAAA,MACpE,UAAU;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,QACN,eAAe,CAAC,QAAe;AAC9B,kBAAQ,IAAI,MAAM;AAAA,YACjB,KAAK,UAAU;AACP,qBAAA;AAAA,YACR,KAAK,UAAU;AACP,qBAAA;AAAA,YACR,KAAK,UAAU;AACP,qBAAA;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AACG,qBAAA;AAAA,YACR;AACQ,qBAAA,YAAY,IAAI,IAAI;AAAA,UAC7B;AAAA,QACD;AAAA,MACD;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,QACrE,oBAAoB,KAAK,gCAAgC,mBAAmB,KAAK,KAAK,+BAA+B;AAAA,QACrH,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,MACtE;AAAA,MACA,UAAU;AAAA,QACT,SAAS,KAAK,wBAAwB,QAAQ,KAAK,KAAK,uBAAuB;AAAA,MAChF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,IAAA;AAED,QAAI,WAAW;AACd,gBAAU,SAAS,WAAW,KAAK,yBAAyB,SAAS,KAAK,KAAK,wBAAwB;AACvG,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,eAAe,KAAK,wBAAwB,aAAa,KAAK,KAAK,uBAAuB;AAAA,IAC9G;AACO,WAAA;AAAA,EACR;AACD;AAEA,MAAM,aAAa,CAAC,UAAgB;AACnC,MAAK,OAAO,UAAU,YAAY,UAAU,MAAO,OAAO,UAAU,YAAY,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,OAAO;AACxH,WAAA;AAAA,EACR;AACA,QAAM,IAAI,aAAa,wCAAwC,KAAK,UAAU,KAAK,CAAC;AACrF;AACa,MAAA,iBAAiB,IAAI,kBAAkB;AAAA,EACnD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,aAAa,KAAK;AACb,QAAA,IAAI,SAAS,KAAK,QAAQ;AAC7B,aAAO,IAAI;AAAA,IACZ;AACI,QAAA,IAAI,SAAS,KAAK,KAAK;AAC1B,aAAO,OAAO,SAAS,IAAI,OAAO,EAAE;AAAA,IACrC;AACO,WAAA;AAAA,EACR;AACD,CAAC;"}
1
+ {"version":3,"file":"ResolverFactory.js","sources":["../../../../../packages/engine-system-api/src/resolvers/ResolverFactory.ts"],"sourcesContent":["import { EventsQueryResolver, ExecutedMigrationsQueryResolver, StagesQueryResolver } from './query'\nimport { Event, EventType, Resolvers } from '../schema'\nimport { assertNever } from '../utils'\nimport { MigrateMutationResolver, MigrationAlterMutationResolver, TruncateMutationResolver } from './mutation'\nimport { DateTimeType, JSONType, createJsonLikeType } from '@contember/graphql-utils'\nimport { EventOldValuesResolver } from './types'\nimport { GraphQLError, GraphQLScalarType, Kind } from 'graphql'\nimport { SchemaQueryResolver } from './query/SchemaQueryResolver'\n\nexport class ResolverFactory {\n\tpublic constructor(\n\t\tprivate readonly stagesQueryResolver: StagesQueryResolver,\n\t\tprivate readonly executedMigrationsQueryResolver: ExecutedMigrationsQueryResolver,\n\t\tprivate readonly migrateMutationResolver: MigrateMutationResolver,\n\t\tprivate readonly truncateMutationResolver: TruncateMutationResolver,\n\t\tprivate readonly migrationAlterMutationResolver: MigrationAlterMutationResolver,\n\t\tprivate readonly eventsQueryResolver: EventsQueryResolver,\n\t\tprivate readonly eventOldValuesResolver: EventOldValuesResolver,\n\t\tprivate readonly schemaQueryResolver: SchemaQueryResolver,\n\t) {}\n\n\tcreate(debugMode: boolean): Resolvers {\n\t\tconst resolvers: Resolvers & Required<Pick<Resolvers, 'Mutation'>> = {\n\t\t\tDateTime: DateTimeType,\n\t\t\tJson: JSONType,\n\t\t\tPrimaryKey: PrimaryKeyType,\n\t\t\tSchema: SchemaType,\n\t\t\tEvent: {\n\t\t\t\t__resolveType: (obj: Event) => {\n\t\t\t\t\tswitch (obj.type) {\n\t\t\t\t\t\tcase EventType.Create:\n\t\t\t\t\t\t\treturn 'CreateEvent'\n\t\t\t\t\t\tcase EventType.Update:\n\t\t\t\t\t\t\treturn 'UpdateEvent'\n\t\t\t\t\t\tcase EventType.Delete:\n\t\t\t\t\t\t\treturn 'DeleteEvent'\n\t\t\t\t\t\tcase null:\n\t\t\t\t\t\tcase undefined:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(obj.type)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\tstages: this.stagesQueryResolver.stages.bind(this.stagesQueryResolver),\n\t\t\t\texecutedMigrations: this.executedMigrationsQueryResolver.executedMigrations.bind(this.executedMigrationsQueryResolver),\n\t\t\t\tevents: this.eventsQueryResolver.events.bind(this.eventsQueryResolver),\n\t\t\t\tschema: this.schemaQueryResolver.schema.bind(this.schemaQueryResolver),\n\t\t\t},\n\t\t\tMutation: {\n\t\t\t\tmigrate: this.migrateMutationResolver.migrate.bind(this.migrateMutationResolver),\n\t\t\t},\n\t\t\tDeleteEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t\tUpdateEvent: {\n\t\t\t\toldValues: this.eventOldValuesResolver.oldValues.bind(this.eventOldValuesResolver),\n\t\t\t},\n\t\t}\n\t\tif (debugMode) {\n\t\t\tresolvers.Mutation.truncate = this.truncateMutationResolver.truncate.bind(this.truncateMutationResolver)\n\t\t\tresolvers.Mutation.migrationDelete = this.migrationAlterMutationResolver.migrationDelete.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.migrationModify = this.migrationAlterMutationResolver.migrationModify.bind(this.migrationAlterMutationResolver)\n\t\t\tresolvers.Mutation.forceMigrate = this.migrateMutationResolver.migrateForce.bind(this.migrateMutationResolver)\n\t\t}\n\t\treturn resolvers\n\t}\n}\n\nconst parseValue = (value: any) => {\n\tif ((typeof value === 'string' && value !== '') || typeof value === 'number' && isFinite(value) && Math.floor(value) === value) {\n\t\treturn value\n\t}\n\tthrow new GraphQLError('PrimaryKey cannot represent value: ' + JSON.stringify(value))\n}\n\nconst SchemaType = createJsonLikeType('Schema', 'Content schema custom scalar type')\n\n\nexport const PrimaryKeyType = new GraphQLScalarType({\n\tname: 'PrimaryKey',\n\tdescription: 'PrimaryKey custom scalar type. Can be Int or String',\n\tserialize: parseValue,\n\tparseValue: parseValue,\n\tparseLiteral(ast) {\n\t\tif (ast.kind === Kind.STRING) {\n\t\t\treturn ast.value\n\t\t}\n\t\tif (ast.kind === Kind.INT) {\n\t\t\treturn Number.parseInt(ast.value, 10)\n\t\t}\n\t\treturn null\n\t},\n})\n"],"names":[],"mappings":";;;;;;AASO,MAAM,gBAAgB;AAAA,EACrB,YACW,qBACA,iCACA,yBACA,0BACA,gCACA,qBACA,wBACA,qBAChB;AARgB,SAAA,sBAAA;AACA,SAAA,kCAAA;AACA,SAAA,0BAAA;AACA,SAAA,2BAAA;AACA,SAAA,iCAAA;AACA,SAAA,sBAAA;AACA,SAAA,yBAAA;AACA,SAAA,sBAAA;AAAA,EACf;AAAA,EAEH,OAAO,WAA+B;AACrC,UAAM,YAA+D;AAAA,MACpE,UAAU;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,OAAO;AAAA,QACN,eAAe,CAAC,QAAe;AAC9B,kBAAQ,IAAI,MAAM;AAAA,YACjB,KAAK,UAAU;AACP,qBAAA;AAAA,YACR,KAAK,UAAU;AACP,qBAAA;AAAA,YACR,KAAK,UAAU;AACP,qBAAA;AAAA,YACR,KAAK;AAAA,YACL,KAAK;AACG,qBAAA;AAAA,YACR;AACQ,qBAAA,YAAY,IAAI,IAAI;AAAA,UAC7B;AAAA,QACD;AAAA,MACD;AAAA,MACA,OAAO;AAAA,QACN,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,QACrE,oBAAoB,KAAK,gCAAgC,mBAAmB,KAAK,KAAK,+BAA+B;AAAA,QACrH,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,QACrE,QAAQ,KAAK,oBAAoB,OAAO,KAAK,KAAK,mBAAmB;AAAA,MACtE;AAAA,MACA,UAAU;AAAA,QACT,SAAS,KAAK,wBAAwB,QAAQ,KAAK,KAAK,uBAAuB;AAAA,MAChF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAClF;AAAA,IAAA;AAED,QAAI,WAAW;AACd,gBAAU,SAAS,WAAW,KAAK,yBAAyB,SAAS,KAAK,KAAK,wBAAwB;AACvG,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,kBAAkB,KAAK,+BAA+B,gBAAgB,KAAK,KAAK,8BAA8B;AACjI,gBAAU,SAAS,eAAe,KAAK,wBAAwB,aAAa,KAAK,KAAK,uBAAuB;AAAA,IAC9G;AACO,WAAA;AAAA,EACR;AACD;AAEA,MAAM,aAAa,CAAC,UAAgB;AACnC,MAAK,OAAO,UAAU,YAAY,UAAU,MAAO,OAAO,UAAU,YAAY,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,OAAO;AACxH,WAAA;AAAA,EACR;AACA,QAAM,IAAI,aAAa,wCAAwC,KAAK,UAAU,KAAK,CAAC;AACrF;AAEA,MAAM,aAAa,mBAAmB,UAAU,mCAAmC;AAGtE,MAAA,iBAAiB,IAAI,kBAAkB;AAAA,EACnD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,aAAa,KAAK;AACb,QAAA,IAAI,SAAS,KAAK,QAAQ;AAC7B,aAAO,IAAI;AAAA,IACZ;AACI,QAAA,IAAI,SAAS,KAAK,KAAK;AAC1B,aAAO,OAAO,SAAS,IAAI,OAAO,EAAE;AAAA,IACrC;AACO,WAAA;AAAA,EACR;AACD,CAAC;"}
@@ -7,15 +7,15 @@ class SystemResolverContextFactory {
7
7
  constructor(authorizator) {
8
8
  this.authorizator = authorizator;
9
9
  }
10
- async create(schema, systemDbContext, project, identity) {
11
- const stagePermissionsFactory = new StagePermissionsFactory.StagePermissionsFactory(schema);
10
+ async create({ getSchema, identity, project, db }) {
11
+ const stagePermissionsFactory = new StagePermissionsFactory.StagePermissionsFactory(getSchema);
12
12
  const loaders = /* @__PURE__ */ new Map();
13
13
  return {
14
14
  project,
15
15
  identity,
16
- schema,
16
+ getSchema,
17
17
  authorizator: this.authorizator,
18
- db: systemDbContext,
18
+ db,
19
19
  requireAccess: async (action, stage, message) => {
20
20
  if (!await this.authorizator.isAllowed(identity, new StageScope.StageScope(stage, stagePermissionsFactory), action)) {
21
21
  throw new graphqlUtils.ForbiddenError(message || "Forbidden");
@@ -26,7 +26,7 @@ class SystemResolverContextFactory {
26
26
  if (loader) {
27
27
  return loader;
28
28
  }
29
- const newLoader = loaderFactory(systemDbContext);
29
+ const newLoader = loaderFactory(db);
30
30
  loaders.set(loaderFactory, newLoader);
31
31
  return newLoader;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SystemResolverContext.cjs","sources":["../../../../../packages/engine-system-api/src/resolvers/SystemResolverContext.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { Schema } from '@contember/schema'\nimport { ForbiddenError } from '@contember/graphql-utils'\nimport { DatabaseContext, Identity, VersionedSchema } from '../model'\nimport { ProjectConfig } from '../types'\nimport { StagePermissionsFactory } from '../model/authorization/StagePermissionsFactory'\nimport { StageScope } from '../model/authorization/StageScope'\nimport { ItemLoader } from '../utils/batchQuery'\n\nexport class SystemResolverContextFactory {\n\tconstructor(\n\t\tprivate readonly authorizator: Authorizator<Identity>,\n\t) {}\n\n\tpublic async create(\n\t\tschema: VersionedSchema,\n\t\tsystemDbContext: DatabaseContext,\n\t\tproject: ProjectConfig,\n\t\tidentity: Identity,\n\t): Promise<SystemResolverContext> {\n\t\tconst stagePermissionsFactory = new StagePermissionsFactory(schema)\n\t\tconst loaders = new Map<LoaderFactory<any, any>, ItemLoader<any, any>>()\n\t\treturn {\n\t\t\tproject,\n\t\t\tidentity,\n\t\t\tschema,\n\t\t\tauthorizator: this.authorizator,\n\t\t\tdb: systemDbContext,\n\t\t\trequireAccess: async (action, stage, message?) => {\n\t\t\t\tif (!(await this.authorizator.isAllowed(identity, new StageScope(stage, stagePermissionsFactory), action))) {\n\t\t\t\t\tthrow new ForbiddenError(message || 'Forbidden')\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetLoader: loaderFactory => {\n\t\t\t\tconst loader = loaders.get(loaderFactory)\n\t\t\t\tif (loader) {\n\t\t\t\t\treturn loader\n\t\t\t\t}\n\t\t\t\tconst newLoader = loaderFactory(systemDbContext)\n\t\t\t\tloaders.set(loaderFactory, newLoader)\n\t\t\t\treturn newLoader\n\t\t\t},\n\t\t}\n\t}\n}\n\nexport type LoaderFactory<Args, Item> = (db: DatabaseContext) => ItemLoader<Args, Item>\n\nexport interface SystemResolverContext {\n\treadonly project: ProjectConfig\n\treadonly schema: Schema\n\treadonly identity: Identity\n\treadonly db: DatabaseContext\n\treadonly authorizator: Authorizator<Identity>\n\treadonly requireAccess: (action: Authorizator.Action, stage: string, message?: string) => Promise<void>\n\treadonly getLoader: <Args, Item>(loaderFactory: LoaderFactory<Args, Item>) => ItemLoader<Args, Item>\n}\n"],"names":["StagePermissionsFactory","StageScope","ForbiddenError"],"mappings":";;;;;AASO,MAAM,6BAA6B;AAAA,EACzC,YACkB,cAChB;AADgB,SAAA,eAAA;AAAA,EACf;AAAA,EAEH,MAAa,OACZ,QACA,iBACA,SACA,UACiC;AAC3B,UAAA,0BAA0B,IAAIA,gDAAwB,MAAM;AAC5D,UAAA,8BAAc;AACb,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,KAAK;AAAA,MACnB,IAAI;AAAA,MACJ,eAAe,OAAO,QAAQ,OAAO,YAAa;AACjD,YAAI,CAAE,MAAM,KAAK,aAAa,UAAU,UAAU,IAAIC,WAAAA,WAAW,OAAO,uBAAuB,GAAG,MAAM,GAAI;AACrG,gBAAA,IAAIC,aAAe,eAAA,WAAW,WAAW;AAAA,QAChD;AAAA,MACD;AAAA,MACA,WAAW,CAAiB,kBAAA;AACrB,cAAA,SAAS,QAAQ,IAAI,aAAa;AACxC,YAAI,QAAQ;AACJ,iBAAA;AAAA,QACR;AACM,cAAA,YAAY,cAAc,eAAe;AACvC,gBAAA,IAAI,eAAe,SAAS;AAC7B,eAAA;AAAA,MACR;AAAA,IAAA;AAAA,EAEF;AACD;;"}
1
+ {"version":3,"file":"SystemResolverContext.cjs","sources":["../../../../../packages/engine-system-api/src/resolvers/SystemResolverContext.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { ForbiddenError } from '@contember/graphql-utils'\nimport { DatabaseContext, Identity } from '../model'\nimport { ProjectConfig } from '../types'\nimport { StagePermissionsFactory } from '../model/authorization/StagePermissionsFactory'\nimport { StageScope } from '../model/authorization/StageScope'\nimport { ItemLoader } from '../utils/batchQuery'\nimport { SchemaGetter } from '../model/SchemaGetter'\n\nexport class SystemResolverContextFactory {\n\tconstructor(\n\t\tprivate readonly authorizator: Authorizator<Identity>,\n\t) {}\n\n\tpublic async create({ getSchema, identity, project, db }: Pick<SystemResolverContext, 'getSchema' | 'db' | 'identity' | 'project'>): Promise<SystemResolverContext> {\n\t\tconst stagePermissionsFactory = new StagePermissionsFactory(getSchema)\n\t\tconst loaders = new Map<LoaderFactory<any, any>, ItemLoader<any, any>>()\n\t\treturn {\n\t\t\tproject,\n\t\t\tidentity,\n\t\t\tgetSchema,\n\t\t\tauthorizator: this.authorizator,\n\t\t\tdb,\n\t\t\trequireAccess: async (action, stage, message?) => {\n\t\t\t\tif (!(await this.authorizator.isAllowed(identity, new StageScope(stage, stagePermissionsFactory), action))) {\n\t\t\t\t\tthrow new ForbiddenError(message || 'Forbidden')\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetLoader: loaderFactory => {\n\t\t\t\tconst loader = loaders.get(loaderFactory)\n\t\t\t\tif (loader) {\n\t\t\t\t\treturn loader\n\t\t\t\t}\n\t\t\t\tconst newLoader = loaderFactory(db)\n\t\t\t\tloaders.set(loaderFactory, newLoader)\n\t\t\t\treturn newLoader\n\t\t\t},\n\t\t}\n\t}\n}\n\nexport type LoaderFactory<Args, Item> = (db: DatabaseContext) => ItemLoader<Args, Item>\n\nexport interface SystemResolverContext {\n\treadonly project: ProjectConfig\n\treadonly getSchema: SchemaGetter\n\treadonly identity: Identity\n\treadonly db: DatabaseContext\n\treadonly authorizator: Authorizator<Identity>\n\treadonly requireAccess: (action: Authorizator.Action, stage: string, message?: string) => Promise<void>\n\treadonly getLoader: <Args, Item>(loaderFactory: LoaderFactory<Args, Item>) => ItemLoader<Args, Item>\n}\n"],"names":["StagePermissionsFactory","StageScope","ForbiddenError"],"mappings":";;;;;AASO,MAAM,6BAA6B;AAAA,EACzC,YACkB,cAChB;AADgB,SAAA,eAAA;AAAA,EACf;AAAA,EAEH,MAAa,OAAO,EAAE,WAAW,UAAU,SAAS,MAAgH;AAC7J,UAAA,0BAA0B,IAAIA,gDAAwB,SAAS;AAC/D,UAAA,8BAAc;AACb,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,KAAK;AAAA,MACnB;AAAA,MACA,eAAe,OAAO,QAAQ,OAAO,YAAa;AACjD,YAAI,CAAE,MAAM,KAAK,aAAa,UAAU,UAAU,IAAIC,WAAAA,WAAW,OAAO,uBAAuB,GAAG,MAAM,GAAI;AACrG,gBAAA,IAAIC,aAAe,eAAA,WAAW,WAAW;AAAA,QAChD;AAAA,MACD;AAAA,MACA,WAAW,CAAiB,kBAAA;AACrB,cAAA,SAAS,QAAQ,IAAI,aAAa;AACxC,YAAI,QAAQ;AACJ,iBAAA;AAAA,QACR;AACM,cAAA,YAAY,cAAc,EAAE;AAC1B,gBAAA,IAAI,eAAe,SAAS;AAC7B,eAAA;AAAA,MACR;AAAA,IAAA;AAAA,EAEF;AACD;;"}
@@ -5,15 +5,15 @@ class SystemResolverContextFactory {
5
5
  constructor(authorizator) {
6
6
  this.authorizator = authorizator;
7
7
  }
8
- async create(schema, systemDbContext, project, identity) {
9
- const stagePermissionsFactory = new StagePermissionsFactory(schema);
8
+ async create({ getSchema, identity, project, db }) {
9
+ const stagePermissionsFactory = new StagePermissionsFactory(getSchema);
10
10
  const loaders = /* @__PURE__ */ new Map();
11
11
  return {
12
12
  project,
13
13
  identity,
14
- schema,
14
+ getSchema,
15
15
  authorizator: this.authorizator,
16
- db: systemDbContext,
16
+ db,
17
17
  requireAccess: async (action, stage, message) => {
18
18
  if (!await this.authorizator.isAllowed(identity, new StageScope(stage, stagePermissionsFactory), action)) {
19
19
  throw new ForbiddenError(message || "Forbidden");
@@ -24,7 +24,7 @@ class SystemResolverContextFactory {
24
24
  if (loader) {
25
25
  return loader;
26
26
  }
27
- const newLoader = loaderFactory(systemDbContext);
27
+ const newLoader = loaderFactory(db);
28
28
  loaders.set(loaderFactory, newLoader);
29
29
  return newLoader;
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SystemResolverContext.js","sources":["../../../../../packages/engine-system-api/src/resolvers/SystemResolverContext.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { Schema } from '@contember/schema'\nimport { ForbiddenError } from '@contember/graphql-utils'\nimport { DatabaseContext, Identity, VersionedSchema } from '../model'\nimport { ProjectConfig } from '../types'\nimport { StagePermissionsFactory } from '../model/authorization/StagePermissionsFactory'\nimport { StageScope } from '../model/authorization/StageScope'\nimport { ItemLoader } from '../utils/batchQuery'\n\nexport class SystemResolverContextFactory {\n\tconstructor(\n\t\tprivate readonly authorizator: Authorizator<Identity>,\n\t) {}\n\n\tpublic async create(\n\t\tschema: VersionedSchema,\n\t\tsystemDbContext: DatabaseContext,\n\t\tproject: ProjectConfig,\n\t\tidentity: Identity,\n\t): Promise<SystemResolverContext> {\n\t\tconst stagePermissionsFactory = new StagePermissionsFactory(schema)\n\t\tconst loaders = new Map<LoaderFactory<any, any>, ItemLoader<any, any>>()\n\t\treturn {\n\t\t\tproject,\n\t\t\tidentity,\n\t\t\tschema,\n\t\t\tauthorizator: this.authorizator,\n\t\t\tdb: systemDbContext,\n\t\t\trequireAccess: async (action, stage, message?) => {\n\t\t\t\tif (!(await this.authorizator.isAllowed(identity, new StageScope(stage, stagePermissionsFactory), action))) {\n\t\t\t\t\tthrow new ForbiddenError(message || 'Forbidden')\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetLoader: loaderFactory => {\n\t\t\t\tconst loader = loaders.get(loaderFactory)\n\t\t\t\tif (loader) {\n\t\t\t\t\treturn loader\n\t\t\t\t}\n\t\t\t\tconst newLoader = loaderFactory(systemDbContext)\n\t\t\t\tloaders.set(loaderFactory, newLoader)\n\t\t\t\treturn newLoader\n\t\t\t},\n\t\t}\n\t}\n}\n\nexport type LoaderFactory<Args, Item> = (db: DatabaseContext) => ItemLoader<Args, Item>\n\nexport interface SystemResolverContext {\n\treadonly project: ProjectConfig\n\treadonly schema: Schema\n\treadonly identity: Identity\n\treadonly db: DatabaseContext\n\treadonly authorizator: Authorizator<Identity>\n\treadonly requireAccess: (action: Authorizator.Action, stage: string, message?: string) => Promise<void>\n\treadonly getLoader: <Args, Item>(loaderFactory: LoaderFactory<Args, Item>) => ItemLoader<Args, Item>\n}\n"],"names":[],"mappings":";;;AASO,MAAM,6BAA6B;AAAA,EACzC,YACkB,cAChB;AADgB,SAAA,eAAA;AAAA,EACf;AAAA,EAEH,MAAa,OACZ,QACA,iBACA,SACA,UACiC;AAC3B,UAAA,0BAA0B,IAAI,wBAAwB,MAAM;AAC5D,UAAA,8BAAc;AACb,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,KAAK;AAAA,MACnB,IAAI;AAAA,MACJ,eAAe,OAAO,QAAQ,OAAO,YAAa;AACjD,YAAI,CAAE,MAAM,KAAK,aAAa,UAAU,UAAU,IAAI,WAAW,OAAO,uBAAuB,GAAG,MAAM,GAAI;AACrG,gBAAA,IAAI,eAAe,WAAW,WAAW;AAAA,QAChD;AAAA,MACD;AAAA,MACA,WAAW,CAAiB,kBAAA;AACrB,cAAA,SAAS,QAAQ,IAAI,aAAa;AACxC,YAAI,QAAQ;AACJ,iBAAA;AAAA,QACR;AACM,cAAA,YAAY,cAAc,eAAe;AACvC,gBAAA,IAAI,eAAe,SAAS;AAC7B,eAAA;AAAA,MACR;AAAA,IAAA;AAAA,EAEF;AACD;"}
1
+ {"version":3,"file":"SystemResolverContext.js","sources":["../../../../../packages/engine-system-api/src/resolvers/SystemResolverContext.ts"],"sourcesContent":["import { Authorizator } from '@contember/authorization'\nimport { ForbiddenError } from '@contember/graphql-utils'\nimport { DatabaseContext, Identity } from '../model'\nimport { ProjectConfig } from '../types'\nimport { StagePermissionsFactory } from '../model/authorization/StagePermissionsFactory'\nimport { StageScope } from '../model/authorization/StageScope'\nimport { ItemLoader } from '../utils/batchQuery'\nimport { SchemaGetter } from '../model/SchemaGetter'\n\nexport class SystemResolverContextFactory {\n\tconstructor(\n\t\tprivate readonly authorizator: Authorizator<Identity>,\n\t) {}\n\n\tpublic async create({ getSchema, identity, project, db }: Pick<SystemResolverContext, 'getSchema' | 'db' | 'identity' | 'project'>): Promise<SystemResolverContext> {\n\t\tconst stagePermissionsFactory = new StagePermissionsFactory(getSchema)\n\t\tconst loaders = new Map<LoaderFactory<any, any>, ItemLoader<any, any>>()\n\t\treturn {\n\t\t\tproject,\n\t\t\tidentity,\n\t\t\tgetSchema,\n\t\t\tauthorizator: this.authorizator,\n\t\t\tdb,\n\t\t\trequireAccess: async (action, stage, message?) => {\n\t\t\t\tif (!(await this.authorizator.isAllowed(identity, new StageScope(stage, stagePermissionsFactory), action))) {\n\t\t\t\t\tthrow new ForbiddenError(message || 'Forbidden')\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetLoader: loaderFactory => {\n\t\t\t\tconst loader = loaders.get(loaderFactory)\n\t\t\t\tif (loader) {\n\t\t\t\t\treturn loader\n\t\t\t\t}\n\t\t\t\tconst newLoader = loaderFactory(db)\n\t\t\t\tloaders.set(loaderFactory, newLoader)\n\t\t\t\treturn newLoader\n\t\t\t},\n\t\t}\n\t}\n}\n\nexport type LoaderFactory<Args, Item> = (db: DatabaseContext) => ItemLoader<Args, Item>\n\nexport interface SystemResolverContext {\n\treadonly project: ProjectConfig\n\treadonly getSchema: SchemaGetter\n\treadonly identity: Identity\n\treadonly db: DatabaseContext\n\treadonly authorizator: Authorizator<Identity>\n\treadonly requireAccess: (action: Authorizator.Action, stage: string, message?: string) => Promise<void>\n\treadonly getLoader: <Args, Item>(loaderFactory: LoaderFactory<Args, Item>) => ItemLoader<Args, Item>\n}\n"],"names":[],"mappings":";;;AASO,MAAM,6BAA6B;AAAA,EACzC,YACkB,cAChB;AADgB,SAAA,eAAA;AAAA,EACf;AAAA,EAEH,MAAa,OAAO,EAAE,WAAW,UAAU,SAAS,MAAgH;AAC7J,UAAA,0BAA0B,IAAI,wBAAwB,SAAS;AAC/D,UAAA,8BAAc;AACb,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,KAAK;AAAA,MACnB;AAAA,MACA,eAAe,OAAO,QAAQ,OAAO,YAAa;AACjD,YAAI,CAAE,MAAM,KAAK,aAAa,UAAU,UAAU,IAAI,WAAW,OAAO,uBAAuB,GAAG,MAAM,GAAI;AACrG,gBAAA,IAAI,eAAe,WAAW,WAAW;AAAA,QAChD;AAAA,MACD;AAAA,MACA,WAAW,CAAiB,kBAAA;AACrB,cAAA,SAAS,QAAQ,IAAI,aAAa;AACxC,YAAI,QAAQ;AACJ,iBAAA;AAAA,QACR;AACM,cAAA,YAAY,cAAc,EAAE;AAC1B,gBAAA,IAAI,eAAe,SAAS;AAC7B,eAAA;AAAA,MACR;AAAA,IAAA;AAAA,EAEF;AACD;"}
@@ -12,7 +12,6 @@ require("@contember/schema-utils");
12
12
  const assertNever = require("../../utils/assertNever.cjs");
13
13
  const StagesQuery = require("../../model/queries/stages/StagesQuery.cjs");
14
14
  const ProjectMigrator = require("../../model/migrations/ProjectMigrator.cjs");
15
- require("../../model/migrations/SchemaVersionBuilder.cjs");
16
15
  require("@contember/logger");
17
16
  const graphqlUtils = require("@contember/graphql-utils");
18
17
  const pg_lock_id = 1597474138739147;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateMutationResolver.cjs","sources":["../../../../../../packages/engine-system-api/src/resolvers/mutation/MigrateMutationResolver.ts"],"sourcesContent":["import { GraphQLResolveInfo } from 'graphql'\nimport { SystemResolverContext } from '../SystemResolverContext'\nimport { MutationResolver } from '../Resolver'\nimport { MigrateResponse, MigrationType, MutationMigrateArgs } from '../../schema'\nimport { Migration } from '@contember/schema-migrations'\nimport { AuthorizationActions, MigrationError, ProjectMigrator, StagesQuery } from '../../model'\nimport { MigrationInput } from '../../model/migrations/MigrationInput'\nimport { UserInputError } from '@contember/graphql-utils'\nimport { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { assertNever } from '../../utils'\n\nconst pg_lock_id = 1597474138739147\n\nexport class MigrateMutationResolver implements MutationResolver<'migrate'> {\n\tconstructor(private readonly projectMigrator: ProjectMigrator) {}\n\n\tasync migrateForce(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<MigrateResponse> {\n\t\treturn this.migrate(parent, args, context, info, true)\n\t}\n\n\tasync migrate(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t\tforce = false,\n\t): Promise<MigrateResponse> {\n\t\tconst migrations = this.parseMigrationInput(args)\n\n\t\treturn context.db.locked(pg_lock_id, db => db.transaction(async trx => {\n\t\t\tconst stages = await trx.queryHandler.fetch(new StagesQuery())\n\t\t\tfor (const stage of stages) {\n\t\t\t\tawait context.requireAccess(AuthorizationActions.PROJECT_MIGRATE, stage.slug)\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.projectMigrator.migrate({\n\t\t\t\t\tdb: trx,\n\t\t\t\t\tproject: context.project,\n\t\t\t\t\tidentity: context.identity,\n\t\t\t\t\tstages,\n\t\t\t\t\tmigrationsToExecute: migrations,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tignoreOrder: force,\n\t\t\t\t\t\tskipExecuted: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof MigrationError) {\n\t\t\t\t\tawait trx.client.connection.rollback()\n\t\t\t\t\tconst error = {\n\t\t\t\t\t\tcode: e.code,\n\t\t\t\t\t\tmigration: e.version,\n\t\t\t\t\t\tdeveloperMessage: e.message,\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: [error],\n\t\t\t\t\t\terror,\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t}\n\t\t}))\n\t}\n\n\tprivate parseMigrationInput(args: MutationMigrateArgs): MigrationInput[] {\n\t\treturn args.migrations.map((it): MigrationInput => {\n\t\t\tif (!it.type) {\n\t\t\t\tif (!it.modifications || !it.formatVersion) {\n\t\t\t\t\tthrow new UserInputError('invalid migration format')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tformatVersion: it.formatVersion,\n\t\t\t\t\tmodifications: it.modifications as Migration.Modification[],\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tskippedErrors: (it.skippedErrors as SchemaValidatorSkippedErrors[]) ?? undefined,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Schema) {\n\t\t\t\tif (!it.schemaMigration) {\n\t\t\t\t\tthrow new UserInputError('schemaMigration must be defined for SCHEMA type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\t...(it.schemaMigration as Omit<Migration, 'name' | 'version'>),\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Content) {\n\t\t\t\tif (!it.contentMigration) {\n\t\t\t\t\tthrow new UserInputError('contentMigration must be defined for CONTENT type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'content',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tqueries: it.contentMigration.map(it => ({\n\t\t\t\t\t\tquery: it.query,\n\t\t\t\t\t\tstage: it.stage ?? undefined,\n\t\t\t\t\t\tvariables: it.variables ?? undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn assertNever(it.type)\n\t\t})\n\t}\n}\n"],"names":["StagesQuery","AuthorizationActions","MigrationError","UserInputError","MigrationType","it","assertNever"],"mappings":";;;;;;;;;;;;;;;;;AAWA,MAAM,aAAa;AAEZ,MAAM,wBAA+D;AAAA,EAC3E,YAA6B,iBAAkC;AAAlC,SAAA,kBAAA;AAAA,EAAmC;AAAA,EAEhE,MAAM,aACL,QACA,MACA,SACA,MAC2B;AAC3B,WAAO,KAAK,QAAQ,QAAQ,MAAM,SAAS,MAAM,IAAI;AAAA,EACtD;AAAA,EAEA,MAAM,QACL,QACA,MACA,SACA,MACA,QAAQ,OACmB;AACrB,UAAA,aAAa,KAAK,oBAAoB,IAAI;AAEzC,WAAA,QAAQ,GAAG,OAAO,YAAY,QAAM,GAAG,YAAY,OAAM,QAAO;AACtE,YAAM,SAAS,MAAM,IAAI,aAAa,MAAM,IAAIA,yBAAa;AAC7D,iBAAW,SAAS,QAAQ;AAC3B,cAAM,QAAQ,cAAcC,qBAAAA,qBAAqB,iBAAiB,MAAM,IAAI;AAAA,MAC7E;AACI,UAAA;AACG,cAAA,KAAK,gBAAgB,QAAQ;AAAA,UAClC,IAAI;AAAA,UACJ,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA,qBAAqB;AAAA,UACrB,SAAS;AAAA,YACR,aAAa;AAAA,YACb,cAAc;AAAA,UACf;AAAA,QAAA,CACA;AAAA,eACO,GAAG;AACX,YAAI,aAAaC,gBAAAA,gBAAgB;AAC1B,gBAAA,IAAI,OAAO,WAAW,SAAS;AACrC,gBAAM,QAAQ;AAAA,YACb,MAAM,EAAE;AAAA,YACR,WAAW,EAAE;AAAA,YACb,kBAAkB,EAAE;AAAA,UAAA;AAEd,iBAAA;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ,CAAC,KAAK;AAAA,YACd;AAAA,UAAA;AAAA,QACD,OACM;AACA,gBAAA;AAAA,QACP;AAAA,MACD;AACO,aAAA;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEV,CAAA,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,MAA6C;AACxE,WAAO,KAAK,WAAW,IAAI,CAAC,OAAuB;AAC9C,UAAA,CAAC,GAAG,MAAM;AACb,YAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,eAAe;AACrC,gBAAA,IAAIC,aAAAA,eAAe,0BAA0B;AAAA,QACpD;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,eAAe,GAAG;AAAA,UAClB,eAAe,GAAG;AAAA,UAClB,SAAS,GAAG;AAAA,UACZ,MAAM,GAAG;AAAA,UACT,eAAgB,GAAG,iBAAoD;AAAA,QAAA;AAAA,MAEzE;AACI,UAAA,GAAG,SAASC,MAAA,cAAc,QAAQ;AACjC,YAAA,CAAC,GAAG,iBAAiB;AAClB,gBAAA,IAAID,aAAAA,eAAe,iDAAiD;AAAA,QAC3E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,GAAI,GAAG;AAAA,QAAA;AAAA,MAET;AACI,UAAA,GAAG,SAASC,MAAA,cAAc,SAAS;AAClC,YAAA,CAAC,GAAG,kBAAkB;AACnB,gBAAA,IAAID,aAAAA,eAAe,mDAAmD;AAAA,QAC7E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,SAAS,GAAG,iBAAiB,IAAI,CAAAE,SAAO;AAAA,YACvC,OAAOA,IAAG;AAAA,YACV,OAAOA,IAAG,SAAS;AAAA,YACnB,WAAWA,IAAG,aAAa;AAAA,UAAA,EAC1B;AAAA,QAAA;AAAA,MAEJ;AACO,aAAAC,YAAA,YAAY,GAAG,IAAI;AAAA,IAAA,CAC1B;AAAA,EACF;AACD;;"}
1
+ {"version":3,"file":"MigrateMutationResolver.cjs","sources":["../../../../../../packages/engine-system-api/src/resolvers/mutation/MigrateMutationResolver.ts"],"sourcesContent":["import { GraphQLResolveInfo } from 'graphql'\nimport { SystemResolverContext } from '../SystemResolverContext'\nimport { MutationResolver } from '../Resolver'\nimport { MigrateResponse, MigrationType, MutationMigrateArgs } from '../../schema'\nimport { Migration } from '@contember/schema-migrations'\nimport { AuthorizationActions, MigrationError, ProjectMigrator, StagesQuery } from '../../model'\nimport { MigrationInput } from '../../model/migrations/MigrationInput'\nimport { UserInputError } from '@contember/graphql-utils'\nimport { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { assertNever } from '../../utils'\n\nconst pg_lock_id = 1597474138739147\n\nexport class MigrateMutationResolver implements MutationResolver<'migrate'> {\n\tconstructor(private readonly projectMigrator: ProjectMigrator) {}\n\n\tasync migrateForce(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<MigrateResponse> {\n\t\treturn this.migrate(parent, args, context, info, true)\n\t}\n\n\tasync migrate(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t\tforce = false,\n\t): Promise<MigrateResponse> {\n\t\tconst migrations = this.parseMigrationInput(args)\n\n\t\treturn context.db.locked(pg_lock_id, db => db.transaction(async trx => {\n\t\t\tconst stages = await trx.queryHandler.fetch(new StagesQuery())\n\t\t\tfor (const stage of stages) {\n\t\t\t\tawait context.requireAccess(AuthorizationActions.PROJECT_MIGRATE, stage.slug)\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.projectMigrator.migrate({\n\t\t\t\t\tdb: trx,\n\t\t\t\t\tproject: context.project,\n\t\t\t\t\tidentity: context.identity,\n\t\t\t\t\tstages,\n\t\t\t\t\tmigrationsToExecute: migrations,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tignoreOrder: force,\n\t\t\t\t\t\tskipExecuted: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof MigrationError) {\n\t\t\t\t\tawait trx.client.connection.rollback()\n\t\t\t\t\tconst error = {\n\t\t\t\t\t\tcode: e.code,\n\t\t\t\t\t\tmigration: e.version,\n\t\t\t\t\t\tdeveloperMessage: e.message,\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: [error],\n\t\t\t\t\t\terror,\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t}\n\t\t}))\n\t}\n\n\tprivate parseMigrationInput(args: MutationMigrateArgs): MigrationInput[] {\n\t\treturn args.migrations.map((it): MigrationInput => {\n\t\t\tif (!it.type) {\n\t\t\t\tif (!it.modifications || !it.formatVersion) {\n\t\t\t\t\tthrow new UserInputError('invalid migration format')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tformatVersion: it.formatVersion,\n\t\t\t\t\tmodifications: it.modifications as Migration.Modification[],\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tskippedErrors: (it.skippedErrors as SchemaValidatorSkippedErrors[]) ?? undefined,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Schema) {\n\t\t\t\tif (!it.schemaMigration) {\n\t\t\t\t\tthrow new UserInputError('schemaMigration must be defined for SCHEMA type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\t...(it.schemaMigration as Omit<Migration, 'name' | 'version'>),\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Content) {\n\t\t\t\tif (!it.contentMigration) {\n\t\t\t\t\tthrow new UserInputError('contentMigration must be defined for CONTENT type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'content',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tqueries: it.contentMigration.map(it => ({\n\t\t\t\t\t\tquery: it.query,\n\t\t\t\t\t\tstage: it.stage ?? undefined,\n\t\t\t\t\t\tvariables: it.variables ?? undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn assertNever(it.type)\n\t\t})\n\t}\n}\n"],"names":["StagesQuery","AuthorizationActions","MigrationError","UserInputError","MigrationType","it","assertNever"],"mappings":";;;;;;;;;;;;;;;;AAWA,MAAM,aAAa;AAEZ,MAAM,wBAA+D;AAAA,EAC3E,YAA6B,iBAAkC;AAAlC,SAAA,kBAAA;AAAA,EAAmC;AAAA,EAEhE,MAAM,aACL,QACA,MACA,SACA,MAC2B;AAC3B,WAAO,KAAK,QAAQ,QAAQ,MAAM,SAAS,MAAM,IAAI;AAAA,EACtD;AAAA,EAEA,MAAM,QACL,QACA,MACA,SACA,MACA,QAAQ,OACmB;AACrB,UAAA,aAAa,KAAK,oBAAoB,IAAI;AAEzC,WAAA,QAAQ,GAAG,OAAO,YAAY,QAAM,GAAG,YAAY,OAAM,QAAO;AACtE,YAAM,SAAS,MAAM,IAAI,aAAa,MAAM,IAAIA,yBAAa;AAC7D,iBAAW,SAAS,QAAQ;AAC3B,cAAM,QAAQ,cAAcC,qBAAAA,qBAAqB,iBAAiB,MAAM,IAAI;AAAA,MAC7E;AACI,UAAA;AACG,cAAA,KAAK,gBAAgB,QAAQ;AAAA,UAClC,IAAI;AAAA,UACJ,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA,qBAAqB;AAAA,UACrB,SAAS;AAAA,YACR,aAAa;AAAA,YACb,cAAc;AAAA,UACf;AAAA,QAAA,CACA;AAAA,eACO,GAAG;AACX,YAAI,aAAaC,gBAAAA,gBAAgB;AAC1B,gBAAA,IAAI,OAAO,WAAW,SAAS;AACrC,gBAAM,QAAQ;AAAA,YACb,MAAM,EAAE;AAAA,YACR,WAAW,EAAE;AAAA,YACb,kBAAkB,EAAE;AAAA,UAAA;AAEd,iBAAA;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ,CAAC,KAAK;AAAA,YACd;AAAA,UAAA;AAAA,QACD,OACM;AACA,gBAAA;AAAA,QACP;AAAA,MACD;AACO,aAAA;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEV,CAAA,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,MAA6C;AACxE,WAAO,KAAK,WAAW,IAAI,CAAC,OAAuB;AAC9C,UAAA,CAAC,GAAG,MAAM;AACb,YAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,eAAe;AACrC,gBAAA,IAAIC,aAAAA,eAAe,0BAA0B;AAAA,QACpD;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,eAAe,GAAG;AAAA,UAClB,eAAe,GAAG;AAAA,UAClB,SAAS,GAAG;AAAA,UACZ,MAAM,GAAG;AAAA,UACT,eAAgB,GAAG,iBAAoD;AAAA,QAAA;AAAA,MAEzE;AACI,UAAA,GAAG,SAASC,MAAA,cAAc,QAAQ;AACjC,YAAA,CAAC,GAAG,iBAAiB;AAClB,gBAAA,IAAID,aAAAA,eAAe,iDAAiD;AAAA,QAC3E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,GAAI,GAAG;AAAA,QAAA;AAAA,MAET;AACI,UAAA,GAAG,SAASC,MAAA,cAAc,SAAS;AAClC,YAAA,CAAC,GAAG,kBAAkB;AACnB,gBAAA,IAAID,aAAAA,eAAe,mDAAmD;AAAA,QAC7E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,SAAS,GAAG,iBAAiB,IAAI,CAAAE,SAAO;AAAA,YACvC,OAAOA,IAAG;AAAA,YACV,OAAOA,IAAG,SAAS;AAAA,YACnB,WAAWA,IAAG,aAAa;AAAA,UAAA,EAC1B;AAAA,QAAA;AAAA,MAEJ;AACO,aAAAC,YAAA,YAAY,GAAG,IAAI;AAAA,IAAA,CAC1B;AAAA,EACF;AACD;;"}
@@ -10,7 +10,6 @@ import "@contember/schema-utils";
10
10
  import { assertNever } from "../../utils/assertNever.js";
11
11
  import { StagesQuery } from "../../model/queries/stages/StagesQuery.js";
12
12
  import { MigrationError } from "../../model/migrations/ProjectMigrator.js";
13
- import "../../model/migrations/SchemaVersionBuilder.js";
14
13
  import "@contember/logger";
15
14
  import { UserInputError } from "@contember/graphql-utils";
16
15
  const pg_lock_id = 1597474138739147;
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateMutationResolver.js","sources":["../../../../../../packages/engine-system-api/src/resolvers/mutation/MigrateMutationResolver.ts"],"sourcesContent":["import { GraphQLResolveInfo } from 'graphql'\nimport { SystemResolverContext } from '../SystemResolverContext'\nimport { MutationResolver } from '../Resolver'\nimport { MigrateResponse, MigrationType, MutationMigrateArgs } from '../../schema'\nimport { Migration } from '@contember/schema-migrations'\nimport { AuthorizationActions, MigrationError, ProjectMigrator, StagesQuery } from '../../model'\nimport { MigrationInput } from '../../model/migrations/MigrationInput'\nimport { UserInputError } from '@contember/graphql-utils'\nimport { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { assertNever } from '../../utils'\n\nconst pg_lock_id = 1597474138739147\n\nexport class MigrateMutationResolver implements MutationResolver<'migrate'> {\n\tconstructor(private readonly projectMigrator: ProjectMigrator) {}\n\n\tasync migrateForce(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<MigrateResponse> {\n\t\treturn this.migrate(parent, args, context, info, true)\n\t}\n\n\tasync migrate(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t\tforce = false,\n\t): Promise<MigrateResponse> {\n\t\tconst migrations = this.parseMigrationInput(args)\n\n\t\treturn context.db.locked(pg_lock_id, db => db.transaction(async trx => {\n\t\t\tconst stages = await trx.queryHandler.fetch(new StagesQuery())\n\t\t\tfor (const stage of stages) {\n\t\t\t\tawait context.requireAccess(AuthorizationActions.PROJECT_MIGRATE, stage.slug)\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.projectMigrator.migrate({\n\t\t\t\t\tdb: trx,\n\t\t\t\t\tproject: context.project,\n\t\t\t\t\tidentity: context.identity,\n\t\t\t\t\tstages,\n\t\t\t\t\tmigrationsToExecute: migrations,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tignoreOrder: force,\n\t\t\t\t\t\tskipExecuted: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof MigrationError) {\n\t\t\t\t\tawait trx.client.connection.rollback()\n\t\t\t\t\tconst error = {\n\t\t\t\t\t\tcode: e.code,\n\t\t\t\t\t\tmigration: e.version,\n\t\t\t\t\t\tdeveloperMessage: e.message,\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: [error],\n\t\t\t\t\t\terror,\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t}\n\t\t}))\n\t}\n\n\tprivate parseMigrationInput(args: MutationMigrateArgs): MigrationInput[] {\n\t\treturn args.migrations.map((it): MigrationInput => {\n\t\t\tif (!it.type) {\n\t\t\t\tif (!it.modifications || !it.formatVersion) {\n\t\t\t\t\tthrow new UserInputError('invalid migration format')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tformatVersion: it.formatVersion,\n\t\t\t\t\tmodifications: it.modifications as Migration.Modification[],\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tskippedErrors: (it.skippedErrors as SchemaValidatorSkippedErrors[]) ?? undefined,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Schema) {\n\t\t\t\tif (!it.schemaMigration) {\n\t\t\t\t\tthrow new UserInputError('schemaMigration must be defined for SCHEMA type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\t...(it.schemaMigration as Omit<Migration, 'name' | 'version'>),\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Content) {\n\t\t\t\tif (!it.contentMigration) {\n\t\t\t\t\tthrow new UserInputError('contentMigration must be defined for CONTENT type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'content',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tqueries: it.contentMigration.map(it => ({\n\t\t\t\t\t\tquery: it.query,\n\t\t\t\t\t\tstage: it.stage ?? undefined,\n\t\t\t\t\t\tvariables: it.variables ?? undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn assertNever(it.type)\n\t\t})\n\t}\n}\n"],"names":["it"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,aAAa;AAEZ,MAAM,wBAA+D;AAAA,EAC3E,YAA6B,iBAAkC;AAAlC,SAAA,kBAAA;AAAA,EAAmC;AAAA,EAEhE,MAAM,aACL,QACA,MACA,SACA,MAC2B;AAC3B,WAAO,KAAK,QAAQ,QAAQ,MAAM,SAAS,MAAM,IAAI;AAAA,EACtD;AAAA,EAEA,MAAM,QACL,QACA,MACA,SACA,MACA,QAAQ,OACmB;AACrB,UAAA,aAAa,KAAK,oBAAoB,IAAI;AAEzC,WAAA,QAAQ,GAAG,OAAO,YAAY,QAAM,GAAG,YAAY,OAAM,QAAO;AACtE,YAAM,SAAS,MAAM,IAAI,aAAa,MAAM,IAAI,aAAa;AAC7D,iBAAW,SAAS,QAAQ;AAC3B,cAAM,QAAQ,cAAc,qBAAqB,iBAAiB,MAAM,IAAI;AAAA,MAC7E;AACI,UAAA;AACG,cAAA,KAAK,gBAAgB,QAAQ;AAAA,UAClC,IAAI;AAAA,UACJ,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA,qBAAqB;AAAA,UACrB,SAAS;AAAA,YACR,aAAa;AAAA,YACb,cAAc;AAAA,UACf;AAAA,QAAA,CACA;AAAA,eACO,GAAG;AACX,YAAI,aAAa,gBAAgB;AAC1B,gBAAA,IAAI,OAAO,WAAW,SAAS;AACrC,gBAAM,QAAQ;AAAA,YACb,MAAM,EAAE;AAAA,YACR,WAAW,EAAE;AAAA,YACb,kBAAkB,EAAE;AAAA,UAAA;AAEd,iBAAA;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ,CAAC,KAAK;AAAA,YACd;AAAA,UAAA;AAAA,QACD,OACM;AACA,gBAAA;AAAA,QACP;AAAA,MACD;AACO,aAAA;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEV,CAAA,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,MAA6C;AACxE,WAAO,KAAK,WAAW,IAAI,CAAC,OAAuB;AAC9C,UAAA,CAAC,GAAG,MAAM;AACb,YAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,eAAe;AACrC,gBAAA,IAAI,eAAe,0BAA0B;AAAA,QACpD;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,eAAe,GAAG;AAAA,UAClB,eAAe,GAAG;AAAA,UAClB,SAAS,GAAG;AAAA,UACZ,MAAM,GAAG;AAAA,UACT,eAAgB,GAAG,iBAAoD;AAAA,QAAA;AAAA,MAEzE;AACI,UAAA,GAAG,SAAS,cAAc,QAAQ;AACjC,YAAA,CAAC,GAAG,iBAAiB;AAClB,gBAAA,IAAI,eAAe,iDAAiD;AAAA,QAC3E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,GAAI,GAAG;AAAA,QAAA;AAAA,MAET;AACI,UAAA,GAAG,SAAS,cAAc,SAAS;AAClC,YAAA,CAAC,GAAG,kBAAkB;AACnB,gBAAA,IAAI,eAAe,mDAAmD;AAAA,QAC7E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,SAAS,GAAG,iBAAiB,IAAI,CAAAA,SAAO;AAAA,YACvC,OAAOA,IAAG;AAAA,YACV,OAAOA,IAAG,SAAS;AAAA,YACnB,WAAWA,IAAG,aAAa;AAAA,UAAA,EAC1B;AAAA,QAAA;AAAA,MAEJ;AACO,aAAA,YAAY,GAAG,IAAI;AAAA,IAAA,CAC1B;AAAA,EACF;AACD;"}
1
+ {"version":3,"file":"MigrateMutationResolver.js","sources":["../../../../../../packages/engine-system-api/src/resolvers/mutation/MigrateMutationResolver.ts"],"sourcesContent":["import { GraphQLResolveInfo } from 'graphql'\nimport { SystemResolverContext } from '../SystemResolverContext'\nimport { MutationResolver } from '../Resolver'\nimport { MigrateResponse, MigrationType, MutationMigrateArgs } from '../../schema'\nimport { Migration } from '@contember/schema-migrations'\nimport { AuthorizationActions, MigrationError, ProjectMigrator, StagesQuery } from '../../model'\nimport { MigrationInput } from '../../model/migrations/MigrationInput'\nimport { UserInputError } from '@contember/graphql-utils'\nimport { SchemaValidatorSkippedErrors } from '@contember/schema-utils'\nimport { assertNever } from '../../utils'\n\nconst pg_lock_id = 1597474138739147\n\nexport class MigrateMutationResolver implements MutationResolver<'migrate'> {\n\tconstructor(private readonly projectMigrator: ProjectMigrator) {}\n\n\tasync migrateForce(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<MigrateResponse> {\n\t\treturn this.migrate(parent, args, context, info, true)\n\t}\n\n\tasync migrate(\n\t\tparent: any,\n\t\targs: MutationMigrateArgs,\n\t\tcontext: SystemResolverContext,\n\t\tinfo: GraphQLResolveInfo,\n\t\tforce = false,\n\t): Promise<MigrateResponse> {\n\t\tconst migrations = this.parseMigrationInput(args)\n\n\t\treturn context.db.locked(pg_lock_id, db => db.transaction(async trx => {\n\t\t\tconst stages = await trx.queryHandler.fetch(new StagesQuery())\n\t\t\tfor (const stage of stages) {\n\t\t\t\tawait context.requireAccess(AuthorizationActions.PROJECT_MIGRATE, stage.slug)\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait this.projectMigrator.migrate({\n\t\t\t\t\tdb: trx,\n\t\t\t\t\tproject: context.project,\n\t\t\t\t\tidentity: context.identity,\n\t\t\t\t\tstages,\n\t\t\t\t\tmigrationsToExecute: migrations,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tignoreOrder: force,\n\t\t\t\t\t\tskipExecuted: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (e instanceof MigrationError) {\n\t\t\t\t\tawait trx.client.connection.rollback()\n\t\t\t\t\tconst error = {\n\t\t\t\t\t\tcode: e.code,\n\t\t\t\t\t\tmigration: e.version,\n\t\t\t\t\t\tdeveloperMessage: e.message,\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: [error],\n\t\t\t\t\t\terror,\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t}\n\t\t}))\n\t}\n\n\tprivate parseMigrationInput(args: MutationMigrateArgs): MigrationInput[] {\n\t\treturn args.migrations.map((it): MigrationInput => {\n\t\t\tif (!it.type) {\n\t\t\t\tif (!it.modifications || !it.formatVersion) {\n\t\t\t\t\tthrow new UserInputError('invalid migration format')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tformatVersion: it.formatVersion,\n\t\t\t\t\tmodifications: it.modifications as Migration.Modification[],\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tskippedErrors: (it.skippedErrors as SchemaValidatorSkippedErrors[]) ?? undefined,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Schema) {\n\t\t\t\tif (!it.schemaMigration) {\n\t\t\t\t\tthrow new UserInputError('schemaMigration must be defined for SCHEMA type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'schema',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\t...(it.schemaMigration as Omit<Migration, 'name' | 'version'>),\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (it.type === MigrationType.Content) {\n\t\t\t\tif (!it.contentMigration) {\n\t\t\t\t\tthrow new UserInputError('contentMigration must be defined for CONTENT type')\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'content',\n\t\t\t\t\tname: it.name,\n\t\t\t\t\tversion: it.version,\n\t\t\t\t\tqueries: it.contentMigration.map(it => ({\n\t\t\t\t\t\tquery: it.query,\n\t\t\t\t\t\tstage: it.stage ?? undefined,\n\t\t\t\t\t\tvariables: it.variables ?? undefined,\n\t\t\t\t\t})),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn assertNever(it.type)\n\t\t})\n\t}\n}\n"],"names":["it"],"mappings":";;;;;;;;;;;;;;AAWA,MAAM,aAAa;AAEZ,MAAM,wBAA+D;AAAA,EAC3E,YAA6B,iBAAkC;AAAlC,SAAA,kBAAA;AAAA,EAAmC;AAAA,EAEhE,MAAM,aACL,QACA,MACA,SACA,MAC2B;AAC3B,WAAO,KAAK,QAAQ,QAAQ,MAAM,SAAS,MAAM,IAAI;AAAA,EACtD;AAAA,EAEA,MAAM,QACL,QACA,MACA,SACA,MACA,QAAQ,OACmB;AACrB,UAAA,aAAa,KAAK,oBAAoB,IAAI;AAEzC,WAAA,QAAQ,GAAG,OAAO,YAAY,QAAM,GAAG,YAAY,OAAM,QAAO;AACtE,YAAM,SAAS,MAAM,IAAI,aAAa,MAAM,IAAI,aAAa;AAC7D,iBAAW,SAAS,QAAQ;AAC3B,cAAM,QAAQ,cAAc,qBAAqB,iBAAiB,MAAM,IAAI;AAAA,MAC7E;AACI,UAAA;AACG,cAAA,KAAK,gBAAgB,QAAQ;AAAA,UAClC,IAAI;AAAA,UACJ,SAAS,QAAQ;AAAA,UACjB,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA,qBAAqB;AAAA,UACrB,SAAS;AAAA,YACR,aAAa;AAAA,YACb,cAAc;AAAA,UACf;AAAA,QAAA,CACA;AAAA,eACO,GAAG;AACX,YAAI,aAAa,gBAAgB;AAC1B,gBAAA,IAAI,OAAO,WAAW,SAAS;AACrC,gBAAM,QAAQ;AAAA,YACb,MAAM,EAAE;AAAA,YACR,WAAW,EAAE;AAAA,YACb,kBAAkB,EAAE;AAAA,UAAA;AAEd,iBAAA;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ,CAAC,KAAK;AAAA,YACd;AAAA,UAAA;AAAA,QACD,OACM;AACA,gBAAA;AAAA,QACP;AAAA,MACD;AACO,aAAA;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ,CAAC;AAAA,MAAA;AAAA,IAEV,CAAA,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,MAA6C;AACxE,WAAO,KAAK,WAAW,IAAI,CAAC,OAAuB;AAC9C,UAAA,CAAC,GAAG,MAAM;AACb,YAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,eAAe;AACrC,gBAAA,IAAI,eAAe,0BAA0B;AAAA,QACpD;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,eAAe,GAAG;AAAA,UAClB,eAAe,GAAG;AAAA,UAClB,SAAS,GAAG;AAAA,UACZ,MAAM,GAAG;AAAA,UACT,eAAgB,GAAG,iBAAoD;AAAA,QAAA;AAAA,MAEzE;AACI,UAAA,GAAG,SAAS,cAAc,QAAQ;AACjC,YAAA,CAAC,GAAG,iBAAiB;AAClB,gBAAA,IAAI,eAAe,iDAAiD;AAAA,QAC3E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,GAAI,GAAG;AAAA,QAAA;AAAA,MAET;AACI,UAAA,GAAG,SAAS,cAAc,SAAS;AAClC,YAAA,CAAC,GAAG,kBAAkB;AACnB,gBAAA,IAAI,eAAe,mDAAmD;AAAA,QAC7E;AACO,eAAA;AAAA,UACN,MAAM;AAAA,UACN,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,SAAS,GAAG,iBAAiB,IAAI,CAAAA,SAAO;AAAA,YACvC,OAAOA,IAAG;AAAA,YACV,OAAOA,IAAG,SAAS;AAAA,YACnB,WAAWA,IAAG,aAAa;AAAA,UAAA,EAC1B;AAAA,QAAA;AAAA,MAEJ;AACO,aAAA,YAAY,GAAG,IAAI;AAAA,IAAA,CAC1B;AAAA,EACF;AACD;"}
@@ -11,7 +11,6 @@ require("@contember/schema-migrations");
11
11
  require("@contember/schema-utils");
12
12
  const MigrationAlterer = require("../../model/migrations/MigrationAlterer.cjs");
13
13
  require("@contember/logger");
14
- require("../../model/migrations/SchemaVersionBuilder.cjs");
15
14
  class MigrationAlterMutationResolver {
16
15
  constructor(migrationAlterer) {
17
16
  this.migrationAlterer = migrationAlterer;