@reventlessdev/reventless-aws 3.0.0-alpha.175 → 3.0.0-alpha.176
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.
- package/CHANGELOG.md +13 -0
- package/package.json +10 -10
- package/src/Platform.res +115 -31
- package/src/Platform.res.mjs +217 -44
- package/src/adapter/DcbEventLog/DcbBackend.res +2 -2
- package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res +4 -1
- package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs +1 -1
- package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream_Runtime.res +14 -4
- package/src/adapter/EventCollector/EventCollectorChannel_DynamoDbStream_Runtime.res.mjs +19 -14
- package/src/adapter/EventLog/EventLogBackend.res +82 -0
- package/src/adapter/EventLog/EventLogBackend.res.mjs +53 -0
- package/src/adapter/EventLog/EventLogStorage.res +15 -0
- package/src/adapter/EventLog/EventLogStorage.res.mjs +20 -1
- package/src/adapter/EventLog/EventLogStorage_Postgres.res +37 -0
- package/src/adapter/EventLog/EventLogStorage_Postgres.res.mjs +21 -0
- package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res +26 -11
- package/src/adapter/Postgres/PgChangeFeedRelay_Builder.res.mjs +15 -6
- package/src/adapter/Postgres/PgChangeFeedRelay_Runtime.res +54 -0
- package/src/adapter/Postgres/PgChangeFeedRelay_Runtime.res.mjs +23 -0
- package/src/adapter/Postgres/PgProjectionFeed.res +100 -0
- package/src/adapter/Postgres/PgProjectionFeed.res.mjs +54 -0
- package/src/adapter/QueryDb/PgQueryResolver_Lambda.res +192 -0
- package/src/adapter/QueryDb/PgQueryResolver_Lambda.res.mjs +141 -0
- package/src/adapter/QueryDb/QueryDbBackend.res +52 -0
- package/src/adapter/QueryDb/QueryDbBackend.res.mjs +44 -0
- package/src/adapter/QueryDb/QueryDbResolvers.res +48 -0
- package/src/adapter/QueryDb/QueryDbResolvers.res.mjs +17 -1
- package/src/adapter/QueryDb/QueryDbStorage.res +44 -0
- package/src/adapter/QueryDb/QueryDbStorage.res.mjs +34 -1
- package/src/adapter/QueryDb/QueryDbStorage_Postgres.res +43 -0
- package/src/adapter/QueryDb/QueryDbStorage_Postgres.res.mjs +21 -0
- package/src/adapter/QueryDb/QueryDbStorage_Postgres_Runtime.res +19 -0
- package/src/adapter/QueryDb/QueryDbStorage_Postgres_Runtime.res.mjs +15 -0
- package/src/adapter/QueryEngine/QueryEngine_DynamoDb.res +12 -1
- package/src/adapter/QueryEngine/QueryEngine_DynamoDb.res.mjs +2 -1
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res +83 -3
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs +46 -3
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res +83 -3
- package/src/adapter/Runtime/AggregateRuntime_Builder_Single_Async.res.mjs +48 -3
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res +130 -5
- package/src/adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs +66 -6
- package/src/adapter/Runtime/PgChangeFeedRelayEntryPoint.mjs +15 -10
- package/src/adapter/Runtime/ReadModelEntryPoint.mjs +32 -15
- package/src/adapter/Runtime/StateViewSliceEntryPoint.mjs +26 -12
- package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res +138 -8
- package/src/adapter/Runtime/StateViewSliceRuntime_Builder_Single.res.mjs +76 -11
- package/src/components/Aggregate_Builder_Single.res +12 -5
- package/src/components/Aggregate_Builder_Single.res.mjs +12 -6
- package/src/components/Aggregate_Builder_Single_Async.res +12 -5
- package/src/components/Aggregate_Builder_Single_Async.res.mjs +12 -6
- package/src/components/ReadModel_Builder_NoResolver.res.mjs +1 -1
- package/src/components/ReadModel_Builder_NoResolver_Stream.res +13 -4
- package/src/components/ReadModel_Builder_NoResolver_Stream.res.mjs +14 -9
- package/src/components/ReadModel_Builder_Single.res +14 -5
- package/src/components/ReadModel_Builder_Single.res.mjs +15 -12
- package/src/components/ReadModel_Builder_Single_Stream.res +14 -5
- package/src/components/ReadModel_Builder_Single_Stream.res.mjs +15 -12
- package/src/components/StateViewSlice_Builder.res +10 -4
- package/src/components/StateViewSlice_Builder.res.mjs +8 -10
- package/src/components/StateViewSlice_Builder_Stream.res +10 -4
- package/src/components/StateViewSlice_Builder_Stream.res.mjs +8 -10
- package/src/plugin/runtime/PluginRuntime_Builder.res +12 -0
- package/src/plugin/runtime/PluginRuntime_Builder.res.mjs +4 -0
- package/tests/EventCollectorChannelStreamRuntimeTest.res +55 -0
- package/tests/EventCollectorChannelStreamRuntimeTest.res.mjs +78 -0
- package/tests/PgChangeFeedRelay_IntegrationTest.res +115 -4
- package/tests/PgChangeFeedRelay_IntegrationTest.res.mjs +84 -0
- package/tests/PgPipeline_IntegrationTest.res +208 -0
- package/tests/PgPipeline_IntegrationTest.res.mjs +260 -0
- package/tests/PgQueryResolver_LambdaTest.res +206 -0
- package/tests/PgQueryResolver_LambdaTest.res.mjs +259 -0
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
+
import * as Aws from "@pulumi/aws";
|
|
3
4
|
import * as Stdlib_Dict from "@rescript/runtime/lib/es6/Stdlib_Dict.js";
|
|
4
5
|
import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
|
|
5
6
|
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
6
7
|
import * as Pulumi from "@pulumi/pulumi";
|
|
7
8
|
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
8
9
|
import * as Primitive_object from "@rescript/runtime/lib/es6/Primitive_object.js";
|
|
10
|
+
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
9
11
|
import * as Logger$ReventlessCore from "@reventlessdev/reventless-core/src/util/Logger.res.mjs";
|
|
10
12
|
import * as Component$ReventlessCore from "@reventlessdev/reventless-core/src/components/Component.res.mjs";
|
|
13
|
+
import * as DcbBackend$ReventlessAws from "../DcbEventLog/DcbBackend.res.mjs";
|
|
14
|
+
import * as PolicyDocument$PulumiAws from "@reventlessdev/rescript-pulumi-aws/src/IAM/PolicyDocument.res.mjs";
|
|
11
15
|
import * as Util_Bundle$ReventlessAws from "../../util/Util_Bundle.res.mjs";
|
|
16
|
+
import * as Util_Pulumi$ReventlessCore from "@reventlessdev/reventless-core/src/util/Util_Pulumi.res.mjs";
|
|
17
|
+
import * as QueryDbBackend$ReventlessAws from "../QueryDb/QueryDbBackend.res.mjs";
|
|
18
|
+
import * as PgProjectionFeed$ReventlessAws from "../Postgres/PgProjectionFeed.res.mjs";
|
|
12
19
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "./RuntimeEnvironment_Lambda.res.mjs";
|
|
13
20
|
import * as EventCollectorChannel_DynamoDbStream$ReventlessAws from "../EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs";
|
|
14
21
|
|
|
@@ -81,14 +88,45 @@ let finished = {
|
|
|
81
88
|
contents: false
|
|
82
89
|
};
|
|
83
90
|
|
|
84
|
-
function buildLambda(parent, handlerOutputs, packageDirs, channelSpecs, memorySizeOpt, timeoutOpt) {
|
|
91
|
+
function buildLambda(parent, handlerOutputs, packageDirs, channelSpecs, feedQueueOpt, memorySizeOpt, timeoutOpt) {
|
|
92
|
+
let feedQueue = feedQueueOpt !== undefined ? Primitive_option.valFromOption(feedQueueOpt) : undefined;
|
|
85
93
|
let memorySize = memorySizeOpt !== undefined ? memorySizeOpt : 1024;
|
|
86
94
|
let timeout = timeoutOpt !== undefined ? timeoutOpt : 30;
|
|
87
95
|
let opts_parent = parent;
|
|
88
96
|
let opts = {
|
|
89
97
|
parent: opts_parent
|
|
90
98
|
};
|
|
91
|
-
let
|
|
99
|
+
let qdbSelection = QueryDbBackend$ReventlessAws.get();
|
|
100
|
+
let pgConnectionFragment = qdbSelection !== undefined ? qdbSelection.connectionConfig.apply(cc => {
|
|
101
|
+
let pgConnectionJson = JSON.stringify(Object.fromEntries([
|
|
102
|
+
[
|
|
103
|
+
"host",
|
|
104
|
+
cc.host
|
|
105
|
+
],
|
|
106
|
+
[
|
|
107
|
+
"port",
|
|
108
|
+
cc.port
|
|
109
|
+
],
|
|
110
|
+
[
|
|
111
|
+
"database",
|
|
112
|
+
cc.database
|
|
113
|
+
],
|
|
114
|
+
[
|
|
115
|
+
"username",
|
|
116
|
+
cc.username
|
|
117
|
+
],
|
|
118
|
+
[
|
|
119
|
+
"secretArn",
|
|
120
|
+
cc.secretArn
|
|
121
|
+
]
|
|
122
|
+
]));
|
|
123
|
+
return `,"pgConnection":` + pgConnectionJson;
|
|
124
|
+
}) : Pulumi.output("");
|
|
125
|
+
let handlerConfigOutput = Pulumi.all([
|
|
126
|
+
Pulumi.all(handlerOutputs),
|
|
127
|
+
pgConnectionFragment
|
|
128
|
+
]).apply(param => {
|
|
129
|
+
let handlers = param[0];
|
|
92
130
|
let paths = [];
|
|
93
131
|
handlers.forEach(h => {
|
|
94
132
|
paths.push(h.specModule);
|
|
@@ -110,15 +148,33 @@ function buildLambda(parent, handlerOutputs, packageDirs, channelSpecs, memorySi
|
|
|
110
148
|
}).join(",");
|
|
111
149
|
let baseJson = Stdlib_Option.getOr(JSON.stringify(base), `""`);
|
|
112
150
|
let urnJson = Stdlib_Option.getOr(JSON.stringify(sharedUrn), `""`);
|
|
113
|
-
return `{"v":2,"base":` + baseJson + `,"sourceUrn":` + urnJson + `,"handlers":[` + entries + `]}`;
|
|
151
|
+
return `{"v":2,"base":` + baseJson + `,"sourceUrn":` + urnJson + `,"handlers":[` + entries + `]` + param[1] + `}`;
|
|
114
152
|
});
|
|
115
153
|
let envVars = {};
|
|
116
154
|
envVars["HANDLER_CONFIG"] = handlerConfigOutput;
|
|
117
155
|
packageDirs["@reventlessdev/reventless-aws"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-aws");
|
|
118
156
|
packageDirs["@reventlessdev/reventless-core"] = Util_Bundle$ReventlessAws.resolvePackageRoot("@reventlessdev/reventless-core");
|
|
119
157
|
let match = Util_Bundle$ReventlessAws.buildCodeArchive("@reventlessdev/reventless-aws/src/adapter/Runtime/StateViewSliceEntryPoint.mjs", packageDirs, undefined);
|
|
120
|
-
let
|
|
158
|
+
let vpcConfig = qdbSelection !== undefined ? qdbSelection.securityGroupId.apply(sgId => ({
|
|
159
|
+
subnetIds: qdbSelection.subnetIds,
|
|
160
|
+
securityGroupIds: [sgId]
|
|
161
|
+
})) : undefined;
|
|
162
|
+
let runtime = RuntimeEnvironment_Lambda$ReventlessAws.makeFromCodeAsset("AllStateViewSlices", match.code, match.sourceCodeHash, envVars, memorySize, timeout, undefined, undefined, undefined, undefined, vpcConfig, opts);
|
|
163
|
+
if (qdbSelection !== undefined) {
|
|
164
|
+
qdbSelection.connectionConfig.apply(cc => new (Aws.iam.RolePolicy)("AllStateViewSlices-pgSecret", {
|
|
165
|
+
policy: PolicyDocument$PulumiAws.toJsonString(PolicyDocument$PulumiAws.make(undefined, "AllStateViewSlices-pgSecretPolicy", [{
|
|
166
|
+
Sid: "AllowGetPgSecret",
|
|
167
|
+
Effect: "Allow",
|
|
168
|
+
Action: "secretsmanager:GetSecretValue",
|
|
169
|
+
Resource: cc.secretArn
|
|
170
|
+
}])),
|
|
171
|
+
role: runtime.parts.lambdaRole.id
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
121
174
|
EventCollectorChannel_DynamoDbStream$ReventlessAws.connect("AllStateViewSlices", channelSpecs, runtime, opts);
|
|
175
|
+
if (feedQueue !== undefined) {
|
|
176
|
+
return PgProjectionFeed$ReventlessAws.connect("AllStateViewSlicesFeed", feedQueue, runtime.parts.lambda, runtime.parts.lambdaRole, Util_Pulumi$ReventlessCore.ComponentResourceOptions.toCustomResourceOptions(opts));
|
|
177
|
+
}
|
|
122
178
|
}
|
|
123
179
|
|
|
124
180
|
function finishWithDcbEventLog(dcbEventLog) {
|
|
@@ -138,6 +194,10 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
138
194
|
let channel = EventCollectorChannel_DynamoDbStream$ReventlessAws.make("AllStateViewSlices", eventTopics, {
|
|
139
195
|
parent: parent
|
|
140
196
|
});
|
|
197
|
+
let feedQueue = DcbBackend$ReventlessAws.isPostgres() ? PgProjectionFeed$ReventlessAws.makeQueue("AllStateViewSlicesFeed", "aws-svs-feed", false, true, {
|
|
198
|
+
parent: parent
|
|
199
|
+
}) : undefined;
|
|
200
|
+
let feedArnOutput = feedQueue !== undefined ? feedQueue.arn : Pulumi.output("");
|
|
141
201
|
let handlerOutputs = [];
|
|
142
202
|
let packageDirs = {};
|
|
143
203
|
let allQueryDbResources = [];
|
|
@@ -150,11 +210,11 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
150
210
|
let projectionPkg = Util_Bundle$ReventlessAws.extractPackageName(info.projectionModulePath);
|
|
151
211
|
packageDirs[projectionPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(projectionPkg);
|
|
152
212
|
let etResources = dcbOutputs.eventTopic.resources;
|
|
153
|
-
let
|
|
154
|
-
let sourceUrn
|
|
213
|
+
let resource = etResources[0];
|
|
214
|
+
let sourceUrn = resource !== undefined ? resource.urn : feedArnOutput;
|
|
155
215
|
let handlerJson = Pulumi.all([
|
|
156
216
|
info.queryDbTableName,
|
|
157
|
-
sourceUrn
|
|
217
|
+
sourceUrn
|
|
158
218
|
]).apply(param => ({
|
|
159
219
|
specModule: info.specModulePath,
|
|
160
220
|
projectionModule: info.projectionModulePath,
|
|
@@ -167,7 +227,7 @@ function finishWithDcbEventLog(dcbEventLog) {
|
|
|
167
227
|
channel: channel,
|
|
168
228
|
eventTopics: eventTopics,
|
|
169
229
|
resources: allQueryDbResources
|
|
170
|
-
}], undefined, undefined);
|
|
230
|
+
}], Primitive_option.some(feedQueue), undefined, undefined);
|
|
171
231
|
} else {
|
|
172
232
|
log.warn("StateViewSliceRuntime_Builder_Single", undefined, "finishWithDcbEventLog: DCB EventLog has no parent");
|
|
173
233
|
}
|
|
@@ -192,6 +252,10 @@ function finish() {
|
|
|
192
252
|
if (parent !== undefined) {
|
|
193
253
|
let handlerOutputs = [];
|
|
194
254
|
let packageDirs = {};
|
|
255
|
+
let feedQueue = DcbBackend$ReventlessAws.isPostgres() ? PgProjectionFeed$ReventlessAws.makeQueue("AllStateViewSlicesFeed", "aws-svs-feed", false, true, {
|
|
256
|
+
parent: parent
|
|
257
|
+
}) : undefined;
|
|
258
|
+
let feedArnOutput = feedQueue !== undefined ? feedQueue.arn : Pulumi.output("");
|
|
195
259
|
storedSpecs.forEach(spec => {
|
|
196
260
|
let info = sliceInfos[spec.componentName];
|
|
197
261
|
if (info === undefined) {
|
|
@@ -203,16 +267,17 @@ function finish() {
|
|
|
203
267
|
packageDirs[projectionPkg] = Util_Bundle$ReventlessAws.resolvePackageRoot(projectionPkg);
|
|
204
268
|
let handlerJson = Pulumi.all([
|
|
205
269
|
info.queryDbTableName,
|
|
206
|
-
spec.sourceUrns
|
|
270
|
+
spec.sourceUrns,
|
|
271
|
+
feedArnOutput
|
|
207
272
|
]).apply(param => ({
|
|
208
273
|
specModule: info.specModulePath,
|
|
209
274
|
projectionModule: info.projectionModulePath,
|
|
210
275
|
queryDbTableName: param[0],
|
|
211
|
-
sourceUrn: param[1][0]
|
|
276
|
+
sourceUrn: Stdlib_Option.getOr(param[1][0], param[2])
|
|
212
277
|
}));
|
|
213
278
|
handlerOutputs.push(handlerJson);
|
|
214
279
|
});
|
|
215
|
-
buildLambda(parent, handlerOutputs, packageDirs, storedSpecs.map(param => param.channelSpec), match[0], match[1]);
|
|
280
|
+
buildLambda(parent, handlerOutputs, packageDirs, storedSpecs.map(param => param.channelSpec), Primitive_option.some(feedQueue), match[0], match[1]);
|
|
216
281
|
} else {
|
|
217
282
|
log.warn("StateViewSliceRuntime_Builder_Single", undefined, `finish: grandParent not set`);
|
|
218
283
|
}
|
|
@@ -21,7 +21,7 @@ module Make = (
|
|
|
21
21
|
RuntimeEnvironment,
|
|
22
22
|
CommandGeneratorResolvers,
|
|
23
23
|
CommandTopicChannel,
|
|
24
|
-
EventLogStorage.
|
|
24
|
+
EventLogStorage.Selectable,
|
|
25
25
|
EventTopicPublisher.DynamoDbStream,
|
|
26
26
|
EventCollectorChannel,
|
|
27
27
|
AggregateRuntimeBuilder,
|
|
@@ -38,10 +38,17 @@ module Make = (
|
|
|
38
38
|
let aggregate = Inner.make(~api, ~opts?)
|
|
39
39
|
|
|
40
40
|
// Extract the event log table name from the aggregate's outputs.
|
|
41
|
-
// EventLog.outputs.resources[0] is the DynamoDB table resource.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
// EventLog.outputs.resources[0] is the DynamoDB table resource. On the
|
|
42
|
+
// Postgres backend there is no table (resources is empty) — the stable
|
|
43
|
+
// `event_log.log_name` (`<Aggregate>EventLog`) stands in for it, both here
|
|
44
|
+
// and in the entry point's Postgres branch.
|
|
45
|
+
let eventLogTableName = if EventLogBackend.isPostgres() {
|
|
46
|
+
Pulumi.Output.make(Spec.name ++ "EventLog")
|
|
47
|
+
} else {
|
|
48
|
+
let eventLogOutputs = (aggregate->Inner.outputs).eventLog
|
|
49
|
+
let tableResource = eventLogOutputs.resources->Array.getUnsafe(0)
|
|
50
|
+
tableResource.name
|
|
51
|
+
}
|
|
45
52
|
|
|
46
53
|
AggregateRuntimeBuilder.registerAggregate(
|
|
47
54
|
~aggregateName=Spec.name,
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
+
import * as Pulumi from "@pulumi/pulumi";
|
|
3
4
|
import * as Util_Bundle$ReventlessAws from "../util/Util_Bundle.res.mjs";
|
|
5
|
+
import * as EventLogBackend$ReventlessAws from "../adapter/EventLog/EventLogBackend.res.mjs";
|
|
6
|
+
import * as EventLogStorage$ReventlessAws from "../adapter/EventLog/EventLogStorage.res.mjs";
|
|
4
7
|
import * as Plugin_Helpers$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/component/Plugin_Helpers.res.mjs";
|
|
5
8
|
import * as Aggregate_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/Aggregate/Aggregate_Builder.res.mjs";
|
|
6
9
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "../adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
|
|
7
10
|
import * as CommandTopicChannel_SQS_Sync$ReventlessAws from "../adapter/CommandTopic/CommandTopicChannel_SQS_Sync.res.mjs";
|
|
8
|
-
import * as EventLogStorage_DynamoDbStream$ReventlessAws from "../adapter/EventLog/EventLogStorage_DynamoDbStream.res.mjs";
|
|
9
11
|
import * as AggregateRuntime_Builder_Single$ReventlessAws from "../adapter/Runtime/AggregateRuntime_Builder_Single.res.mjs";
|
|
10
12
|
import * as CommandGeneratorResolvers_AppSync$ReventlessAws from "../adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res.mjs";
|
|
11
13
|
import * as EventTopicPublisher_DynamoDbStream$ReventlessAws from "../adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res.mjs";
|
|
@@ -24,7 +26,7 @@ function Make(Spec) {
|
|
|
24
26
|
asEffectHandler: prim => prim
|
|
25
27
|
})(CommandGeneratorResolvers_AppSync$ReventlessAws)({
|
|
26
28
|
make: CommandTopicChannel_SQS_Sync$ReventlessAws.make
|
|
27
|
-
})(
|
|
29
|
+
})(EventLogStorage$ReventlessAws.Selectable)(EventTopicPublisher_DynamoDbStream$ReventlessAws)({
|
|
28
30
|
make: EventCollectorChannel_DynamoDbStream$ReventlessAws.make,
|
|
29
31
|
connect: EventCollectorChannel_DynamoDbStream$ReventlessAws.connect
|
|
30
32
|
})({
|
|
@@ -42,9 +44,13 @@ function Make(Spec) {
|
|
|
42
44
|
})(Plugin_Helpers$ReventlessCore.NoopHooksConfig);
|
|
43
45
|
let make = (api, opts) => {
|
|
44
46
|
let aggregate = Inner.make(api, opts);
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
let eventLogTableName;
|
|
48
|
+
if (EventLogBackend$ReventlessAws.isPostgres()) {
|
|
49
|
+
eventLogTableName = Pulumi.output(Spec.name + "EventLog");
|
|
50
|
+
} else {
|
|
51
|
+
let eventLogOutputs = Inner.outputs(aggregate).eventLog;
|
|
52
|
+
eventLogTableName = eventLogOutputs.resources[0].name;
|
|
53
|
+
}
|
|
48
54
|
AggregateRuntime_Builder_Single$ReventlessAws.registerAggregate(Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Behavior.moduleUrl), eventLogTableName);
|
|
49
55
|
return aggregate;
|
|
50
56
|
};
|
|
@@ -77,4 +83,4 @@ export {
|
|
|
77
83
|
AggregateRuntimeBuilder,
|
|
78
84
|
Make,
|
|
79
85
|
}
|
|
80
|
-
/*
|
|
86
|
+
/* @pulumi/pulumi Not a pure module */
|
|
@@ -21,7 +21,7 @@ module Make = (
|
|
|
21
21
|
RuntimeEnvironment,
|
|
22
22
|
CommandGeneratorResolvers,
|
|
23
23
|
CommandTopicChannel,
|
|
24
|
-
EventLogStorage.
|
|
24
|
+
EventLogStorage.Selectable,
|
|
25
25
|
EventTopicPublisher.DynamoDbStream,
|
|
26
26
|
EventCollectorChannel,
|
|
27
27
|
AggregateRuntimeBuilder,
|
|
@@ -38,10 +38,17 @@ module Make = (
|
|
|
38
38
|
let aggregate = Inner.make(~api, ~opts?)
|
|
39
39
|
|
|
40
40
|
// Extract the event log table name from the aggregate's outputs.
|
|
41
|
-
// EventLog.outputs.resources[0] is the DynamoDB table resource.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
// EventLog.outputs.resources[0] is the DynamoDB table resource. On the
|
|
42
|
+
// Postgres backend there is no table (resources is empty) — the stable
|
|
43
|
+
// `event_log.log_name` (`<Aggregate>EventLog`) stands in for it, both here
|
|
44
|
+
// and in the entry point's Postgres branch.
|
|
45
|
+
let eventLogTableName = if EventLogBackend.isPostgres() {
|
|
46
|
+
Pulumi.Output.make(Spec.name ++ "EventLog")
|
|
47
|
+
} else {
|
|
48
|
+
let eventLogOutputs = (aggregate->Inner.outputs).eventLog
|
|
49
|
+
let tableResource = eventLogOutputs.resources->Array.getUnsafe(0)
|
|
50
|
+
tableResource.name
|
|
51
|
+
}
|
|
45
52
|
|
|
46
53
|
AggregateRuntimeBuilder.registerAggregate(
|
|
47
54
|
~aggregateName=Spec.name,
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
+
import * as Pulumi from "@pulumi/pulumi";
|
|
3
4
|
import * as Util_Bundle$ReventlessAws from "../util/Util_Bundle.res.mjs";
|
|
5
|
+
import * as EventLogBackend$ReventlessAws from "../adapter/EventLog/EventLogBackend.res.mjs";
|
|
6
|
+
import * as EventLogStorage$ReventlessAws from "../adapter/EventLog/EventLogStorage.res.mjs";
|
|
4
7
|
import * as Plugin_Helpers$ReventlessCore from "@reventlessdev/reventless-core/src/plugin/component/Plugin_Helpers.res.mjs";
|
|
5
8
|
import * as Aggregate_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/Aggregate/Aggregate_Builder.res.mjs";
|
|
6
9
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "../adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
|
|
7
10
|
import * as CommandTopicChannel_SQS_Async$ReventlessAws from "../adapter/CommandTopic/CommandTopicChannel_SQS_Async.res.mjs";
|
|
8
|
-
import * as EventLogStorage_DynamoDbStream$ReventlessAws from "../adapter/EventLog/EventLogStorage_DynamoDbStream.res.mjs";
|
|
9
11
|
import * as CommandGeneratorResolvers_AppSync$ReventlessAws from "../adapter/CommandGenerator/CommandGeneratorResolvers_AppSync.res.mjs";
|
|
10
12
|
import * as EventTopicPublisher_DynamoDbStream$ReventlessAws from "../adapter/EventTopic/EventTopicPublisher_DynamoDbStream.res.mjs";
|
|
11
13
|
import * as EventCollectorChannel_DynamoDbStream$ReventlessAws from "../adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs";
|
|
@@ -24,7 +26,7 @@ function Make(Spec) {
|
|
|
24
26
|
asEffectHandler: prim => prim
|
|
25
27
|
})(CommandGeneratorResolvers_AppSync$ReventlessAws)({
|
|
26
28
|
make: CommandTopicChannel_SQS_Async$ReventlessAws.make
|
|
27
|
-
})(
|
|
29
|
+
})(EventLogStorage$ReventlessAws.Selectable)(EventTopicPublisher_DynamoDbStream$ReventlessAws)({
|
|
28
30
|
make: EventCollectorChannel_DynamoDbStream$ReventlessAws.make,
|
|
29
31
|
connect: EventCollectorChannel_DynamoDbStream$ReventlessAws.connect
|
|
30
32
|
})({
|
|
@@ -42,9 +44,13 @@ function Make(Spec) {
|
|
|
42
44
|
})(Plugin_Helpers$ReventlessCore.NoopHooksConfig);
|
|
43
45
|
let make = (api, opts) => {
|
|
44
46
|
let aggregate = Inner.make(api, opts);
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
let eventLogTableName;
|
|
48
|
+
if (EventLogBackend$ReventlessAws.isPostgres()) {
|
|
49
|
+
eventLogTableName = Pulumi.output(Spec.name + "EventLog");
|
|
50
|
+
} else {
|
|
51
|
+
let eventLogOutputs = Inner.outputs(aggregate).eventLog;
|
|
52
|
+
eventLogTableName = eventLogOutputs.resources[0].name;
|
|
53
|
+
}
|
|
48
54
|
AggregateRuntime_Builder_Single_Async$ReventlessAws.registerAggregate(Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Behavior.moduleUrl), eventLogTableName);
|
|
49
55
|
return aggregate;
|
|
50
56
|
};
|
|
@@ -77,4 +83,4 @@ export {
|
|
|
77
83
|
AggregateRuntimeBuilder,
|
|
78
84
|
Make,
|
|
79
85
|
}
|
|
80
|
-
/*
|
|
86
|
+
/* @pulumi/pulumi Not a pure module */
|
|
@@ -34,7 +34,7 @@ function Make(Spec) {
|
|
|
34
34
|
let queryDbOutputs = Inner.outputs(readModel).queryDb;
|
|
35
35
|
let tableResource = queryDbOutputs.resources[0];
|
|
36
36
|
let queryDbTableName = tableResource.name;
|
|
37
|
-
EventCollectorRuntime_Builder_Single$ReventlessAws.registerReadModel(Inner.Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Inner.Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Mappings.moduleUrl), queryDbTableName);
|
|
37
|
+
EventCollectorRuntime_Builder_Single$ReventlessAws.registerReadModel(Inner.Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Inner.Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Mappings.moduleUrl), queryDbTableName, undefined);
|
|
38
38
|
return readModel;
|
|
39
39
|
};
|
|
40
40
|
let finish = () => EventCollectorRuntime_Builder_Single$ReventlessAws.finish();
|
|
@@ -24,7 +24,7 @@ module Make = (
|
|
|
24
24
|
Spec,
|
|
25
25
|
Mappings,
|
|
26
26
|
RuntimeEnvironment,
|
|
27
|
-
|
|
27
|
+
QueryDbStorage.SelectableStream,
|
|
28
28
|
QueryDbResolvers_AppSync_NoOp,
|
|
29
29
|
EventCollectorChannel,
|
|
30
30
|
EventCollectorRuntimeBuilder,
|
|
@@ -39,15 +39,24 @@ module Make = (
|
|
|
39
39
|
let make = (~api, ~apiRole, ~allEventTopics, ~opts=?): component => {
|
|
40
40
|
let readModel = Inner.make(~api, ~apiRole, ~allEventTopics, ~opts?)
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
// On the Postgres backend there is no DynamoDB table (resources is empty) —
|
|
43
|
+
// the read-model spec name is the stable `qdb_<name>` discriminator, both
|
|
44
|
+
// here and in the entry point's Postgres branch.
|
|
45
|
+
let pgBacked = QueryDbBackend.isPostgresFor(Spec.name)
|
|
46
|
+
let queryDbTableName = if pgBacked {
|
|
47
|
+
Pulumi.Output.make(Spec.name)
|
|
48
|
+
} else {
|
|
49
|
+
let queryDbOutputs = (readModel->Inner.outputs).queryDb
|
|
50
|
+
let tableResource = queryDbOutputs.resources->Array.getUnsafe(0)
|
|
51
|
+
tableResource.name
|
|
52
|
+
}
|
|
45
53
|
|
|
46
54
|
EventCollectorRuntimeBuilder.registerReadModel(
|
|
47
55
|
~readModelName=Spec.name,
|
|
48
56
|
~specModulePath=Util_Bundle.getModuleSpecifier(Spec.moduleUrl),
|
|
49
57
|
~mappingsModulePath=Util_Bundle.getModuleSpecifier(Mappings.moduleUrl),
|
|
50
58
|
~queryDbTableName,
|
|
59
|
+
~pgBacked,
|
|
51
60
|
)
|
|
52
61
|
|
|
53
62
|
readModel
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
+
import * as Pulumi from "@pulumi/pulumi";
|
|
3
4
|
import * as Util_Bundle$ReventlessAws from "../util/Util_Bundle.res.mjs";
|
|
5
|
+
import * as QueryDbBackend$ReventlessAws from "../adapter/QueryDb/QueryDbBackend.res.mjs";
|
|
6
|
+
import * as QueryDbStorage$ReventlessAws from "../adapter/QueryDb/QueryDbStorage.res.mjs";
|
|
4
7
|
import * as ReadModel_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/ReadModel/ReadModel_Builder.res.mjs";
|
|
5
8
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "../adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
|
|
6
9
|
import * as QueryDbResolvers_AppSync_NoOp$ReventlessAws from "../adapter/QueryDb/QueryDbResolvers_AppSync_NoOp.res.mjs";
|
|
7
|
-
import * as QueryDbStorage_DynamoDbStream$ReventlessAws from "../adapter/QueryDb/QueryDbStorage_DynamoDbStream.res.mjs";
|
|
8
10
|
import * as EventCollectorChannel_DynamoDbStream$ReventlessAws from "../adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs";
|
|
9
11
|
import * as EventCollectorRuntime_Builder_Single$ReventlessAws from "../adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs";
|
|
10
12
|
|
|
@@ -16,9 +18,7 @@ function Make(Spec) {
|
|
|
16
18
|
extractCorrelationId: RuntimeEnvironment_Lambda$ReventlessAws.extractCorrelationId,
|
|
17
19
|
asEventHandler: prim => prim,
|
|
18
20
|
asEffectHandler: prim => prim
|
|
19
|
-
})({
|
|
20
|
-
make: QueryDbStorage_DynamoDbStream$ReventlessAws.make
|
|
21
|
-
})(QueryDbResolvers_AppSync_NoOp$ReventlessAws)({
|
|
21
|
+
})(QueryDbStorage$ReventlessAws.SelectableStream)(QueryDbResolvers_AppSync_NoOp$ReventlessAws)({
|
|
22
22
|
make: EventCollectorChannel_DynamoDbStream$ReventlessAws.make,
|
|
23
23
|
connect: EventCollectorChannel_DynamoDbStream$ReventlessAws.connect
|
|
24
24
|
})({
|
|
@@ -31,10 +31,15 @@ function Make(Spec) {
|
|
|
31
31
|
});
|
|
32
32
|
let make = (api, apiRole, allEventTopics, opts) => {
|
|
33
33
|
let readModel = Inner.make(api, apiRole, allEventTopics, opts);
|
|
34
|
-
let
|
|
35
|
-
let
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
let pgBacked = QueryDbBackend$ReventlessAws.isPostgresFor(Inner.Spec.name);
|
|
35
|
+
let queryDbTableName;
|
|
36
|
+
if (pgBacked) {
|
|
37
|
+
queryDbTableName = Pulumi.output(Inner.Spec.name);
|
|
38
|
+
} else {
|
|
39
|
+
let queryDbOutputs = Inner.outputs(readModel).queryDb;
|
|
40
|
+
queryDbTableName = queryDbOutputs.resources[0].name;
|
|
41
|
+
}
|
|
42
|
+
EventCollectorRuntime_Builder_Single$ReventlessAws.registerReadModel(Inner.Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Inner.Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Mappings.moduleUrl), queryDbTableName, pgBacked);
|
|
38
43
|
return readModel;
|
|
39
44
|
};
|
|
40
45
|
let finish = () => EventCollectorRuntime_Builder_Single$ReventlessAws.finish();
|
|
@@ -62,4 +67,4 @@ export {
|
|
|
62
67
|
EventCollectorRuntimeBuilder,
|
|
63
68
|
Make,
|
|
64
69
|
}
|
|
65
|
-
/*
|
|
70
|
+
/* @pulumi/pulumi Not a pure module */
|
|
@@ -16,8 +16,8 @@ module Make = (
|
|
|
16
16
|
Spec,
|
|
17
17
|
Mappings,
|
|
18
18
|
RuntimeEnvironment,
|
|
19
|
-
QueryDbStorage.
|
|
20
|
-
QueryDbResolvers.
|
|
19
|
+
QueryDbStorage.Selectable,
|
|
20
|
+
QueryDbResolvers.Selectable,
|
|
21
21
|
EventCollectorChannel,
|
|
22
22
|
EventCollectorRuntimeBuilder,
|
|
23
23
|
)
|
|
@@ -31,15 +31,24 @@ module Make = (
|
|
|
31
31
|
let make = (~api, ~apiRole, ~allEventTopics, ~opts=?): component => {
|
|
32
32
|
let readModel = Inner.make(~api, ~apiRole, ~allEventTopics, ~opts?)
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
// On the Postgres backend there is no DynamoDB table (resources is empty) —
|
|
35
|
+
// the read-model spec name is the stable `qdb_<name>` discriminator, both
|
|
36
|
+
// here and in the entry point's Postgres branch.
|
|
37
|
+
let pgBacked = QueryDbBackend.isPostgresFor(Spec.name)
|
|
38
|
+
let queryDbTableName = if pgBacked {
|
|
39
|
+
Pulumi.Output.make(Spec.name)
|
|
40
|
+
} else {
|
|
41
|
+
let queryDbOutputs = (readModel->Inner.outputs).queryDb
|
|
42
|
+
let tableResource = queryDbOutputs.resources->Array.getUnsafe(0)
|
|
43
|
+
tableResource.name
|
|
44
|
+
}
|
|
37
45
|
|
|
38
46
|
EventCollectorRuntimeBuilder.registerReadModel(
|
|
39
47
|
~readModelName=Spec.name,
|
|
40
48
|
~specModulePath=Util_Bundle.getModuleSpecifier(Spec.moduleUrl),
|
|
41
49
|
~mappingsModulePath=Util_Bundle.getModuleSpecifier(Mappings.moduleUrl),
|
|
42
50
|
~queryDbTableName,
|
|
51
|
+
~pgBacked,
|
|
43
52
|
)
|
|
44
53
|
|
|
45
54
|
readModel
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
+
import * as Pulumi from "@pulumi/pulumi";
|
|
3
4
|
import * as Util_Bundle$ReventlessAws from "../util/Util_Bundle.res.mjs";
|
|
5
|
+
import * as QueryDbBackend$ReventlessAws from "../adapter/QueryDb/QueryDbBackend.res.mjs";
|
|
6
|
+
import * as QueryDbStorage$ReventlessAws from "../adapter/QueryDb/QueryDbStorage.res.mjs";
|
|
7
|
+
import * as QueryDbResolvers$ReventlessAws from "../adapter/QueryDb/QueryDbResolvers.res.mjs";
|
|
4
8
|
import * as ReadModel_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/ReadModel/ReadModel_Builder.res.mjs";
|
|
5
|
-
import * as QueryDbStorage_DynamoDb$ReventlessAws from "../adapter/QueryDb/QueryDbStorage_DynamoDb.res.mjs";
|
|
6
|
-
import * as QueryDbResolvers_AppSync$ReventlessAws from "../adapter/QueryDb/QueryDbResolvers_AppSync.res.mjs";
|
|
7
9
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "../adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
|
|
8
10
|
import * as EventCollectorChannel_DynamoDbStream$ReventlessAws from "../adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs";
|
|
9
11
|
import * as EventCollectorRuntime_Builder_Single$ReventlessAws from "../adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs";
|
|
@@ -16,11 +18,7 @@ function Make(Spec) {
|
|
|
16
18
|
extractCorrelationId: RuntimeEnvironment_Lambda$ReventlessAws.extractCorrelationId,
|
|
17
19
|
asEventHandler: prim => prim,
|
|
18
20
|
asEffectHandler: prim => prim
|
|
19
|
-
})({
|
|
20
|
-
make: QueryDbStorage_DynamoDb$ReventlessAws.make
|
|
21
|
-
})({
|
|
22
|
-
make: QueryDbResolvers_AppSync$ReventlessAws.make
|
|
23
|
-
})({
|
|
21
|
+
})(QueryDbStorage$ReventlessAws.Selectable)(QueryDbResolvers$ReventlessAws.Selectable)({
|
|
24
22
|
make: EventCollectorChannel_DynamoDbStream$ReventlessAws.make,
|
|
25
23
|
connect: EventCollectorChannel_DynamoDbStream$ReventlessAws.connect
|
|
26
24
|
})({
|
|
@@ -33,10 +31,15 @@ function Make(Spec) {
|
|
|
33
31
|
});
|
|
34
32
|
let make = (api, apiRole, allEventTopics, opts) => {
|
|
35
33
|
let readModel = Inner.make(api, apiRole, allEventTopics, opts);
|
|
36
|
-
let
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
let pgBacked = QueryDbBackend$ReventlessAws.isPostgresFor(Inner.Spec.name);
|
|
35
|
+
let queryDbTableName;
|
|
36
|
+
if (pgBacked) {
|
|
37
|
+
queryDbTableName = Pulumi.output(Inner.Spec.name);
|
|
38
|
+
} else {
|
|
39
|
+
let queryDbOutputs = Inner.outputs(readModel).queryDb;
|
|
40
|
+
queryDbTableName = queryDbOutputs.resources[0].name;
|
|
41
|
+
}
|
|
42
|
+
EventCollectorRuntime_Builder_Single$ReventlessAws.registerReadModel(Inner.Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Inner.Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Mappings.moduleUrl), queryDbTableName, pgBacked);
|
|
40
43
|
return readModel;
|
|
41
44
|
};
|
|
42
45
|
let finish = () => EventCollectorRuntime_Builder_Single$ReventlessAws.finish();
|
|
@@ -64,4 +67,4 @@ export {
|
|
|
64
67
|
EventCollectorRuntimeBuilder,
|
|
65
68
|
Make,
|
|
66
69
|
}
|
|
67
|
-
/*
|
|
70
|
+
/* @pulumi/pulumi Not a pure module */
|
|
@@ -24,8 +24,8 @@ module Make = (
|
|
|
24
24
|
Spec,
|
|
25
25
|
Mappings,
|
|
26
26
|
RuntimeEnvironment,
|
|
27
|
-
|
|
28
|
-
QueryDbResolvers.
|
|
27
|
+
QueryDbStorage.SelectableStream,
|
|
28
|
+
QueryDbResolvers.Selectable,
|
|
29
29
|
EventCollectorChannel,
|
|
30
30
|
EventCollectorRuntimeBuilder,
|
|
31
31
|
)
|
|
@@ -39,15 +39,24 @@ module Make = (
|
|
|
39
39
|
let make = (~api, ~apiRole, ~allEventTopics, ~opts=?): component => {
|
|
40
40
|
let readModel = Inner.make(~api, ~apiRole, ~allEventTopics, ~opts?)
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
// On the Postgres backend there is no DynamoDB table (resources is empty) —
|
|
43
|
+
// the read-model spec name is the stable `qdb_<name>` discriminator, both
|
|
44
|
+
// here and in the entry point's Postgres branch.
|
|
45
|
+
let pgBacked = QueryDbBackend.isPostgresFor(Spec.name)
|
|
46
|
+
let queryDbTableName = if pgBacked {
|
|
47
|
+
Pulumi.Output.make(Spec.name)
|
|
48
|
+
} else {
|
|
49
|
+
let queryDbOutputs = (readModel->Inner.outputs).queryDb
|
|
50
|
+
let tableResource = queryDbOutputs.resources->Array.getUnsafe(0)
|
|
51
|
+
tableResource.name
|
|
52
|
+
}
|
|
45
53
|
|
|
46
54
|
EventCollectorRuntimeBuilder.registerReadModel(
|
|
47
55
|
~readModelName=Spec.name,
|
|
48
56
|
~specModulePath=Util_Bundle.getModuleSpecifier(Spec.moduleUrl),
|
|
49
57
|
~mappingsModulePath=Util_Bundle.getModuleSpecifier(Mappings.moduleUrl),
|
|
50
58
|
~queryDbTableName,
|
|
59
|
+
~pgBacked,
|
|
51
60
|
)
|
|
52
61
|
|
|
53
62
|
readModel
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
+
import * as Pulumi from "@pulumi/pulumi";
|
|
3
4
|
import * as Util_Bundle$ReventlessAws from "../util/Util_Bundle.res.mjs";
|
|
5
|
+
import * as QueryDbBackend$ReventlessAws from "../adapter/QueryDb/QueryDbBackend.res.mjs";
|
|
6
|
+
import * as QueryDbStorage$ReventlessAws from "../adapter/QueryDb/QueryDbStorage.res.mjs";
|
|
7
|
+
import * as QueryDbResolvers$ReventlessAws from "../adapter/QueryDb/QueryDbResolvers.res.mjs";
|
|
4
8
|
import * as ReadModel_Builder$ReventlessCore from "@reventlessdev/reventless-core/src/components/ReadModel/ReadModel_Builder.res.mjs";
|
|
5
|
-
import * as QueryDbResolvers_AppSync$ReventlessAws from "../adapter/QueryDb/QueryDbResolvers_AppSync.res.mjs";
|
|
6
9
|
import * as RuntimeEnvironment_Lambda$ReventlessAws from "../adapter/Runtime/RuntimeEnvironment_Lambda.res.mjs";
|
|
7
|
-
import * as QueryDbStorage_DynamoDbStream$ReventlessAws from "../adapter/QueryDb/QueryDbStorage_DynamoDbStream.res.mjs";
|
|
8
10
|
import * as EventCollectorChannel_DynamoDbStream$ReventlessAws from "../adapter/EventCollector/EventCollectorChannel_DynamoDbStream.res.mjs";
|
|
9
11
|
import * as EventCollectorRuntime_Builder_Single$ReventlessAws from "../adapter/Runtime/EventCollectorRuntime_Builder_Single.res.mjs";
|
|
10
12
|
|
|
@@ -16,11 +18,7 @@ function Make(Spec) {
|
|
|
16
18
|
extractCorrelationId: RuntimeEnvironment_Lambda$ReventlessAws.extractCorrelationId,
|
|
17
19
|
asEventHandler: prim => prim,
|
|
18
20
|
asEffectHandler: prim => prim
|
|
19
|
-
})({
|
|
20
|
-
make: QueryDbStorage_DynamoDbStream$ReventlessAws.make
|
|
21
|
-
})({
|
|
22
|
-
make: QueryDbResolvers_AppSync$ReventlessAws.make
|
|
23
|
-
})({
|
|
21
|
+
})(QueryDbStorage$ReventlessAws.SelectableStream)(QueryDbResolvers$ReventlessAws.Selectable)({
|
|
24
22
|
make: EventCollectorChannel_DynamoDbStream$ReventlessAws.make,
|
|
25
23
|
connect: EventCollectorChannel_DynamoDbStream$ReventlessAws.connect
|
|
26
24
|
})({
|
|
@@ -33,10 +31,15 @@ function Make(Spec) {
|
|
|
33
31
|
});
|
|
34
32
|
let make = (api, apiRole, allEventTopics, opts) => {
|
|
35
33
|
let readModel = Inner.make(api, apiRole, allEventTopics, opts);
|
|
36
|
-
let
|
|
37
|
-
let
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
let pgBacked = QueryDbBackend$ReventlessAws.isPostgresFor(Inner.Spec.name);
|
|
35
|
+
let queryDbTableName;
|
|
36
|
+
if (pgBacked) {
|
|
37
|
+
queryDbTableName = Pulumi.output(Inner.Spec.name);
|
|
38
|
+
} else {
|
|
39
|
+
let queryDbOutputs = Inner.outputs(readModel).queryDb;
|
|
40
|
+
queryDbTableName = queryDbOutputs.resources[0].name;
|
|
41
|
+
}
|
|
42
|
+
EventCollectorRuntime_Builder_Single$ReventlessAws.registerReadModel(Inner.Spec.name, Util_Bundle$ReventlessAws.getModuleSpecifier(Inner.Spec.moduleUrl), Util_Bundle$ReventlessAws.getModuleSpecifier(Mappings.moduleUrl), queryDbTableName, pgBacked);
|
|
40
43
|
return readModel;
|
|
41
44
|
};
|
|
42
45
|
let finish = () => EventCollectorRuntime_Builder_Single$ReventlessAws.finish();
|
|
@@ -64,4 +67,4 @@ export {
|
|
|
64
67
|
EventCollectorRuntimeBuilder,
|
|
65
68
|
Make,
|
|
66
69
|
}
|
|
67
|
-
/*
|
|
70
|
+
/* @pulumi/pulumi Not a pure module */
|
|
@@ -11,8 +11,8 @@ module Make = (Api: {
|
|
|
11
11
|
}) => {
|
|
12
12
|
module Inner = ReventlessCore.StateViewSlice_Builder.Make(
|
|
13
13
|
RuntimeEnvironment,
|
|
14
|
-
QueryDbStorage.
|
|
15
|
-
QueryDbResolvers.
|
|
14
|
+
QueryDbStorage.Selectable,
|
|
15
|
+
QueryDbResolvers.Selectable,
|
|
16
16
|
EventCollectorChannel,
|
|
17
17
|
EventCollectorRuntimeBuilder,
|
|
18
18
|
Api,
|
|
@@ -32,12 +32,18 @@ module Make = (Api: {
|
|
|
32
32
|
let make = (~dcbEventLog, ~opts=?): component => {
|
|
33
33
|
let sv = InnerMake.make(~dcbEventLog, ~opts?)
|
|
34
34
|
let queryDbOutputs = (sv->ReventlessCore.Component.outputs).queryDb
|
|
35
|
-
|
|
35
|
+
// On the Postgres backend there is no DynamoDB table (resources is
|
|
36
|
+
// empty) — the slice spec name is the stable `qdb_<name>` discriminator.
|
|
37
|
+
let queryDbTableName = if QueryDbBackend.isPostgresFor(Spec.name) {
|
|
38
|
+
Pulumi.Output.make(Spec.name)
|
|
39
|
+
} else {
|
|
40
|
+
(queryDbOutputs.resources->Array.getUnsafe(0)).name
|
|
41
|
+
}
|
|
36
42
|
EventCollectorRuntimeBuilder.registerStateViewSlice(
|
|
37
43
|
~name=Spec.name,
|
|
38
44
|
~specModulePath=Util_Bundle.getModuleSpecifier(Spec.moduleUrl),
|
|
39
45
|
~projectionModulePath=Util_Bundle.getModuleSpecifier(Projection.moduleUrl),
|
|
40
|
-
~queryDbTableName
|
|
46
|
+
~queryDbTableName,
|
|
41
47
|
~queryDbResources=queryDbOutputs.resources,
|
|
42
48
|
)
|
|
43
49
|
sv
|