@contember/engine-actions 2.1.0-alpha.2 → 2.1.0-alpha.21

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 (151) hide show
  1. package/dist/development/index.cjs +10 -5
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +10 -5
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs +2 -0
  6. package/dist/development/src/authorization/ActionsAuthorizationActions.cjs.map +1 -1
  7. package/dist/development/src/authorization/ActionsAuthorizationActions.js +2 -0
  8. package/dist/development/src/authorization/ActionsAuthorizationActions.js.map +1 -1
  9. package/dist/development/src/dispatch/EventsRepository.cjs +17 -4
  10. package/dist/development/src/dispatch/EventsRepository.cjs.map +1 -1
  11. package/dist/development/src/dispatch/EventsRepository.js +17 -4
  12. package/dist/development/src/dispatch/EventsRepository.js.map +1 -1
  13. package/dist/development/src/dispatch/ProjectDispatcher.cjs +2 -2
  14. package/dist/development/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  15. package/dist/development/src/dispatch/ProjectDispatcher.js +1 -1
  16. package/dist/development/src/dispatch/ProjectDispatcher.js.map +1 -1
  17. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs +1 -0
  18. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  19. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js +1 -0
  20. package/dist/development/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  21. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs +7 -2
  22. package/dist/development/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  23. package/dist/development/src/graphql/resolvers/ResolversFactory.js +7 -2
  24. package/dist/development/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  25. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs +21 -0
  26. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -0
  27. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js +21 -0
  28. package/dist/development/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -0
  29. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs +19 -0
  30. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -0
  31. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js +19 -0
  32. package/dist/development/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -0
  33. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs +10 -0
  34. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  35. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js +10 -0
  36. package/dist/development/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  37. package/dist/development/src/graphql/schema/actions.graphql.cjs +11 -0
  38. package/dist/development/src/graphql/schema/actions.graphql.cjs.map +1 -1
  39. package/dist/development/src/graphql/schema/actions.graphql.js +11 -0
  40. package/dist/development/src/graphql/schema/actions.graphql.js.map +1 -1
  41. package/dist/development/src/model/EventByIdQuery.cjs +17 -0
  42. package/dist/development/src/model/EventByIdQuery.cjs.map +1 -0
  43. package/dist/development/src/model/EventByIdQuery.js +17 -0
  44. package/dist/development/src/model/EventByIdQuery.js.map +1 -0
  45. package/dist/development/src/triggers/TriggerPayloadPersister.cjs +2 -3
  46. package/dist/development/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  47. package/dist/development/src/triggers/TriggerPayloadPersister.js +2 -3
  48. package/dist/development/src/triggers/TriggerPayloadPersister.js.map +1 -1
  49. package/dist/development/src/utils/notifyChannel.cjs +9 -0
  50. package/dist/development/src/utils/notifyChannel.cjs.map +1 -0
  51. package/dist/development/src/utils/notifyChannel.js +9 -0
  52. package/dist/development/src/utils/notifyChannel.js.map +1 -0
  53. package/dist/production/index.cjs +10 -5
  54. package/dist/production/index.cjs.map +1 -1
  55. package/dist/production/index.js +10 -5
  56. package/dist/production/index.js.map +1 -1
  57. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs +2 -0
  58. package/dist/production/src/authorization/ActionsAuthorizationActions.cjs.map +1 -1
  59. package/dist/production/src/authorization/ActionsAuthorizationActions.js +2 -0
  60. package/dist/production/src/authorization/ActionsAuthorizationActions.js.map +1 -1
  61. package/dist/production/src/dispatch/EventsRepository.cjs +17 -4
  62. package/dist/production/src/dispatch/EventsRepository.cjs.map +1 -1
  63. package/dist/production/src/dispatch/EventsRepository.js +17 -4
  64. package/dist/production/src/dispatch/EventsRepository.js.map +1 -1
  65. package/dist/production/src/dispatch/ProjectDispatcher.cjs +2 -2
  66. package/dist/production/src/dispatch/ProjectDispatcher.cjs.map +1 -1
  67. package/dist/production/src/dispatch/ProjectDispatcher.js +1 -1
  68. package/dist/production/src/dispatch/ProjectDispatcher.js.map +1 -1
  69. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs +1 -0
  70. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.cjs.map +1 -1
  71. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js +1 -0
  72. package/dist/production/src/graphql/http/ActionsApiMiddlewareFactory.js.map +1 -1
  73. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs +7 -2
  74. package/dist/production/src/graphql/resolvers/ResolversFactory.cjs.map +1 -1
  75. package/dist/production/src/graphql/resolvers/ResolversFactory.js +7 -2
  76. package/dist/production/src/graphql/resolvers/ResolversFactory.js.map +1 -1
  77. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs +21 -0
  78. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.cjs.map +1 -0
  79. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js +21 -0
  80. package/dist/production/src/graphql/resolvers/mutation/RetryEventMutationResolver.js.map +1 -0
  81. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs +19 -0
  82. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.cjs.map +1 -0
  83. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js +19 -0
  84. package/dist/production/src/graphql/resolvers/mutation/StopEventMutationResolver.js.map +1 -0
  85. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs +10 -0
  86. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.cjs.map +1 -1
  87. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js +10 -0
  88. package/dist/production/src/graphql/resolvers/query/EventsQueryResolver.js.map +1 -1
  89. package/dist/production/src/graphql/schema/actions.graphql.cjs +11 -0
  90. package/dist/production/src/graphql/schema/actions.graphql.cjs.map +1 -1
  91. package/dist/production/src/graphql/schema/actions.graphql.js +11 -0
  92. package/dist/production/src/graphql/schema/actions.graphql.js.map +1 -1
  93. package/dist/production/src/model/EventByIdQuery.cjs +17 -0
  94. package/dist/production/src/model/EventByIdQuery.cjs.map +1 -0
  95. package/dist/production/src/model/EventByIdQuery.js +17 -0
  96. package/dist/production/src/model/EventByIdQuery.js.map +1 -0
  97. package/dist/production/src/triggers/TriggerPayloadPersister.cjs +2 -3
  98. package/dist/production/src/triggers/TriggerPayloadPersister.cjs.map +1 -1
  99. package/dist/production/src/triggers/TriggerPayloadPersister.js +2 -3
  100. package/dist/production/src/triggers/TriggerPayloadPersister.js.map +1 -1
  101. package/dist/production/src/utils/notifyChannel.cjs +9 -0
  102. package/dist/production/src/utils/notifyChannel.cjs.map +1 -0
  103. package/dist/production/src/utils/notifyChannel.js +9 -0
  104. package/dist/production/src/utils/notifyChannel.js.map +1 -0
  105. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  106. package/dist/types/authorization/ActionsAuthorizationActions.d.ts +10 -0
  107. package/dist/types/authorization/ActionsAuthorizationActions.d.ts.map +1 -1
  108. package/dist/types/dispatch/EventsRepository.d.ts +2 -1
  109. package/dist/types/dispatch/EventsRepository.d.ts.map +1 -1
  110. package/dist/types/graphql/http/ActionsApiMiddlewareFactory.d.ts.map +1 -1
  111. package/dist/types/graphql/resolvers/ActionsContext.d.ts +3 -0
  112. package/dist/types/graphql/resolvers/ActionsContext.d.ts.map +1 -1
  113. package/dist/types/graphql/resolvers/ResolversFactory.d.ts +4 -2
  114. package/dist/types/graphql/resolvers/ResolversFactory.d.ts.map +1 -1
  115. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts +11 -0
  116. package/dist/types/graphql/resolvers/mutation/RetryEventMutationResolver.d.ts.map +1 -0
  117. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts +11 -0
  118. package/dist/types/graphql/resolvers/mutation/StopEventMutationResolver.d.ts.map +1 -0
  119. package/dist/types/graphql/resolvers/mutation/index.d.ts +2 -0
  120. package/dist/types/graphql/resolvers/mutation/index.d.ts.map +1 -1
  121. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts +3 -0
  122. package/dist/types/graphql/resolvers/query/EventsQueryResolver.d.ts.map +1 -1
  123. package/dist/types/graphql/schema/actions.graphql.d.ts.map +1 -1
  124. package/dist/types/graphql/schema/index.d.ts +39 -2
  125. package/dist/types/graphql/schema/index.d.ts.map +1 -1
  126. package/dist/types/index.d.ts.map +1 -1
  127. package/dist/types/model/EventByIdQuery.d.ts +8 -0
  128. package/dist/types/model/EventByIdQuery.d.ts.map +1 -0
  129. package/dist/types/triggers/TriggerPayloadPersister.d.ts +0 -1
  130. package/dist/types/triggers/TriggerPayloadPersister.d.ts.map +1 -1
  131. package/dist/types/tsconfig.tsbuildinfo +1 -1
  132. package/dist/types/utils/notifyChannel.d.ts +4 -0
  133. package/dist/types/utils/notifyChannel.d.ts.map +1 -0
  134. package/graphql.codegen.yml +2 -2
  135. package/package.json +15 -15
  136. package/src/authorization/ActionsAuthorizationActions.ts +2 -0
  137. package/src/dispatch/EventsRepository.ts +24 -5
  138. package/src/dispatch/ProjectDispatcher.ts +1 -1
  139. package/src/graphql/http/ActionsApiMiddlewareFactory.ts +1 -0
  140. package/src/graphql/resolvers/ActionsContext.ts +1 -0
  141. package/src/graphql/resolvers/ResolversFactory.ts +6 -1
  142. package/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts +22 -0
  143. package/src/graphql/resolvers/mutation/StopEventMutationResolver.ts +19 -0
  144. package/src/graphql/resolvers/mutation/index.ts +2 -0
  145. package/src/graphql/resolvers/query/EventsQueryResolver.ts +11 -0
  146. package/src/graphql/schema/actions.graphql.ts +11 -0
  147. package/src/graphql/schema/index.ts +48 -1
  148. package/src/index.ts +9 -5
  149. package/src/model/EventByIdQuery.ts +21 -0
  150. package/src/triggers/TriggerPayloadPersister.ts +3 -2
  151. package/src/utils/notifyChannel.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ResolversFactory.js","sources":["../../../../../../packages/engine-actions/src/graphql/resolvers/ResolversFactory.ts"],"sourcesContent":["import { DateTimeType, JSONType, UuidType } from '@contember/graphql-utils'\nimport { Resolvers } from '../schema'\nimport { EventsQueryResolver } from './query'\nimport { ProcessBatchMutationResolver, SetVariablesMutationResolver } from './mutation'\nimport { ActionsContext } from './ActionsContext'\nimport { VariablesQueryResolver } from './query/VariablesQueryResolver'\n\nexport class ResolversFactory {\n\tconstructor(\n\t\tprivate readonly eventsQueryResolver: EventsQueryResolver,\n\t\tprivate readonly processBatchMutationResolver: ProcessBatchMutationResolver,\n\t\tprivate readonly variablesQueryResolver: VariablesQueryResolver,\n\t\tprivate readonly setVariablesMutationResolver: SetVariablesMutationResolver,\n\t) {\n\t}\n\n\tcreate(): Resolvers {\n\t\tconst resolvers: Resolvers<ActionsContext> & { Mutation: Required<Resolvers<ActionsContext>['Mutation']> } & { Query: Required<Resolvers<ActionsContext>['Query']> } = {\n\t\t\tJson: JSONType,\n\t\t\tDateTime: DateTimeType,\n\t\t\tUuid: UuidType,\n\t\t\tMutation: {\n\t\t\t\tprocessBatch: this.processBatchMutationResolver.processBatch.bind(this.processBatchMutationResolver),\n\t\t\t\tsetVariables: this.setVariablesMutationResolver.setVariables.bind(this.setVariablesMutationResolver),\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\teventsInProcessing: this.eventsQueryResolver.eventsInProcessing.bind(this.eventsQueryResolver),\n\t\t\t\teventsToProcess: this.eventsQueryResolver.eventsToProcess.bind(this.eventsQueryResolver),\n\t\t\t\tfailedEvents: this.eventsQueryResolver.failedEvents.bind(this.eventsQueryResolver),\n\t\t\t\tvariables: this.variablesQueryResolver.variables.bind(this.variablesQueryResolver),\n\t\t\t},\n\t\t}\n\t\treturn resolvers\n\t}\n}\n"],"names":[],"mappings":";AAOO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,qBACA,8BACA,wBACA,8BAChB;AAJgB,SAAA,sBAAA;AACA,SAAA,+BAAA;AACA,SAAA,yBAAA;AACA,SAAA,+BAAA;AAAA,EAAA;AAAA,EAIlB,SAAoB;AACnB,UAAM,YAAiK;AAAA,MACtK,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA,QACT,cAAc,KAAK,6BAA6B,aAAa,KAAK,KAAK,4BAA4B;AAAA,QACnG,cAAc,KAAK,6BAA6B,aAAa,KAAK,KAAK,4BAA4B;AAAA,MACpG;AAAA,MACA,OAAO;AAAA,QACN,oBAAoB,KAAK,oBAAoB,mBAAmB,KAAK,KAAK,mBAAmB;AAAA,QAC7F,iBAAiB,KAAK,oBAAoB,gBAAgB,KAAK,KAAK,mBAAmB;AAAA,QACvF,cAAc,KAAK,oBAAoB,aAAa,KAAK,KAAK,mBAAmB;AAAA,QACjF,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAAA;AAAA,IAEnF;AACO,WAAA;AAAA,EAAA;AAET;"}
