@reventlessdev/reventless-postgres 3.0.0-alpha.6 → 3.0.0-alpha.8
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 +15 -0
- package/lib/bs/.compiler.log +2 -2
- package/lib/bs/ReventlessPostgres.cmi +0 -0
- package/lib/bs/ReventlessPostgres.cmt +0 -0
- package/lib/bs/ReventlessPostgres.mlmap +3 -0
- package/lib/bs/compiler-info.json +1 -1
- package/lib/bs/src/DcbEventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres.ast +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres.res +25 -340
- package/lib/bs/src/DcbEventLogStorage_Postgres.res.mjs +32 -348
- package/lib/bs/src/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres_Ops.ast +0 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres_Ops.res +350 -0
- package/lib/bs/src/DcbEventLogStorage_Postgres_Ops.res.mjs +380 -0
- package/lib/bs/src/EventLogChangeFeed-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/EventLogChangeFeed-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
- package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/EventLogStorage_Postgres.ast +0 -0
- package/lib/bs/src/EventLogStorage_Postgres.res +12 -170
- package/lib/bs/src/EventLogStorage_Postgres.res.mjs +20 -186
- package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
- package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/EventLogStorage_Postgres_Ops.ast +0 -0
- package/lib/bs/src/EventLogStorage_Postgres_Ops.res +180 -0
- package/lib/bs/src/EventLogStorage_Postgres_Ops.res.mjs +202 -0
- package/lib/bs/src/PgChangeFeed-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/PgChangeFeed-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/PgSchema-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/PgSchema-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres.ast +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres.res +9 -232
- package/lib/bs/src/QueryDbStorage_Postgres.res.mjs +25 -204
- package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres_Ops.ast +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres_Ops.res +229 -0
- package/lib/bs/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
- package/lib/bs/src/QueryEnginePostgres-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/QueryEnginePostgres-ReventlessPostgres.cmt +0 -0
- package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
- package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmi +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/.compiler.log +2 -2
- package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres.ast +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres.res +25 -340
- package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres_Ops.ast +0 -0
- package/lib/ocaml/DcbEventLogStorage_Postgres_Ops.res +350 -0
- package/lib/ocaml/EventLogChangeFeed-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/EventLogChangeFeed-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/EventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/EventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
- package/lib/ocaml/EventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/EventLogStorage_Postgres.ast +0 -0
- package/lib/ocaml/EventLogStorage_Postgres.res +12 -170
- package/lib/ocaml/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
- package/lib/ocaml/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/EventLogStorage_Postgres_Ops.ast +0 -0
- package/lib/ocaml/EventLogStorage_Postgres_Ops.res +180 -0
- package/lib/ocaml/PgChangeFeed-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/PgChangeFeed-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/PgSchema-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/PgSchema-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres.ast +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres.res +9 -232
- package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres_Ops.ast +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres_Ops.res +229 -0
- package/lib/ocaml/QueryEnginePostgres-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/QueryEnginePostgres-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/QueryEnginePostgresListPageTest-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/QueryEnginePostgresListPageTest-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/ReventlessPostgres.mlmap +3 -0
- package/package.json +5 -5
- package/src/DcbEventLogStorage_Postgres.res +25 -340
- package/src/DcbEventLogStorage_Postgres.res.mjs +32 -348
- package/src/DcbEventLogStorage_Postgres_Ops.res +350 -0
- package/src/DcbEventLogStorage_Postgres_Ops.res.mjs +380 -0
- package/src/EventLogStorage_Postgres.res +12 -170
- package/src/EventLogStorage_Postgres.res.mjs +20 -186
- package/src/EventLogStorage_Postgres_Ops.res +180 -0
- package/src/EventLogStorage_Postgres_Ops.res.mjs +202 -0
- package/src/QueryDbStorage_Postgres.res +9 -232
- package/src/QueryDbStorage_Postgres.res.mjs +25 -204
- package/src/QueryDbStorage_Postgres_Ops.res +229 -0
- package/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
|
@@ -1,369 +1,52 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as S from "sury/src/S.res.mjs";
|
|
4
|
-
import * as Stream from "@reventlessdev/rescript-effect/src/Stream.res.mjs";
|
|
5
|
-
import * as Stdlib_Int from "@rescript/runtime/lib/es6/Stdlib_Int.js";
|
|
6
|
-
import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
|
|
7
|
-
import * as Stdlib_JsExn from "@rescript/runtime/lib/es6/Stdlib_JsExn.js";
|
|
8
|
-
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
9
|
-
import * as Effect from "effect/Effect";
|
|
10
3
|
import * as Pulumi from "@pulumi/pulumi";
|
|
11
|
-
import * as
|
|
12
|
-
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
13
|
-
import * as Message$Reventless from "@reventlessdev/reventless-spec/src/types/Message.res.mjs";
|
|
14
|
-
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
15
|
-
import * as PgDriver$ReventlessPostgres from "./PgDriver.res.mjs";
|
|
4
|
+
import * as DcbEventLogStorage_Postgres_Ops$ReventlessPostgres from "./DcbEventLogStorage_Postgres_Ops.res.mjs";
|
|
16
5
|
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
function makeStorage(pool, name, indexes, partitionTag, crossPartitionTagKeys, opts, lockStrategyOpt, onAppendedOpt) {
|
|
7
|
+
let lockStrategy = lockStrategyOpt !== undefined ? lockStrategyOpt : "AdvisoryLocks";
|
|
8
|
+
let onAppended = onAppendedOpt !== undefined ? onAppendedOpt : DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.noTracking;
|
|
9
|
+
let match = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.makeOps(pool, name, indexes, partitionTag, crossPartitionTagKeys, opts, lockStrategy, onAppended);
|
|
10
|
+
let ops = match[1];
|
|
11
|
+
return [
|
|
12
|
+
match[0],
|
|
13
|
+
ops,
|
|
14
|
+
{
|
|
15
|
+
resources: [],
|
|
16
|
+
operations: Pulumi.output(ops)
|
|
17
|
+
}
|
|
18
|
+
];
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
21
|
+
let strategyParam = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.strategyParam;
|
|
28
22
|
|
|
29
|
-
let
|
|
23
|
+
let noTracking = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.noTracking;
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
let i = s.indexOf("=");
|
|
33
|
-
if (i !== -1) {
|
|
34
|
-
return {
|
|
35
|
-
key: s.slice(0, i),
|
|
36
|
-
value: s.slice(i + 1 | 0, s.length)
|
|
37
|
-
};
|
|
38
|
-
} else {
|
|
39
|
-
return {
|
|
40
|
-
key: s,
|
|
41
|
-
value: ""
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
25
|
+
let selectColumns = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.selectColumns;
|
|
45
26
|
|
|
46
|
-
|
|
47
|
-
if (v !== undefined) {
|
|
48
|
-
if (Array.isArray(v)) {
|
|
49
|
-
return Stdlib_Array.filterMap(v, x => {
|
|
50
|
-
if (typeof x === "string") {
|
|
51
|
-
return decodeTag(x);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
} else {
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
27
|
+
let decodeTag = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.decodeTag;
|
|
61
28
|
|
|
62
|
-
|
|
63
|
-
let str = key => {
|
|
64
|
-
let match = row[key];
|
|
65
|
-
if (typeof match === "string") {
|
|
66
|
-
return match;
|
|
67
|
-
} else {
|
|
68
|
-
return "";
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
let metaJson = row["meta"];
|
|
72
|
-
let meta = metaJson !== undefined ? S.parseJsonOrThrow(metaJson, Message$Reventless.metaSchema) : Stdlib_JsError.throwWithMessage("missing meta column in dcb_event row");
|
|
73
|
-
return {
|
|
74
|
-
position: str("cursor"),
|
|
75
|
-
eventType: str("event_type"),
|
|
76
|
-
data: Stdlib_Option.getOr(row["data"], null),
|
|
77
|
-
tags: decodeTags(row["tags"]),
|
|
78
|
-
meta: meta,
|
|
79
|
-
recordedAt: str("recorded_at")
|
|
80
|
-
};
|
|
81
|
-
}
|
|
29
|
+
let decodeTags = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.decodeTags;
|
|
82
30
|
|
|
83
|
-
|
|
84
|
-
return {
|
|
85
|
-
params: []
|
|
86
|
-
};
|
|
87
|
-
}
|
|
31
|
+
let rowToEvent = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.rowToEvent;
|
|
88
32
|
|
|
89
|
-
|
|
90
|
-
b.params.push(v);
|
|
91
|
-
return "$" + b.params.length.toString();
|
|
92
|
-
}
|
|
33
|
+
let mkBuilder = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.mkBuilder;
|
|
93
34
|
|
|
94
|
-
|
|
95
|
-
let parts = [`log_name = ` + param(b, name)];
|
|
96
|
-
if (applyFence) {
|
|
97
|
-
parts.push("transaction_id < pg_snapshot_xmin(pg_current_snapshot())");
|
|
98
|
-
}
|
|
99
|
-
if (after !== undefined) {
|
|
100
|
-
let txP = param(b, after[0]);
|
|
101
|
-
let posP = param(b, after[1]);
|
|
102
|
-
parts.push(`(transaction_id > ` + txP + `::xid8 OR (transaction_id = ` + txP + `::xid8 AND position > ` + posP + `::bigint))`);
|
|
103
|
-
}
|
|
104
|
-
if (query.length !== 0) {
|
|
105
|
-
let clauseSqls = query.map(clause => {
|
|
106
|
-
let clauseParts = [];
|
|
107
|
-
let types = clause.eventTypes;
|
|
108
|
-
if (types !== undefined && types.length !== 0) {
|
|
109
|
-
let ph = types.map(t => param(b, t)).join(",");
|
|
110
|
-
clauseParts.push(`event_type IN (` + ph + `)`);
|
|
111
|
-
}
|
|
112
|
-
let tags = clause.tags;
|
|
113
|
-
if (tags !== undefined && tags.length !== 0) {
|
|
114
|
-
let arr = tags.map(t => param(b, t.key + "=" + t.value)).join(",");
|
|
115
|
-
clauseParts.push(`tags @> ARRAY[` + arr + `]::text[]`);
|
|
116
|
-
}
|
|
117
|
-
if (clauseParts.length === 0) {
|
|
118
|
-
return "TRUE";
|
|
119
|
-
} else {
|
|
120
|
-
return "(" + clauseParts.join(" AND ") + ")";
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
parts.push("(" + clauseSqls.join(" OR ") + ")");
|
|
124
|
-
}
|
|
125
|
-
return parts.join(" AND ");
|
|
126
|
-
}
|
|
35
|
+
let param = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.param;
|
|
127
36
|
|
|
128
|
-
|
|
129
|
-
let t = s.replace(/^0+/, "");
|
|
130
|
-
if (t === "") {
|
|
131
|
-
return "0";
|
|
132
|
-
} else {
|
|
133
|
-
return t;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
37
|
+
let buildReadWhere = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.buildReadWhere;
|
|
136
38
|
|
|
137
|
-
|
|
138
|
-
let match = pos.split(":");
|
|
139
|
-
if (match.length !== 2) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
let tx = match[0];
|
|
143
|
-
let p = match[1];
|
|
144
|
-
return [
|
|
145
|
-
stripZeros(tx),
|
|
146
|
-
stripZeros(p)
|
|
147
|
-
];
|
|
148
|
-
}
|
|
39
|
+
let stripZeros = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.stripZeros;
|
|
149
40
|
|
|
150
|
-
|
|
151
|
-
let msg = Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_JsExn.fromException(exn), Stdlib_JsExn.message), "");
|
|
152
|
-
if (msg.includes("dcb_conflict") || msg.includes("duplicate key")) {
|
|
153
|
-
return true;
|
|
154
|
-
} else {
|
|
155
|
-
return msg.includes("23505");
|
|
156
|
-
}
|
|
157
|
-
}
|
|
41
|
+
let decodeCursor = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.decodeCursor;
|
|
158
42
|
|
|
159
|
-
|
|
160
|
-
let row = await PgDriver$ReventlessPostgres.queryOne(pool, "SELECT COUNT(*)::bigint AS c FROM dcb_event", []);
|
|
161
|
-
if (row === undefined) {
|
|
162
|
-
return 0;
|
|
163
|
-
}
|
|
164
|
-
let match = row["c"];
|
|
165
|
-
if (match === undefined) {
|
|
166
|
-
return 0;
|
|
167
|
-
}
|
|
168
|
-
switch (typeof match) {
|
|
169
|
-
case "string" :
|
|
170
|
-
return Stdlib_Option.getOr(Stdlib_Int.fromString(match, undefined), 0);
|
|
171
|
-
case "number" :
|
|
172
|
-
return match | 0;
|
|
173
|
-
default:
|
|
174
|
-
return 0;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
43
|
+
let pageSize = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.pageSize;
|
|
177
44
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
let currentHead = async () => {
|
|
182
|
-
let row = await PgDriver$ReventlessPostgres.queryOne(pool, "SELECT lpad(transaction_id::text, 20, '0') || ':' || lpad(position::text, 20, '0') AS head\n FROM dcb_event\n WHERE log_name = $1 AND transaction_id < pg_snapshot_xmin(pg_current_snapshot())\n ORDER BY transaction_id DESC, position DESC\n LIMIT 1", [name]);
|
|
183
|
-
if (row === undefined) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
let match = row["head"];
|
|
187
|
-
if (typeof match === "string") {
|
|
188
|
-
return match;
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
let runQuery = async (query, after) => {
|
|
192
|
-
let b = {
|
|
193
|
-
params: []
|
|
194
|
-
};
|
|
195
|
-
let where = buildReadWhere(b, name, query, after, true);
|
|
196
|
-
let sql = `SELECT ` + selectColumns + ` FROM dcb_event WHERE ` + where + ` ORDER BY transaction_id ASC, position ASC`;
|
|
197
|
-
return (await PgDriver$ReventlessPostgres.query(pool, sql, b.params)).map(rowToEvent);
|
|
198
|
-
};
|
|
199
|
-
let read = async (query, after) => {
|
|
200
|
-
let afterCols = Stdlib_Option.flatMap(after, decodeCursor);
|
|
201
|
-
let events = await runQuery(query, afterCols);
|
|
202
|
-
let head = await currentHead();
|
|
203
|
-
if (head !== undefined) {
|
|
204
|
-
return {
|
|
205
|
-
events: events,
|
|
206
|
-
headPosition: head
|
|
207
|
-
};
|
|
208
|
-
} else {
|
|
209
|
-
return {
|
|
210
|
-
events: events
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
let append = async (newEvents, condition) => {
|
|
215
|
-
let eventsJson = newEvents.map(ev => (Object.fromEntries([
|
|
216
|
-
[
|
|
217
|
-
"event_type",
|
|
218
|
-
ev.eventType
|
|
219
|
-
],
|
|
220
|
-
[
|
|
221
|
-
"tags",
|
|
222
|
-
ev.tags.map(t => t.key + "=" + t.value)
|
|
223
|
-
],
|
|
224
|
-
[
|
|
225
|
-
"data",
|
|
226
|
-
ev.data
|
|
227
|
-
],
|
|
228
|
-
[
|
|
229
|
-
"meta",
|
|
230
|
-
S.reverseConvertToJsonOrThrow(ev.meta, Message$Reventless.metaSchema)
|
|
231
|
-
]
|
|
232
|
-
])));
|
|
233
|
-
let conditionParam;
|
|
234
|
-
if (condition !== undefined) {
|
|
235
|
-
let queryJson = condition.query.map(clause => {
|
|
236
|
-
let types = clause.eventTypes;
|
|
237
|
-
let tags = clause.tags;
|
|
238
|
-
return Object.fromEntries([
|
|
239
|
-
[
|
|
240
|
-
"eventTypes",
|
|
241
|
-
types !== undefined ? types.map(prim => prim) : null
|
|
242
|
-
],
|
|
243
|
-
[
|
|
244
|
-
"tags",
|
|
245
|
-
tags !== undefined ? tags.map(t => t.key + "=" + t.value) : null
|
|
246
|
-
]
|
|
247
|
-
]);
|
|
248
|
-
});
|
|
249
|
-
let fields = [[
|
|
250
|
-
"query",
|
|
251
|
-
queryJson
|
|
252
|
-
]];
|
|
253
|
-
let a = condition.after;
|
|
254
|
-
if (a !== undefined) {
|
|
255
|
-
fields.push([
|
|
256
|
-
"after",
|
|
257
|
-
a
|
|
258
|
-
]);
|
|
259
|
-
}
|
|
260
|
-
conditionParam = JSON.stringify(Object.fromEntries(fields));
|
|
261
|
-
} else {
|
|
262
|
-
conditionParam = null;
|
|
263
|
-
}
|
|
264
|
-
try {
|
|
265
|
-
let rows = await PgDriver$ReventlessPostgres.query(pool, "SELECT dcb_append($1, $2::jsonb, $3::jsonb, $4) AS pos", [
|
|
266
|
-
name,
|
|
267
|
-
JSON.stringify(eventsJson),
|
|
268
|
-
conditionParam,
|
|
269
|
-
strategyParam(lockStrategy)
|
|
270
|
-
]);
|
|
271
|
-
let match = Stdlib_Option.flatMap(rows[0], r => r["pos"]);
|
|
272
|
-
if (match === undefined) {
|
|
273
|
-
return {
|
|
274
|
-
TAG: "Error",
|
|
275
|
-
_0: {
|
|
276
|
-
TAG: "StorageFailure",
|
|
277
|
-
_0: "dcb_append returned no position"
|
|
278
|
-
}
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
if (typeof match !== "string") {
|
|
282
|
-
return {
|
|
283
|
-
TAG: "Error",
|
|
284
|
-
_0: {
|
|
285
|
-
TAG: "StorageFailure",
|
|
286
|
-
_0: "dcb_append returned no position"
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
onAppended(Stdlib_Array.filterMap(newEvents, ev => {
|
|
291
|
-
let match$1 = decodeCursor(match);
|
|
292
|
-
if (match$1 !== undefined) {
|
|
293
|
-
return Stdlib_Option.map(Stdlib_Int.fromString(match$1[1], undefined), p => [
|
|
294
|
-
ev.meta.msgId,
|
|
295
|
-
p
|
|
296
|
-
]);
|
|
297
|
-
}
|
|
298
|
-
}));
|
|
299
|
-
return {
|
|
300
|
-
TAG: "Ok",
|
|
301
|
-
_0: match
|
|
302
|
-
};
|
|
303
|
-
} catch (raw_exn) {
|
|
304
|
-
let exn = Primitive_exceptions.internalToException(raw_exn);
|
|
305
|
-
if (isConflict(exn)) {
|
|
306
|
-
return {
|
|
307
|
-
TAG: "Error",
|
|
308
|
-
_0: "Conflict"
|
|
309
|
-
};
|
|
310
|
-
} else {
|
|
311
|
-
return {
|
|
312
|
-
TAG: "Error",
|
|
313
|
-
_0: {
|
|
314
|
-
TAG: "StorageFailure",
|
|
315
|
-
_0: Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_JsExn.fromException(exn), Stdlib_JsExn.message), "storage error")
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
};
|
|
321
|
-
let readStream = (query, after, param) => Stream.paginateEffect(Stdlib_Option.flatMap(after, decodeCursor), cursor => Effect.map(Effect.promise(() => {
|
|
322
|
-
let b = {
|
|
323
|
-
params: []
|
|
324
|
-
};
|
|
325
|
-
let where = buildReadWhere(b, name, query, cursor, true);
|
|
326
|
-
let sql = `SELECT ` + selectColumns + `, transaction_id::text AS tx_raw, position::text AS pos_raw FROM dcb_event WHERE ` + where + ` ORDER BY transaction_id ASC, position ASC LIMIT ` + (500).toString();
|
|
327
|
-
return PgDriver$ReventlessPostgres.query(pool, sql, b.params);
|
|
328
|
-
}), rows => {
|
|
329
|
-
let events = rows.map(rowToEvent);
|
|
330
|
-
let next;
|
|
331
|
-
if (rows.length < 500) {
|
|
332
|
-
next = undefined;
|
|
333
|
-
} else {
|
|
334
|
-
let lastRow = rows[rows.length - 1 | 0];
|
|
335
|
-
if (lastRow !== undefined) {
|
|
336
|
-
let match = lastRow["tx_raw"];
|
|
337
|
-
let match$1 = lastRow["pos_raw"];
|
|
338
|
-
next = typeof match === "string" && typeof match$1 === "string" ? Primitive_option.some([
|
|
339
|
-
match,
|
|
340
|
-
match$1
|
|
341
|
-
]) : undefined;
|
|
342
|
-
} else {
|
|
343
|
-
next = undefined;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
return [
|
|
347
|
-
events,
|
|
348
|
-
next
|
|
349
|
-
];
|
|
350
|
-
}));
|
|
351
|
-
let ops = {
|
|
352
|
-
read: read,
|
|
353
|
-
append: append,
|
|
354
|
-
readStream: readStream
|
|
355
|
-
};
|
|
356
|
-
return [
|
|
357
|
-
name,
|
|
358
|
-
ops,
|
|
359
|
-
{
|
|
360
|
-
resources: [],
|
|
361
|
-
operations: Pulumi.output(ops)
|
|
362
|
-
}
|
|
363
|
-
];
|
|
364
|
-
}
|
|
45
|
+
let isConflict = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.isConflict;
|
|
46
|
+
|
|
47
|
+
let countAll = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.countAll;
|
|
365
48
|
|
|
366
|
-
let
|
|
49
|
+
let makeOps = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.makeOps;
|
|
367
50
|
|
|
368
51
|
export {
|
|
369
52
|
strategyParam,
|
|
@@ -380,6 +63,7 @@ export {
|
|
|
380
63
|
pageSize,
|
|
381
64
|
isConflict,
|
|
382
65
|
countAll,
|
|
66
|
+
makeOps,
|
|
383
67
|
makeStorage,
|
|
384
68
|
}
|
|
385
|
-
/*
|
|
69
|
+
/* @pulumi/pulumi Not a pure module */
|
|
Binary file
|