1
+ {"version":3,"file":"ResolversFactory.js","sources":["../../../../../../packages/engine-actions/src/graphql/resolvers/ResolversFactory.ts"],"sourcesContent":["import { DateTimeType, JSONType, UuidType } from '@contember/graphql-utils'\nimport { Resolvers } from '../schema'\nimport { EventsQueryResolver } from './query'\nimport { ProcessBatchMutationResolver, RetryEventMutationResolver, SetVariablesMutationResolver, StopEventMutationResolver } from './mutation'\nimport { ActionsContext } from './ActionsContext'\nimport { VariablesQueryResolver } from './query/VariablesQueryResolver'\n\nexport class ResolversFactory {\n\tconstructor(\n\t\tprivate readonly eventsQueryResolver: EventsQueryResolver,\n\t\tprivate readonly processBatchMutationResolver: ProcessBatchMutationResolver,\n\t\tprivate readonly variablesQueryResolver: VariablesQueryResolver,\n\t\tprivate readonly setVariablesMutationResolver: SetVariablesMutationResolver,\n\t\tprivate readonly retryEventMutationResolver: RetryEventMutationResolver,\n\t\tprivate readonly stopEventMutationResolver: StopEventMutationResolver,\n\t) {\n\t}\n\n\tcreate(): Resolvers {\n\t\tconst resolvers: Resolvers<ActionsContext> & { Mutation: Required<Resolvers<ActionsContext>['Mutation']> } & { Query: Required<Resolvers<ActionsContext>['Query']> } = {\n\t\t\tJson: JSONType,\n\t\t\tDateTime: DateTimeType,\n\t\t\tUuid: UuidType,\n\t\t\tMutation: {\n\t\t\t\tprocessBatch: this.processBatchMutationResolver.processBatch.bind(this.processBatchMutationResolver),\n\t\t\t\tsetVariables: this.setVariablesMutationResolver.setVariables.bind(this.setVariablesMutationResolver),\n\t\t\t\tretryEvent: this.retryEventMutationResolver.retryEvent.bind(this.retryEventMutationResolver),\n\t\t\t\tstopEvent: this.stopEventMutationResolver.stopEvent.bind(this.stopEventMutationResolver),\n\t\t\t},\n\t\t\tQuery: {\n\t\t\t\teventsInProcessing: this.eventsQueryResolver.eventsInProcessing.bind(this.eventsQueryResolver),\n\t\t\t\teventsToProcess: this.eventsQueryResolver.eventsToProcess.bind(this.eventsQueryResolver),\n\t\t\t\tfailedEvents: this.eventsQueryResolver.failedEvents.bind(this.eventsQueryResolver),\n\t\t\t\tevent: this.eventsQueryResolver.event.bind(this.eventsQueryResolver),\n\t\t\t\tvariables: this.variablesQueryResolver.variables.bind(this.variablesQueryResolver),\n\t\t\t},\n\t\t}\n\t\treturn resolvers\n\t}\n}\n"],"names":[],"mappings":";AAOO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,qBACA,8BACA,wBACA,8BACA,4BACA,2BAChB;AANgB,SAAA,sBAAA;AACA,SAAA,+BAAA;AACA,SAAA,yBAAA;AACA,SAAA,+BAAA;AACA,SAAA,6BAAA;AACA,SAAA,4BAAA;AAAA,EAAA;AAAA,EAIlB,SAAoB;AACnB,UAAM,YAAiK;AAAA,MACtK,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA,QACT,cAAc,KAAK,6BAA6B,aAAa,KAAK,KAAK,4BAA4B;AAAA,QACnG,cAAc,KAAK,6BAA6B,aAAa,KAAK,KAAK,4BAA4B;AAAA,QACnG,YAAY,KAAK,2BAA2B,WAAW,KAAK,KAAK,0BAA0B;AAAA,QAC3F,WAAW,KAAK,0BAA0B,UAAU,KAAK,KAAK,yBAAyB;AAAA,MACxF;AAAA,MACA,OAAO;AAAA,QACN,oBAAoB,KAAK,oBAAoB,mBAAmB,KAAK,KAAK,mBAAmB;AAAA,QAC7F,iBAAiB,KAAK,oBAAoB,gBAAgB,KAAK,KAAK,mBAAmB;AAAA,QACvF,cAAc,KAAK,oBAAoB,aAAa,KAAK,KAAK,mBAAmB;AAAA,QACjF,OAAO,KAAK,oBAAoB,MAAM,KAAK,KAAK,mBAAmB;AAAA,QACnE,WAAW,KAAK,uBAAuB,UAAU,KAAK,KAAK,sBAAsB;AAAA,MAAA;AAAA,IAEnF;AACO,WAAA;AAAA,EAAA;AAET;"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ActionsAuthorizationActions = require("../../../authorization/ActionsAuthorizationActions.cjs");
4
+ require("@contember/authorization");
5
+ require("@contember/schema");
6
+ const notifyChannel = require("../../../utils/notifyChannel.cjs");
7
+ class RetryEventMutationResolver {
8
+ constructor(eventsRepository) {
9
+ this.eventsRepository = eventsRepository;
10
+ }
11
+ async retryEvent(parent, args, ctx) {
12
+ await ctx.requireAccess(ActionsAuthorizationActions.ActionsAuthorizationActions.EVENTS_RETRY);
13
+ await this.eventsRepository.requeue(ctx.db.client, [args.id]);
14
+ await notifyChannel.notify(ctx.db.client, ctx.project.slug);
15
+ return {
16
+ ok: true
17
+ };
18
+ }
19
+ }
20
+ exports.RetryEventMutationResolver = RetryEventMutationResolver;
21
+ //# sourceMappingURL=RetryEventMutationResolver.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryEventMutationResolver.cjs","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts"],"sourcesContent":["import { MutationResolvers, MutationRetryEventArgs } from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { ActionsAuthorizationActions } from '../../../authorization'\nimport { EventsRepository } from '../../../dispatch/EventsRepository'\nimport { notify } from '../../../utils/notifyChannel'\n\nexport class RetryEventMutationResolver implements MutationResolvers<ActionsContext> {\n\tconstructor(\n\t\tprivate readonly eventsRepository: EventsRepository,\n\t) {\n\t}\n\tasync retryEvent(parent: unknown, args: MutationRetryEventArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_RETRY)\n\n\t\tawait this.eventsRepository.requeue(ctx.db.client, [args.id])\n\t\tawait notify(ctx.db.client, ctx.project.slug)\n\n\t\treturn {\n\t\t\tok: true,\n\t\t}\n\t}\n}\n"],"names":["ActionsAuthorizationActions","notify"],"mappings":";;;;;;AAMO,MAAM,2BAAwE;AAAA,EACpF,YACkB,kBAChB;AADgB,SAAA,mBAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,WAAW,QAAiB,MAA8B,KAAqB;AAC9E,UAAA,IAAI,cAAcA,4BAAA,4BAA4B,YAAY;AAE1D,UAAA,KAAK,iBAAiB,QAAQ,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC5D,UAAMC,cAAAA,OAAO,IAAI,GAAG,QAAQ,IAAI,QAAQ,IAAI;AAErC,WAAA;AAAA,MACN,IAAI;AAAA,IACL;AAAA,EAAA;AAEF;;"}
@@ -0,0 +1,21 @@
1
+ import { ActionsAuthorizationActions } from "../../../authorization/ActionsAuthorizationActions.js";
2
+ import "@contember/authorization";
3
+ import "@contember/schema";
4
+ import { notify } from "../../../utils/notifyChannel.js";
5
+ class RetryEventMutationResolver {
6
+ constructor(eventsRepository) {
7
+ this.eventsRepository = eventsRepository;
8
+ }
9
+ async retryEvent(parent, args, ctx) {
10
+ await ctx.requireAccess(ActionsAuthorizationActions.EVENTS_RETRY);
11
+ await this.eventsRepository.requeue(ctx.db.client, [args.id]);
12
+ await notify(ctx.db.client, ctx.project.slug);
13
+ return {
14
+ ok: true
15
+ };
16
+ }
17
+ }
18
+ export {
19
+ RetryEventMutationResolver
20
+ };
21
+ //# sourceMappingURL=RetryEventMutationResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryEventMutationResolver.js","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/mutation/RetryEventMutationResolver.ts"],"sourcesContent":["import { MutationResolvers, MutationRetryEventArgs } from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { ActionsAuthorizationActions } from '../../../authorization'\nimport { EventsRepository } from '../../../dispatch/EventsRepository'\nimport { notify } from '../../../utils/notifyChannel'\n\nexport class RetryEventMutationResolver implements MutationResolvers<ActionsContext> {\n\tconstructor(\n\t\tprivate readonly eventsRepository: EventsRepository,\n\t) {\n\t}\n\tasync retryEvent(parent: unknown, args: MutationRetryEventArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_RETRY)\n\n\t\tawait this.eventsRepository.requeue(ctx.db.client, [args.id])\n\t\tawait notify(ctx.db.client, ctx.project.slug)\n\n\t\treturn {\n\t\t\tok: true,\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;;AAMO,MAAM,2BAAwE;AAAA,EACpF,YACkB,kBAChB;AADgB,SAAA,mBAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,WAAW,QAAiB,MAA8B,KAAqB;AAC9E,UAAA,IAAI,cAAc,4BAA4B,YAAY;AAE1D,UAAA,KAAK,iBAAiB,QAAQ,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC5D,UAAM,OAAO,IAAI,GAAG,QAAQ,IAAI,QAAQ,IAAI;AAErC,WAAA;AAAA,MACN,IAAI;AAAA,IACL;AAAA,EAAA;AAEF;"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ActionsAuthorizationActions = require("../../../authorization/ActionsAuthorizationActions.cjs");
4
+ require("@contember/authorization");
5
+ require("@contember/schema");
6
+ class StopEventMutationResolver {
7
+ constructor(eventsRepository) {
8
+ this.eventsRepository = eventsRepository;
9
+ }
10
+ async stopEvent(parent, args, ctx) {
11
+ await ctx.requireAccess(ActionsAuthorizationActions.ActionsAuthorizationActions.EVENTS_STOP);
12
+ await this.eventsRepository.markStopped(ctx.db.client, [args.id]);
13
+ return {
14
+ ok: true
15
+ };
16
+ }
17
+ }
18
+ exports.StopEventMutationResolver = StopEventMutationResolver;
19
+ //# sourceMappingURL=StopEventMutationResolver.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StopEventMutationResolver.cjs","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/mutation/StopEventMutationResolver.ts"],"sourcesContent":["import { MutationResolvers, MutationRetryEventArgs } from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { ActionsAuthorizationActions } from '../../../authorization'\nimport { EventsRepository } from '../../../dispatch/EventsRepository'\n\nexport class StopEventMutationResolver implements MutationResolvers<ActionsContext> {\n\tconstructor(\n\t\tprivate readonly eventsRepository: EventsRepository,\n\t) {\n\t}\n\tasync stopEvent(parent: unknown, args: MutationRetryEventArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_STOP)\n\n\t\tawait this.eventsRepository.markStopped(ctx.db.client, [args.id])\n\t\treturn {\n\t\t\tok: true,\n\t\t}\n\t}\n}\n"],"names":["ActionsAuthorizationActions"],"mappings":";;;;;AAKO,MAAM,0BAAuE;AAAA,EACnF,YACkB,kBAChB;AADgB,SAAA,mBAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,UAAU,QAAiB,MAA8B,KAAqB;AAC7E,UAAA,IAAI,cAAcA,4BAAA,4BAA4B,WAAW;AAEzD,UAAA,KAAK,iBAAiB,YAAY,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzD,WAAA;AAAA,MACN,IAAI;AAAA,IACL;AAAA,EAAA;AAEF;;"}
@@ -0,0 +1,19 @@
1
+ import { ActionsAuthorizationActions } from "../../../authorization/ActionsAuthorizationActions.js";
2
+ import "@contember/authorization";
3
+ import "@contember/schema";
4
+ class StopEventMutationResolver {
5
+ constructor(eventsRepository) {
6
+ this.eventsRepository = eventsRepository;
7
+ }
8
+ async stopEvent(parent, args, ctx) {
9
+ await ctx.requireAccess(ActionsAuthorizationActions.EVENTS_STOP);
10
+ await this.eventsRepository.markStopped(ctx.db.client, [args.id]);
11
+ return {
12
+ ok: true
13
+ };
14
+ }
15
+ }
16
+ export {
17
+ StopEventMutationResolver
18
+ };
19
+ //# sourceMappingURL=StopEventMutationResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StopEventMutationResolver.js","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/mutation/StopEventMutationResolver.ts"],"sourcesContent":["import { MutationResolvers, MutationRetryEventArgs } from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { ActionsAuthorizationActions } from '../../../authorization'\nimport { EventsRepository } from '../../../dispatch/EventsRepository'\n\nexport class StopEventMutationResolver implements MutationResolvers<ActionsContext> {\n\tconstructor(\n\t\tprivate readonly eventsRepository: EventsRepository,\n\t) {\n\t}\n\tasync stopEvent(parent: unknown, args: MutationRetryEventArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_STOP)\n\n\t\tawait this.eventsRepository.markStopped(ctx.db.client, [args.id])\n\t\treturn {\n\t\t\tok: true,\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;;AAKO,MAAM,0BAAuE;AAAA,EACnF,YACkB,kBAChB;AADgB,SAAA,mBAAA;AAAA,EAAA;AAAA,EAGlB,MAAM,UAAU,QAAiB,MAA8B,KAAqB;AAC7E,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAEzD,UAAA,KAAK,iBAAiB,YAAY,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzD,WAAA;AAAA,MACN,IAAI;AAAA,IACL;AAAA,EAAA;AAEF;"}
@@ -7,6 +7,7 @@ const FailedEventsQuery = require("../../../model/FailedEventsQuery.cjs");
7
7
  const ActionsAuthorizationActions = require("../../../authorization/ActionsAuthorizationActions.cjs");
8
8
  require("@contember/authorization");
9
9
  require("@contember/schema");
10
+ const EventByIdQuery = require("../../../model/EventByIdQuery.cjs");
10
11
  class EventsQueryResolver {
11
12
  async eventsInProcessing(parent, { args }, ctx) {
12
13
  await ctx.requireAccess(ActionsAuthorizationActions.ActionsAuthorizationActions.EVENTS_VIEW);
@@ -20,6 +21,15 @@ class EventsQueryResolver {
20
21
  await ctx.requireAccess(ActionsAuthorizationActions.ActionsAuthorizationActions.EVENTS_VIEW);
21
22
  return await this.fetchEvents(ctx.db, new FailedEventsQuery.FailedEventsQuery(args ?? {}));
22
23
  }
24
+ async event(parent, { id }, ctx) {
25
+ await ctx.requireAccess(ActionsAuthorizationActions.ActionsAuthorizationActions.EVENTS_VIEW);
26
+ const stages = await this.fetchStagesMap(ctx.db);
27
+ const result = await ctx.db.queryHandler.fetch(new EventByIdQuery.EventByIdQuery(id));
28
+ if (!result) {
29
+ return null;
30
+ }
31
+ return this.mapEventRows([result], stages)[0];
32
+ }
23
33
  async fetchEvents(db, query) {
24
34
  const stages = await this.fetchStagesMap(db);
25
35
  return this.mapEventRows(await db.queryHandler.fetch(query), stages);
@@ -1 +1 @@
1
- {"version":3,"file":"EventsQueryResolver.cjs","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/query/EventsQueryResolver.ts"],"sourcesContent":["import {\n\tEvent,\n\tQueryEventsInProcessingArgs,\n\tQueryEventsToProcessArgs,\n\tQueryFailedEventsArgs,\n\tQueryResolvers,\n} from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { EventsToProcessQuery } from '../../../model/EventsToProcessQuery'\nimport { EventRow } from '../../../model/types'\nimport { DatabaseContext, StagesQuery } from '@contember/engine-system-api'\nimport { Client, DatabaseQuery } from '@contember/database'\nimport { EventsInProcessingQuery } from '../../../model/EventsInProcessingQuery'\nimport { FailedEventsQuery } from '../../../model/FailedEventsQuery'\nimport { ActionsAuthorizationActions } from '../../../authorization'\n\nexport class EventsQueryResolver implements QueryResolvers<ActionsContext> {\n\tasync eventsInProcessing(parent: unknown, { args }: QueryEventsInProcessingArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsInProcessingQuery(args ?? {}))\n\t}\n\n\tasync eventsToProcess(parent: unknown, { args }: QueryEventsToProcessArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsToProcessQuery(args ?? {}))\n\t}\n\n\tasync failedEvents(parent: unknown, { args }: QueryFailedEventsArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new FailedEventsQuery(args ?? {}))\n\t}\n\n\tprivate async fetchEvents(db: DatabaseContext, query: DatabaseQuery<EventRow[]>) {\n\t\tconst stages = await this.fetchStagesMap(db)\n\t\treturn this.mapEventRows(await db.queryHandler.fetch(query), stages)\n\t}\n\n\tprivate async fetchStagesMap(db: DatabaseContext): Promise<Record<string, string>> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new StagesQuery())).map(it => [it.id, it.slug]))\n\t}\n\n\tprivate mapEventRows(rows: EventRow[], stagesMap: Record<string, string>): Event[] {\n\n\t\treturn rows.map(row => ({\n\t\t\tid: row.id,\n\t\t\tcreatedAt: row.created_at,\n\t\t\tresolvedAt: row.created_at,\n\t\t\tlastStateChange: row.last_state_change,\n\t\t\tvisibleAt: row.visible_at,\n\t\t\tlog: row.log,\n\t\t\tnumRetries: row.num_retries,\n\t\t\tpayload: row.payload,\n\t\t\tstage: stagesMap[row.stage_id],\n\t\t\tstate: row.state,\n\t\t\ttarget: row.target,\n\t\t\ttransactionId: row.transaction_id,\n\t\t}))\n\t}\n}\n"],"names":["ActionsAuthorizationActions","EventsInProcessingQuery","EventsToProcessQuery","FailedEventsQuery","StagesQuery"],"mappings":";;;;;;;;;AAgBO,MAAM,oBAA8D;AAAA,EAC1E,MAAM,mBAAmB,QAAiB,EAAE,KAAA,GAAqC,KAAqB;AAC/F,UAAA,IAAI,cAAcA,4BAAA,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAIC,wBAAwB,wBAAA,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG9E,MAAM,gBAAgB,QAAiB,EAAE,KAAA,GAAkC,KAAqB;AACzF,UAAA,IAAI,cAAcD,4BAAA,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAIE,qBAAqB,qBAAA,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG3E,MAAM,aAAa,QAAiB,EAAE,KAAA,GAA+B,KAAqB;AACnF,UAAA,IAAI,cAAcF,4BAAA,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAIG,kBAAkB,kBAAA,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAGxE,MAAc,YAAY,IAAqB,OAAkC;AAChF,UAAM,SAAS,MAAM,KAAK,eAAe,EAAE;AACpC,WAAA,KAAK,aAAa,MAAM,GAAG,aAAa,MAAM,KAAK,GAAG,MAAM;AAAA,EAAA;AAAA,EAGpE,MAAc,eAAe,IAAsD;AAClF,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAIC,gBAAY,YAAA,CAAC,GAAG,IAAI,QAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EAAA;AAAA,EAG/F,aAAa,MAAkB,WAA4C;AAE3E,WAAA,KAAK,IAAI,CAAQ,SAAA;AAAA,MACvB,IAAI,IAAI;AAAA,MACR,WAAW,IAAI;AAAA,MACf,YAAY,IAAI;AAAA,MAChB,iBAAiB,IAAI;AAAA,MACrB,WAAW,IAAI;AAAA,MACf,KAAK,IAAI;AAAA,MACT,YAAY,IAAI;AAAA,MAChB,SAAS,IAAI;AAAA,MACb,OAAO,UAAU,IAAI,QAAQ;AAAA,MAC7B,OAAO,IAAI;AAAA,MACX,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,IAAA,EAClB;AAAA,EAAA;AAEJ;;"}
1
+ {"version":3,"file":"EventsQueryResolver.cjs","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/query/EventsQueryResolver.ts"],"sourcesContent":["import {\n\tEvent,\n\tQueryEventsInProcessingArgs,\n\tQueryEventsToProcessArgs,\n\tQueryFailedEventsArgs,\n\tQueryResolvers,\n} from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { EventsToProcessQuery } from '../../../model/EventsToProcessQuery'\nimport { EventRow } from '../../../model/types'\nimport { DatabaseContext, StagesQuery } from '@contember/engine-system-api'\nimport { Client, DatabaseQuery } from '@contember/database'\nimport { EventsInProcessingQuery } from '../../../model/EventsInProcessingQuery'\nimport { FailedEventsQuery } from '../../../model/FailedEventsQuery'\nimport { ActionsAuthorizationActions } from '../../../authorization'\nimport { EventByIdQuery } from '../../../model/EventByIdQuery'\n\nexport class EventsQueryResolver implements QueryResolvers<ActionsContext> {\n\tasync eventsInProcessing(parent: unknown, { args }: QueryEventsInProcessingArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsInProcessingQuery(args ?? {}))\n\t}\n\n\tasync eventsToProcess(parent: unknown, { args }: QueryEventsToProcessArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsToProcessQuery(args ?? {}))\n\t}\n\n\tasync failedEvents(parent: unknown, { args }: QueryFailedEventsArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new FailedEventsQuery(args ?? {}))\n\t}\n\n\tasync event(parent: unknown, { id }: { id: string }, ctx: ActionsContext): Promise<Event | null> {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\t\tconst stages = await this.fetchStagesMap(ctx.db)\n\t\tconst result = await ctx.db.queryHandler.fetch(new EventByIdQuery(id))\n\t\tif (!result) {\n\t\t\treturn null\n\t\t}\n\t\treturn this.mapEventRows([result], stages)[0]\n\t}\n\n\tprivate async fetchEvents(db: DatabaseContext, query: DatabaseQuery<EventRow[]>) {\n\t\tconst stages = await this.fetchStagesMap(db)\n\t\treturn this.mapEventRows(await db.queryHandler.fetch(query), stages)\n\t}\n\n\tprivate async fetchStagesMap(db: DatabaseContext): Promise<Record<string, string>> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new StagesQuery())).map(it => [it.id, it.slug]))\n\t}\n\n\tprivate mapEventRows(rows: EventRow[], stagesMap: Record<string, string>): Event[] {\n\n\t\treturn rows.map(row => ({\n\t\t\tid: row.id,\n\t\t\tcreatedAt: row.created_at,\n\t\t\tresolvedAt: row.created_at,\n\t\t\tlastStateChange: row.last_state_change,\n\t\t\tvisibleAt: row.visible_at,\n\t\t\tlog: row.log,\n\t\t\tnumRetries: row.num_retries,\n\t\t\tpayload: row.payload,\n\t\t\tstage: stagesMap[row.stage_id],\n\t\t\tstate: row.state,\n\t\t\ttarget: row.target,\n\t\t\ttransactionId: row.transaction_id,\n\t\t}))\n\t}\n}\n"],"names":["ActionsAuthorizationActions","EventsInProcessingQuery","EventsToProcessQuery","FailedEventsQuery","EventByIdQuery","StagesQuery"],"mappings":";;;;;;;;;;AAiBO,MAAM,oBAA8D;AAAA,EAC1E,MAAM,mBAAmB,QAAiB,EAAE,KAAA,GAAqC,KAAqB;AAC/F,UAAA,IAAI,cAAcA,4BAAA,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAIC,wBAAwB,wBAAA,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG9E,MAAM,gBAAgB,QAAiB,EAAE,KAAA,GAAkC,KAAqB;AACzF,UAAA,IAAI,cAAcD,4BAAA,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAIE,qBAAqB,qBAAA,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG3E,MAAM,aAAa,QAAiB,EAAE,KAAA,GAA+B,KAAqB;AACnF,UAAA,IAAI,cAAcF,4BAAA,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAIG,kBAAkB,kBAAA,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAGxE,MAAM,MAAM,QAAiB,EAAE,GAAA,GAAsB,KAA4C;AAC1F,UAAA,IAAI,cAAcH,4BAAA,4BAA4B,WAAW;AAC/D,UAAM,SAAS,MAAM,KAAK,eAAe,IAAI,EAAE;AACzC,UAAA,SAAS,MAAM,IAAI,GAAG,aAAa,MAAM,IAAII,8BAAe,EAAE,CAAC;AACrE,QAAI,CAAC,QAAQ;AACL,aAAA;AAAA,IAAA;AAER,WAAO,KAAK,aAAa,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;AAAA,EAAA;AAAA,EAG7C,MAAc,YAAY,IAAqB,OAAkC;AAChF,UAAM,SAAS,MAAM,KAAK,eAAe,EAAE;AACpC,WAAA,KAAK,aAAa,MAAM,GAAG,aAAa,MAAM,KAAK,GAAG,MAAM;AAAA,EAAA;AAAA,EAGpE,MAAc,eAAe,IAAsD;AAClF,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAIC,gBAAY,YAAA,CAAC,GAAG,IAAI,QAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EAAA;AAAA,EAG/F,aAAa,MAAkB,WAA4C;AAE3E,WAAA,KAAK,IAAI,CAAQ,SAAA;AAAA,MACvB,IAAI,IAAI;AAAA,MACR,WAAW,IAAI;AAAA,MACf,YAAY,IAAI;AAAA,MAChB,iBAAiB,IAAI;AAAA,MACrB,WAAW,IAAI;AAAA,MACf,KAAK,IAAI;AAAA,MACT,YAAY,IAAI;AAAA,MAChB,SAAS,IAAI;AAAA,MACb,OAAO,UAAU,IAAI,QAAQ;AAAA,MAC7B,OAAO,IAAI;AAAA,MACX,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,IAAA,EAClB;AAAA,EAAA;AAEJ;;"}
@@ -5,6 +5,7 @@ import { FailedEventsQuery } from "../../../model/FailedEventsQuery.js";
5
5
  import { ActionsAuthorizationActions } from "../../../authorization/ActionsAuthorizationActions.js";
6
6
  import "@contember/authorization";
7
7
  import "@contember/schema";
8
+ import { EventByIdQuery } from "../../../model/EventByIdQuery.js";
8
9
  class EventsQueryResolver {
9
10
  async eventsInProcessing(parent, { args }, ctx) {
10
11
  await ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW);
@@ -18,6 +19,15 @@ class EventsQueryResolver {
18
19
  await ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW);
19
20
  return await this.fetchEvents(ctx.db, new FailedEventsQuery(args ?? {}));
20
21
  }
22
+ async event(parent, { id }, ctx) {
23
+ await ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW);
24
+ const stages = await this.fetchStagesMap(ctx.db);
25
+ const result = await ctx.db.queryHandler.fetch(new EventByIdQuery(id));
26
+ if (!result) {
27
+ return null;
28
+ }
29
+ return this.mapEventRows([result], stages)[0];
30
+ }
21
31
  async fetchEvents(db, query) {
22
32
  const stages = await this.fetchStagesMap(db);
23
33
  return this.mapEventRows(await db.queryHandler.fetch(query), stages);
@@ -1 +1 @@
1
- {"version":3,"file":"EventsQueryResolver.js","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/query/EventsQueryResolver.ts"],"sourcesContent":["import {\n\tEvent,\n\tQueryEventsInProcessingArgs,\n\tQueryEventsToProcessArgs,\n\tQueryFailedEventsArgs,\n\tQueryResolvers,\n} from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { EventsToProcessQuery } from '../../../model/EventsToProcessQuery'\nimport { EventRow } from '../../../model/types'\nimport { DatabaseContext, StagesQuery } from '@contember/engine-system-api'\nimport { Client, DatabaseQuery } from '@contember/database'\nimport { EventsInProcessingQuery } from '../../../model/EventsInProcessingQuery'\nimport { FailedEventsQuery } from '../../../model/FailedEventsQuery'\nimport { ActionsAuthorizationActions } from '../../../authorization'\n\nexport class EventsQueryResolver implements QueryResolvers<ActionsContext> {\n\tasync eventsInProcessing(parent: unknown, { args }: QueryEventsInProcessingArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsInProcessingQuery(args ?? {}))\n\t}\n\n\tasync eventsToProcess(parent: unknown, { args }: QueryEventsToProcessArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsToProcessQuery(args ?? {}))\n\t}\n\n\tasync failedEvents(parent: unknown, { args }: QueryFailedEventsArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new FailedEventsQuery(args ?? {}))\n\t}\n\n\tprivate async fetchEvents(db: DatabaseContext, query: DatabaseQuery<EventRow[]>) {\n\t\tconst stages = await this.fetchStagesMap(db)\n\t\treturn this.mapEventRows(await db.queryHandler.fetch(query), stages)\n\t}\n\n\tprivate async fetchStagesMap(db: DatabaseContext): Promise<Record<string, string>> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new StagesQuery())).map(it => [it.id, it.slug]))\n\t}\n\n\tprivate mapEventRows(rows: EventRow[], stagesMap: Record<string, string>): Event[] {\n\n\t\treturn rows.map(row => ({\n\t\t\tid: row.id,\n\t\t\tcreatedAt: row.created_at,\n\t\t\tresolvedAt: row.created_at,\n\t\t\tlastStateChange: row.last_state_change,\n\t\t\tvisibleAt: row.visible_at,\n\t\t\tlog: row.log,\n\t\t\tnumRetries: row.num_retries,\n\t\t\tpayload: row.payload,\n\t\t\tstage: stagesMap[row.stage_id],\n\t\t\tstate: row.state,\n\t\t\ttarget: row.target,\n\t\t\ttransactionId: row.transaction_id,\n\t\t}))\n\t}\n}\n"],"names":[],"mappings":";;;;;;;AAgBO,MAAM,oBAA8D;AAAA,EAC1E,MAAM,mBAAmB,QAAiB,EAAE,KAAA,GAAqC,KAAqB;AAC/F,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI,wBAAwB,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG9E,MAAM,gBAAgB,QAAiB,EAAE,KAAA,GAAkC,KAAqB;AACzF,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI,qBAAqB,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG3E,MAAM,aAAa,QAAiB,EAAE,KAAA,GAA+B,KAAqB;AACnF,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI,kBAAkB,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAGxE,MAAc,YAAY,IAAqB,OAAkC;AAChF,UAAM,SAAS,MAAM,KAAK,eAAe,EAAE;AACpC,WAAA,KAAK,aAAa,MAAM,GAAG,aAAa,MAAM,KAAK,GAAG,MAAM;AAAA,EAAA;AAAA,EAGpE,MAAc,eAAe,IAAsD;AAClF,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,QAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EAAA;AAAA,EAG/F,aAAa,MAAkB,WAA4C;AAE3E,WAAA,KAAK,IAAI,CAAQ,SAAA;AAAA,MACvB,IAAI,IAAI;AAAA,MACR,WAAW,IAAI;AAAA,MACf,YAAY,IAAI;AAAA,MAChB,iBAAiB,IAAI;AAAA,MACrB,WAAW,IAAI;AAAA,MACf,KAAK,IAAI;AAAA,MACT,YAAY,IAAI;AAAA,MAChB,SAAS,IAAI;AAAA,MACb,OAAO,UAAU,IAAI,QAAQ;AAAA,MAC7B,OAAO,IAAI;AAAA,MACX,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,IAAA,EAClB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"EventsQueryResolver.js","sources":["../../../../../../../packages/engine-actions/src/graphql/resolvers/query/EventsQueryResolver.ts"],"sourcesContent":["import {\n\tEvent,\n\tQueryEventsInProcessingArgs,\n\tQueryEventsToProcessArgs,\n\tQueryFailedEventsArgs,\n\tQueryResolvers,\n} from '../../schema'\nimport { ActionsContext } from '../ActionsContext'\nimport { EventsToProcessQuery } from '../../../model/EventsToProcessQuery'\nimport { EventRow } from '../../../model/types'\nimport { DatabaseContext, StagesQuery } from '@contember/engine-system-api'\nimport { Client, DatabaseQuery } from '@contember/database'\nimport { EventsInProcessingQuery } from '../../../model/EventsInProcessingQuery'\nimport { FailedEventsQuery } from '../../../model/FailedEventsQuery'\nimport { ActionsAuthorizationActions } from '../../../authorization'\nimport { EventByIdQuery } from '../../../model/EventByIdQuery'\n\nexport class EventsQueryResolver implements QueryResolvers<ActionsContext> {\n\tasync eventsInProcessing(parent: unknown, { args }: QueryEventsInProcessingArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsInProcessingQuery(args ?? {}))\n\t}\n\n\tasync eventsToProcess(parent: unknown, { args }: QueryEventsToProcessArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new EventsToProcessQuery(args ?? {}))\n\t}\n\n\tasync failedEvents(parent: unknown, { args }: QueryFailedEventsArgs, ctx: ActionsContext) {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\n\t\treturn await this.fetchEvents(ctx.db, new FailedEventsQuery(args ?? {}))\n\t}\n\n\tasync event(parent: unknown, { id }: { id: string }, ctx: ActionsContext): Promise<Event | null> {\n\t\tawait ctx.requireAccess(ActionsAuthorizationActions.EVENTS_VIEW)\n\t\tconst stages = await this.fetchStagesMap(ctx.db)\n\t\tconst result = await ctx.db.queryHandler.fetch(new EventByIdQuery(id))\n\t\tif (!result) {\n\t\t\treturn null\n\t\t}\n\t\treturn this.mapEventRows([result], stages)[0]\n\t}\n\n\tprivate async fetchEvents(db: DatabaseContext, query: DatabaseQuery<EventRow[]>) {\n\t\tconst stages = await this.fetchStagesMap(db)\n\t\treturn this.mapEventRows(await db.queryHandler.fetch(query), stages)\n\t}\n\n\tprivate async fetchStagesMap(db: DatabaseContext): Promise<Record<string, string>> {\n\t\treturn Object.fromEntries((await db.queryHandler.fetch(new StagesQuery())).map(it => [it.id, it.slug]))\n\t}\n\n\tprivate mapEventRows(rows: EventRow[], stagesMap: Record<string, string>): Event[] {\n\n\t\treturn rows.map(row => ({\n\t\t\tid: row.id,\n\t\t\tcreatedAt: row.created_at,\n\t\t\tresolvedAt: row.created_at,\n\t\t\tlastStateChange: row.last_state_change,\n\t\t\tvisibleAt: row.visible_at,\n\t\t\tlog: row.log,\n\t\t\tnumRetries: row.num_retries,\n\t\t\tpayload: row.payload,\n\t\t\tstage: stagesMap[row.stage_id],\n\t\t\tstate: row.state,\n\t\t\ttarget: row.target,\n\t\t\ttransactionId: row.transaction_id,\n\t\t}))\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AAiBO,MAAM,oBAA8D;AAAA,EAC1E,MAAM,mBAAmB,QAAiB,EAAE,KAAA,GAAqC,KAAqB;AAC/F,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI,wBAAwB,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG9E,MAAM,gBAAgB,QAAiB,EAAE,KAAA,GAAkC,KAAqB;AACzF,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI,qBAAqB,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAG3E,MAAM,aAAa,QAAiB,EAAE,KAAA,GAA+B,KAAqB;AACnF,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAExD,WAAA,MAAM,KAAK,YAAY,IAAI,IAAI,IAAI,kBAAkB,QAAQ,CAAA,CAAE,CAAC;AAAA,EAAA;AAAA,EAGxE,MAAM,MAAM,QAAiB,EAAE,GAAA,GAAsB,KAA4C;AAC1F,UAAA,IAAI,cAAc,4BAA4B,WAAW;AAC/D,UAAM,SAAS,MAAM,KAAK,eAAe,IAAI,EAAE;AACzC,UAAA,SAAS,MAAM,IAAI,GAAG,aAAa,MAAM,IAAI,eAAe,EAAE,CAAC;AACrE,QAAI,CAAC,QAAQ;AACL,aAAA;AAAA,IAAA;AAER,WAAO,KAAK,aAAa,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;AAAA,EAAA;AAAA,EAG7C,MAAc,YAAY,IAAqB,OAAkC;AAChF,UAAM,SAAS,MAAM,KAAK,eAAe,EAAE;AACpC,WAAA,KAAK,aAAa,MAAM,GAAG,aAAa,MAAM,KAAK,GAAG,MAAM;AAAA,EAAA;AAAA,EAGpE,MAAc,eAAe,IAAsD;AAClF,WAAO,OAAO,aAAa,MAAM,GAAG,aAAa,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,QAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,EAAA;AAAA,EAG/F,aAAa,MAAkB,WAA4C;AAE3E,WAAA,KAAK,IAAI,CAAQ,SAAA;AAAA,MACvB,IAAI,IAAI;AAAA,MACR,WAAW,IAAI;AAAA,MACf,YAAY,IAAI;AAAA,MAChB,iBAAiB,IAAI;AAAA,MACrB,WAAW,IAAI;AAAA,MACf,KAAK,IAAI;AAAA,MACT,YAAY,IAAI;AAAA,MAChB,SAAS,IAAI;AAAA,MACb,OAAO,UAAU,IAAI,QAAQ;AAAA,MAC7B,OAAO,IAAI;AAAA,MACX,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,IAAA,EAClB;AAAA,EAAA;AAEJ;"}
@@ -15,11 +15,14 @@ const schema = graphqlTag.gql`
15
15
  failedEvents(args: EventArgs): [Event!]!
16
16
  eventsToProcess(args: EventArgs): [Event!]!
17
17
  eventsInProcessing(args: EventArgs): [Event!]!
18
+ event(id: Uuid!): Event
18
19
  variables: [Variable!]!
19
20
  }
20
21
 
21
22
  type Mutation {
22
23
  processBatch: ProcessBatchResponse!
24
+ retryEvent(id: Uuid!): RetryEventResponse!
25
+ stopEvent(id: Uuid!): StopEventResponse!
23
26
  setVariables(args: SetVariablesArgs!): SetVariablesResponse!
24
27
  }
25
28
 
@@ -56,6 +59,14 @@ const schema = graphqlTag.gql`
56
59
  type ProcessBatchResponse {
57
60
  ok: Boolean!
58
61
  }
62
+
63
+ type RetryEventResponse {
64
+ ok: Boolean!
65
+ }
66
+
67
+ type StopEventResponse {
68
+ ok: Boolean!
69
+ }
59
70
 
60
71
  input SetVariablesArgs {
61
72
  variables: [VariableInput!]!
@@ -1 +1 @@
1
- {"version":3,"file":"actions.graphql.cjs","sources":["../../../../../../packages/engine-actions/src/graphql/schema/actions.graphql.ts"],"sourcesContent":["import { gql } from 'graphql-tag'\nimport { DocumentNode } from 'graphql'\n\nexport const schema: DocumentNode = gql`\n scalar DateTime\n scalar Json\n scalar Uuid\n\n schema {\n query: Query\n mutation: Mutation\n }\n\n type Query {\n failedEvents(args: EventArgs): [Event!]!\n eventsToProcess(args: EventArgs): [Event!]!\n eventsInProcessing(args: EventArgs): [Event!]!\n variables: [Variable!]!\n }\n\n type Mutation {\n processBatch: ProcessBatchResponse!\n setVariables(args: SetVariablesArgs!): SetVariablesResponse!\n }\n\n input EventArgs {\n offset: Int\n \"Max 10000\"\n limit: Int\n }\n\n type Event {\n id: Uuid!\n transactionId: Uuid!\n createdAt: DateTime!\n lastStateChange: DateTime!\n resolvedAt: DateTime\n visibleAt: DateTime\n numRetries: Int!\n state: EventState!\n stage: String!\n target: String!\n payload: Json!\n log: Json!\n }\n\n enum EventState {\n created\n retrying\n processing\n succeed\n failed\n stopped\n }\n\n type ProcessBatchResponse {\n ok: Boolean!\n }\n\n input SetVariablesArgs {\n variables: [VariableInput!]!\n mode: SetVariablesMode\n }\n\t\n\t\"\"\"\n\tDefines how it handles original variables. \n\t- MERGE merges with new values (default behaviour)\n\t- SET replaces all variables\n\t- APPEND_ONLY_MISSING appends values if not already exist \n\t\"\"\"\n\tenum SetVariablesMode {\n\t\tMERGE\n\t\tSET\n\t\tAPPEND_ONLY_MISSING\n\t}\n\n input VariableInput {\n name: String!\n value: String!\n }\n\t\n\ttype SetVariablesResponse {\n\t\tok: Boolean!\n\t}\n\n type Variable {\n name: String!\n value: String!\n }\n\n`\n"],"names":["gql"],"mappings":";;;AAGO,MAAM,SAAuBA,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
1
+ {"version":3,"file":"actions.graphql.cjs","sources":["../../../../../../packages/engine-actions/src/graphql/schema/actions.graphql.ts"],"sourcesContent":["import { gql } from 'graphql-tag'\nimport { DocumentNode } from 'graphql'\n\nexport const schema: DocumentNode = gql`\n scalar DateTime\n scalar Json\n scalar Uuid\n\n schema {\n query: Query\n mutation: Mutation\n }\n\n type Query {\n failedEvents(args: EventArgs): [Event!]!\n eventsToProcess(args: EventArgs): [Event!]!\n eventsInProcessing(args: EventArgs): [Event!]!\n event(id: Uuid!): Event\n variables: [Variable!]!\n }\n\n type Mutation {\n processBatch: ProcessBatchResponse!\n retryEvent(id: Uuid!): RetryEventResponse!\n stopEvent(id: Uuid!): StopEventResponse!\n setVariables(args: SetVariablesArgs!): SetVariablesResponse!\n }\n\n input EventArgs {\n offset: Int\n \"Max 10000\"\n limit: Int\n }\n\n type Event {\n id: Uuid!\n transactionId: Uuid!\n createdAt: DateTime!\n lastStateChange: DateTime!\n resolvedAt: DateTime\n visibleAt: DateTime\n numRetries: Int!\n state: EventState!\n stage: String!\n target: String!\n payload: Json!\n log: Json!\n }\n\n enum EventState {\n created\n retrying\n processing\n succeed\n failed\n stopped\n }\n\n type ProcessBatchResponse {\n ok: Boolean!\n }\n \n type RetryEventResponse {\n ok: Boolean!\n }\n \n type StopEventResponse {\n ok: Boolean!\n }\n\n input SetVariablesArgs {\n variables: [VariableInput!]!\n mode: SetVariablesMode\n }\n\t\n\t\"\"\"\n\tDefines how it handles original variables. \n\t- MERGE merges with new values (default behaviour)\n\t- SET replaces all variables\n\t- APPEND_ONLY_MISSING appends values if not already exist \n\t\"\"\"\n\tenum SetVariablesMode {\n\t\tMERGE\n\t\tSET\n\t\tAPPEND_ONLY_MISSING\n\t}\n\n input VariableInput {\n name: String!\n value: String!\n }\n\t\n\ttype SetVariablesResponse {\n\t\tok: Boolean!\n\t}\n\n type Variable {\n name: String!\n value: String!\n }\n\n`\n"],"names":["gql"],"mappings":";;;AAGO,MAAM,SAAuBA,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
@@ -13,11 +13,14 @@ const schema = gql`
13
13
  failedEvents(args: EventArgs): [Event!]!
14
14
  eventsToProcess(args: EventArgs): [Event!]!
15
15
  eventsInProcessing(args: EventArgs): [Event!]!
16
+ event(id: Uuid!): Event
16
17
  variables: [Variable!]!
17
18
  }
18
19
 
19
20
  type Mutation {
20
21
  processBatch: ProcessBatchResponse!
22
+ retryEvent(id: Uuid!): RetryEventResponse!
23
+ stopEvent(id: Uuid!): StopEventResponse!
21
24
  setVariables(args: SetVariablesArgs!): SetVariablesResponse!
22
25
  }
23
26
 
@@ -54,6 +57,14 @@ const schema = gql`
54
57
  type ProcessBatchResponse {
55
58
  ok: Boolean!
56
59
  }
60
+
61
+ type RetryEventResponse {
62
+ ok: Boolean!
63
+ }
64
+
65
+ type StopEventResponse {
66
+ ok: Boolean!
67
+ }
57
68
 
58
69
  input SetVariablesArgs {
59
70
  variables: [VariableInput!]!
@@ -1 +1 @@
1
- {"version":3,"file":"actions.graphql.js","sources":["../../../../../../packages/engine-actions/src/graphql/schema/actions.graphql.ts"],"sourcesContent":["import { gql } from 'graphql-tag'\nimport { DocumentNode } from 'graphql'\n\nexport const schema: DocumentNode = gql`\n scalar DateTime\n scalar Json\n scalar Uuid\n\n schema {\n query: Query\n mutation: Mutation\n }\n\n type Query {\n failedEvents(args: EventArgs): [Event!]!\n eventsToProcess(args: EventArgs): [Event!]!\n eventsInProcessing(args: EventArgs): [Event!]!\n variables: [Variable!]!\n }\n\n type Mutation {\n processBatch: ProcessBatchResponse!\n setVariables(args: SetVariablesArgs!): SetVariablesResponse!\n }\n\n input EventArgs {\n offset: Int\n \"Max 10000\"\n limit: Int\n }\n\n type Event {\n id: Uuid!\n transactionId: Uuid!\n createdAt: DateTime!\n lastStateChange: DateTime!\n resolvedAt: DateTime\n visibleAt: DateTime\n numRetries: Int!\n state: EventState!\n stage: String!\n target: String!\n payload: Json!\n log: Json!\n }\n\n enum EventState {\n created\n retrying\n processing\n succeed\n failed\n stopped\n }\n\n type ProcessBatchResponse {\n ok: Boolean!\n }\n\n input SetVariablesArgs {\n variables: [VariableInput!]!\n mode: SetVariablesMode\n }\n\t\n\t\"\"\"\n\tDefines how it handles original variables. \n\t- MERGE merges with new values (default behaviour)\n\t- SET replaces all variables\n\t- APPEND_ONLY_MISSING appends values if not already exist \n\t\"\"\"\n\tenum SetVariablesMode {\n\t\tMERGE\n\t\tSET\n\t\tAPPEND_ONLY_MISSING\n\t}\n\n input VariableInput {\n name: String!\n value: String!\n }\n\t\n\ttype SetVariablesResponse {\n\t\tok: Boolean!\n\t}\n\n type Variable {\n name: String!\n value: String!\n }\n\n`\n"],"names":[],"mappings":";AAGO,MAAM,SAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"actions.graphql.js","sources":["../../../../../../packages/engine-actions/src/graphql/schema/actions.graphql.ts"],"sourcesContent":["import { gql } from 'graphql-tag'\nimport { DocumentNode } from 'graphql'\n\nexport const schema: DocumentNode = gql`\n scalar DateTime\n scalar Json\n scalar Uuid\n\n schema {\n query: Query\n mutation: Mutation\n }\n\n type Query {\n failedEvents(args: EventArgs): [Event!]!\n eventsToProcess(args: EventArgs): [Event!]!\n eventsInProcessing(args: EventArgs): [Event!]!\n event(id: Uuid!): Event\n variables: [Variable!]!\n }\n\n type Mutation {\n processBatch: ProcessBatchResponse!\n retryEvent(id: Uuid!): RetryEventResponse!\n stopEvent(id: Uuid!): StopEventResponse!\n setVariables(args: SetVariablesArgs!): SetVariablesResponse!\n }\n\n input EventArgs {\n offset: Int\n \"Max 10000\"\n limit: Int\n }\n\n type Event {\n id: Uuid!\n transactionId: Uuid!\n createdAt: DateTime!\n lastStateChange: DateTime!\n resolvedAt: DateTime\n visibleAt: DateTime\n numRetries: Int!\n state: EventState!\n stage: String!\n target: String!\n payload: Json!\n log: Json!\n }\n\n enum EventState {\n created\n retrying\n processing\n succeed\n failed\n stopped\n }\n\n type ProcessBatchResponse {\n ok: Boolean!\n }\n \n type RetryEventResponse {\n ok: Boolean!\n }\n \n type StopEventResponse {\n ok: Boolean!\n }\n\n input SetVariablesArgs {\n variables: [VariableInput!]!\n mode: SetVariablesMode\n }\n\t\n\t\"\"\"\n\tDefines how it handles original variables. \n\t- MERGE merges with new values (default behaviour)\n\t- SET replaces all variables\n\t- APPEND_ONLY_MISSING appends values if not already exist \n\t\"\"\"\n\tenum SetVariablesMode {\n\t\tMERGE\n\t\tSET\n\t\tAPPEND_ONLY_MISSING\n\t}\n\n input VariableInput {\n name: String!\n value: String!\n }\n\t\n\ttype SetVariablesResponse {\n\t\tok: Boolean!\n\t}\n\n type Variable {\n name: String!\n value: String!\n }\n\n`\n"],"names":[],"mappings":";AAGO,MAAM,SAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Database = require("@contember/database");
4
+ class EventByIdQuery extends Database.DatabaseQuery {
5
+ constructor(id) {
6
+ super();
7
+ this.id = id;
8
+ }
9
+ async fetch(queryable) {
10
+ const result = await Database.SelectBuilder.create().from("actions_event").select("*").where({
11
+ id: this.id
12
+ }).getResult(queryable.db);
13
+ return this.fetchOneOrNull(result);
14
+ }
15
+ }
16
+ exports.EventByIdQuery = EventByIdQuery;
17
+ //# sourceMappingURL=EventByIdQuery.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventByIdQuery.cjs","sources":["../../../../../packages/engine-actions/src/model/EventByIdQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\n\nexport class EventByIdQuery extends DatabaseQuery<EventRow | null> {\n\tconstructor(\n\t\tprivate readonly id: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow | null> {\n\t\tconst result = await SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where({\n\t\t\t\tid: this.id,\n\t\t\t})\n\t\t\t.getResult(queryable.db)\n\t\treturn this.fetchOneOrNull(result)\n\t}\n}\n"],"names":["DatabaseQuery","SelectBuilder"],"mappings":";;;AAGO,MAAM,uBAAuBA,SAAAA,cAA+B;AAAA,EAClE,YACkB,IAChB;AACK,UAAA;AAFW,SAAA,KAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAwD;AAC7D,UAAA,SAAS,MAAMC,uBAAc,SACjC,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM;AAAA,MACN,IAAI,KAAK;AAAA,IAAA,CACT,EACA,UAAU,UAAU,EAAE;AACjB,WAAA,KAAK,eAAe,MAAM;AAAA,EAAA;AAEnC;;"}
@@ -0,0 +1,17 @@
1
+ import { DatabaseQuery, SelectBuilder } from "@contember/database";
2
+ class EventByIdQuery extends DatabaseQuery {
3
+ constructor(id) {
4
+ super();
5
+ this.id = id;
6
+ }
7
+ async fetch(queryable) {
8
+ const result = await SelectBuilder.create().from("actions_event").select("*").where({
9
+ id: this.id
10
+ }).getResult(queryable.db);
11
+ return this.fetchOneOrNull(result);
12
+ }
13
+ }
14
+ export {
15
+ EventByIdQuery
16
+ };
17
+ //# sourceMappingURL=EventByIdQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventByIdQuery.js","sources":["../../../../../packages/engine-actions/src/model/EventByIdQuery.ts"],"sourcesContent":["import { DatabaseQuery, DatabaseQueryable, SelectBuilder } from '@contember/database'\nimport { EventRow } from './types'\n\nexport class EventByIdQuery extends DatabaseQuery<EventRow | null> {\n\tconstructor(\n\t\tprivate readonly id: string,\n\t) {\n\t\tsuper()\n\t}\n\n\tasync fetch(queryable: DatabaseQueryable): Promise<EventRow | null> {\n\t\tconst result = await SelectBuilder.create<EventRow>()\n\t\t\t.from('actions_event')\n\t\t\t.select('*')\n\t\t\t.where({\n\t\t\t\tid: this.id,\n\t\t\t})\n\t\t\t.getResult(queryable.db)\n\t\treturn this.fetchOneOrNull(result)\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,uBAAuB,cAA+B;AAAA,EAClE,YACkB,IAChB;AACK,UAAA;AAFW,SAAA,KAAA;AAAA,EAAA;AAAA,EAKlB,MAAM,MAAM,WAAwD;AAC7D,UAAA,SAAS,MAAM,cAAc,SACjC,KAAK,eAAe,EACpB,OAAO,GAAG,EACV,MAAM;AAAA,MACN,IAAI,KAAK;AAAA,IAAA,CACT,EACA,UAAU,UAAU,EAAE;AACjB,WAAA,KAAK,eAAe,MAAM;AAAA,EAAA;AAEnC;"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const Database = require("@contember/database");
4
- const NOTIFY_CHANNEL_NAME = "actions_event";
4
+ const notifyChannel = require("../utils/notifyChannel.cjs");
5
5
  class TriggerPayloadPersister {
6
6
  constructor(mapper, client, providers, projectSlug, stageId, schemaId) {
7
7
  this.mapper = mapper;
@@ -35,9 +35,8 @@ class TriggerPayloadPersister {
35
35
  last_state_change: "now"
36
36
  }))).execute(this.client);
37
37
  }
38
- await this.client.query("SELECT pg_notify(?, ?)", [NOTIFY_CHANNEL_NAME, this.projectSlug]);
38
+ await notifyChannel.notify(this.client, this.projectSlug);
39
39
  }
40
40
  }
41
- exports.NOTIFY_CHANNEL_NAME = NOTIFY_CHANNEL_NAME;
42
41
  exports.TriggerPayloadPersister = TriggerPayloadPersister;
43
42
  //# sourceMappingURL=TriggerPayloadPersister.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadPersister.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types'\n\nexport const NOTIFY_CHANNEL_NAME = 'actions_event'\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId?: number,\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(chunk.map((it): EventRowToInsert => ({\n\t\t\t\t\tid: this.providers.uuid(),\n\t\t\t\t\ttransaction_id: this.mapper.transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t})))\n\t\t\t\t.execute(this.client)\n\t\t}\n\n\t\tawait this.client.query('SELECT pg_notify(?, ?)', [NOTIFY_CHANNEL_NAME, this.projectSlug])\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";;;AAKO,MAAM,sBAAsB;AAO5B,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UAChB;AANgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AACd,QAAA,CAAC,KAAK,UAAU;AACb,YAAA,IAAI,MAAM,sBAAsB;AAAA,IAAA;AAEvC,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AACvC,YAAAA,SAAA,cAAc,OAAO,EACzB,KAAK,eAAe,EACpB,OAAO,MAAM,IAAI,CAAC,QAA0B;AAAA,QAC5C,IAAI,KAAK,UAAU,KAAK;AAAA,QACxB,gBAAgB,KAAK,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ,YAAY;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,MAClB,EAAA,CAAC,EACF,QAAQ,KAAK,MAAM;AAAA,IAAA;AAGhB,UAAA,KAAK,OAAO,MAAM,0BAA0B,CAAC,qBAAqB,KAAK,WAAW,CAAC;AAAA,EAAA;AAE3F;;;"}
1
+ {"version":3,"file":"TriggerPayloadPersister.cjs","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types'\nimport { notify } from '../utils/notifyChannel'\n\n\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId?: number,\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(chunk.map((it): EventRowToInsert => ({\n\t\t\t\t\tid: this.providers.uuid(),\n\t\t\t\t\ttransaction_id: this.mapper.transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t})))\n\t\t\t\t.execute(this.client)\n\t\t}\n\n\t\tawait notify(this.client, this.projectSlug)\n\t}\n}\n"],"names":["InsertBuilder","notify"],"mappings":";;;;AAaO,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UAChB;AANgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AACd,QAAA,CAAC,KAAK,UAAU;AACb,YAAA,IAAI,MAAM,sBAAsB;AAAA,IAAA;AAEvC,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AACvC,YAAAA,SAAA,cAAc,OAAO,EACzB,KAAK,eAAe,EACpB,OAAO,MAAM,IAAI,CAAC,QAA0B;AAAA,QAC5C,IAAI,KAAK,UAAU,KAAK;AAAA,QACxB,gBAAgB,KAAK,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ,YAAY;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,MAClB,EAAA,CAAC,EACF,QAAQ,KAAK,MAAM;AAAA,IAAA;AAGtB,UAAMC,cAAO,OAAA,KAAK,QAAQ,KAAK,WAAW;AAAA,EAAA;AAE5C;;"}
@@ -1,5 +1,5 @@
1
1
  import { InsertBuilder as InsertBuilder$1 } from "@contember/database";
2
- const NOTIFY_CHANNEL_NAME = "actions_event";
2
+ import { notify } from "../utils/notifyChannel.js";
3
3
  class TriggerPayloadPersister {
4
4
  constructor(mapper, client, providers, projectSlug, stageId, schemaId) {
5
5
  this.mapper = mapper;
@@ -33,11 +33,10 @@ class TriggerPayloadPersister {
33
33
  last_state_change: "now"
34
34
  }))).execute(this.client);
35
35
  }
36
- await this.client.query("SELECT pg_notify(?, ?)", [NOTIFY_CHANNEL_NAME, this.projectSlug]);
36
+ await notify(this.client, this.projectSlug);
37
37
  }
38
38
  }
39
39
  export {
40
- NOTIFY_CHANNEL_NAME,
41
40
  TriggerPayloadPersister
42
41
  };
43
42
  //# sourceMappingURL=TriggerPayloadPersister.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerPayloadPersister.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types'\n\nexport const NOTIFY_CHANNEL_NAME = 'actions_event'\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId?: number,\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(chunk.map((it): EventRowToInsert => ({\n\t\t\t\t\tid: this.providers.uuid(),\n\t\t\t\t\ttransaction_id: this.mapper.transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t})))\n\t\t\t\t.execute(this.client)\n\t\t}\n\n\t\tawait this.client.query('SELECT pg_notify(?, ?)', [NOTIFY_CHANNEL_NAME, this.projectSlug])\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";AAKO,MAAM,sBAAsB;AAO5B,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UAChB;AANgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AACd,QAAA,CAAC,KAAK,UAAU;AACb,YAAA,IAAI,MAAM,sBAAsB;AAAA,IAAA;AAEvC,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AACvC,YAAAA,gBAAc,OAAO,EACzB,KAAK,eAAe,EACpB,OAAO,MAAM,IAAI,CAAC,QAA0B;AAAA,QAC5C,IAAI,KAAK,UAAU,KAAK;AAAA,QACxB,gBAAgB,KAAK,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ,YAAY;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,MAClB,EAAA,CAAC,EACF,QAAQ,KAAK,MAAM;AAAA,IAAA;AAGhB,UAAA,KAAK,OAAO,MAAM,0BAA0B,CAAC,qBAAqB,KAAK,WAAW,CAAC;AAAA,EAAA;AAE3F;"}
1
+ {"version":3,"file":"TriggerPayloadPersister.js","sources":["../../../../../packages/engine-actions/src/triggers/TriggerPayloadPersister.ts"],"sourcesContent":["import { Client, InsertBuilder } from '@contember/database'\nimport { Mapper } from '@contember/engine-content-api'\nimport { Actions, ActionsPayload } from '@contember/schema'\nimport { EventRow } from '../model/types'\nimport { notify } from '../utils/notifyChannel'\n\n\ntype EventRowToInsert = Omit<EventRow, 'created_at' | 'visible_at' | 'last_state_change' | 'log'> & {\n\tcreated_at: string | Date\n\tvisible_at: string | Date\n\tlast_state_change: string | Date\n}\n\nexport class TriggerPayloadPersister {\n\tconstructor(\n\t\tprivate readonly mapper: Mapper,\n\t\tprivate readonly client: Client,\n\t\tprivate readonly providers: { uuid: () => string },\n\t\tprivate readonly projectSlug: string,\n\t\tprivate readonly stageId: string,\n\t\tprivate readonly schemaId?: number,\n\t) {\n\t}\n\n\tpublic async persist(trigger: Actions.AnyTrigger, payloads: ActionsPayload.AnyEventPayload[]): Promise<void> {\n\t\tconst chunkSize = 100\n\t\tif (!this.schemaId) {\n\t\t\tthrow new Error('Schema id is not set')\n\t\t}\n\t\tfor (let i = 0; i < payloads.length; i += chunkSize) {\n\t\t\tconst chunk = payloads.slice(i, i + chunkSize)\n\t\t\tawait InsertBuilder.create()\n\t\t\t\t.into('actions_event')\n\t\t\t\t.values(chunk.map((it): EventRowToInsert => ({\n\t\t\t\t\tid: this.providers.uuid(),\n\t\t\t\t\ttransaction_id: this.mapper.transactionId,\n\t\t\t\t\tcreated_at: 'now',\n\t\t\t\t\tvisible_at: 'now',\n\t\t\t\t\tnum_retries: 0,\n\t\t\t\t\tstate: 'created',\n\t\t\t\t\tstage_id: this.stageId,\n\t\t\t\t\tschema_id: this.schemaId!,\n\t\t\t\t\ttarget: trigger.target,\n\t\t\t\t\ttrigger: trigger.name,\n\t\t\t\t\tpriority: trigger.priority ?? 0,\n\t\t\t\t\tpayload: it,\n\t\t\t\t\tresolved_at: null,\n\t\t\t\t\tlast_state_change: 'now',\n\t\t\t\t})))\n\t\t\t\t.execute(this.client)\n\t\t}\n\n\t\tawait notify(this.client, this.projectSlug)\n\t}\n}\n"],"names":["InsertBuilder"],"mappings":";;AAaO,MAAM,wBAAwB;AAAA,EACpC,YACkB,QACA,QACA,WACA,aACA,SACA,UAChB;AANgB,SAAA,SAAA;AACA,SAAA,SAAA;AACA,SAAA,YAAA;AACA,SAAA,cAAA;AACA,SAAA,UAAA;AACA,SAAA,WAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,SAA6B,UAA2D;AAC5G,UAAM,YAAY;AACd,QAAA,CAAC,KAAK,UAAU;AACb,YAAA,IAAI,MAAM,sBAAsB;AAAA,IAAA;AAEvC,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,WAAW;AACpD,YAAM,QAAQ,SAAS,MAAM,GAAG,IAAI,SAAS;AACvC,YAAAA,gBAAc,OAAO,EACzB,KAAK,eAAe,EACpB,OAAO,MAAM,IAAI,CAAC,QAA0B;AAAA,QAC5C,IAAI,KAAK,UAAU,KAAK;AAAA,QACxB,gBAAgB,KAAK,OAAO;AAAA,QAC5B,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,OAAO;AAAA,QACP,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,UAAU,QAAQ,YAAY;AAAA,QAC9B,SAAS;AAAA,QACT,aAAa;AAAA,QACb,mBAAmB;AAAA,MAClB,EAAA,CAAC,EACF,QAAQ,KAAK,MAAM;AAAA,IAAA;AAGtB,UAAM,OAAO,KAAK,QAAQ,KAAK,WAAW;AAAA,EAAA;AAE5C;"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const NOTIFY_CHANNEL_NAME = "actions_event";
4
+ const notify = async (db, projectSlug) => {
5
+ await db.query("SELECT pg_notify(?, ?)", [NOTIFY_CHANNEL_NAME, projectSlug]);
6
+ };
7
+ exports.NOTIFY_CHANNEL_NAME = NOTIFY_CHANNEL_NAME;
8
+ exports.notify = notify;
9
+ //# sourceMappingURL=notifyChannel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyChannel.cjs","sources":["../../../../../packages/engine-actions/src/utils/notifyChannel.ts"],"sourcesContent":["import { Client } from '@contember/database'\n\nexport const NOTIFY_CHANNEL_NAME = 'actions_event'\nexport const notify = async (db: Client, projectSlug: string) => {\n\tawait db.query('SELECT pg_notify(?, ?)', [NOTIFY_CHANNEL_NAME, projectSlug])\n}\n"],"names":[],"mappings":";;AAEO,MAAM,sBAAsB;AACtB,MAAA,SAAS,OAAO,IAAY,gBAAwB;AAChE,QAAM,GAAG,MAAM,0BAA0B,CAAC,qBAAqB,WAAW,CAAC;AAC5E;;;"}
@@ -0,0 +1,9 @@
1
+ const NOTIFY_CHANNEL_NAME = "actions_event";
2
+ const notify = async (db, projectSlug) => {
3
+ await db.query("SELECT pg_notify(?, ?)", [NOTIFY_CHANNEL_NAME, projectSlug]);
4
+ };
5
+ export {
6
+ NOTIFY_CHANNEL_NAME,
7
+ notify
8
+ };
9
+ //# sourceMappingURL=notifyChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyChannel.js","sources":["../../../../../packages/engine-actions/src/utils/notifyChannel.ts"],"sourcesContent":["import { Client } from '@contember/database'\n\nexport const NOTIFY_CHANNEL_NAME = 'actions_event'\nexport const notify = async (db: Client, projectSlug: string) => {\n\tawait db.query('SELECT pg_notify(?, ?)', [NOTIFY_CHANNEL_NAME, projectSlug])\n}\n"],"names":[],"mappings":"AAEO,MAAM,sBAAsB;AACtB,MAAA,SAAS,OAAO,IAAY,gBAAwB;AAChE,QAAM,GAAG,MAAM,0BAA0B,CAAC,qBAAqB,WAAW,CAAC;AAC5E;"}