@reventlessdev/reventless-postgres 3.0.0-alpha.4 → 3.0.0-alpha.40
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 +285 -0
- package/README.md +83 -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 -1
- package/lib/bs/compiler-info.json +2 -2
- 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/EventLogChangeFeed.ast +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/PgChangeFeed.ast +0 -0
- package/lib/bs/src/PgDriver-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/PgDriver-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/PgDriver-ReventlessPostgres.cmti +0 -0
- package/lib/bs/src/PgDriver.ast +0 -0
- package/lib/bs/src/PgDriver.iast +0 -0
- package/lib/bs/src/PgSchema-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/PgSchema-ReventlessPostgres.cmt +0 -0
- package/lib/bs/src/PgSchema.ast +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmj +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 +11 -213
- package/lib/bs/src/QueryDbStorage_Postgres.res.mjs +27 -191
- 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/src/QueryEnginePostgres.ast +0 -0
- package/lib/bs/src/QueryEnginePostgres.res +259 -0
- package/lib/bs/src/QueryEnginePostgres.res.mjs +165 -0
- package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
- package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
- package/lib/bs/tests/PostgresIntegrationTest.ast +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmi +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmj +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmt +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest.ast +0 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest.res +312 -0
- package/lib/bs/tests/QueryEnginePostgresListPageTest.res.mjs +461 -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/EventLogChangeFeed.ast +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/PgChangeFeed.ast +0 -0
- package/lib/ocaml/PgDriver-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/PgDriver-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/PgDriver-ReventlessPostgres.cmti +0 -0
- package/lib/ocaml/PgDriver.ast +0 -0
- package/lib/ocaml/PgDriver.iast +0 -0
- package/lib/ocaml/PgSchema-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/PgSchema-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/PgSchema.ast +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmj +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 +11 -213
- 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/QueryEnginePostgres.ast +0 -0
- package/lib/ocaml/QueryEnginePostgres.res +259 -0
- package/lib/ocaml/QueryEnginePostgresListPageTest.res +312 -0
- package/lib/ocaml/ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/ReventlessPostgres.mlmap +4 -0
- package/package.json +12 -12
- package/rescript.json +2 -1
- 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 +11 -213
- package/src/QueryDbStorage_Postgres.res.mjs +27 -191
- package/src/QueryDbStorage_Postgres_Ops.res +229 -0
- package/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
- package/src/QueryEnginePostgres.res +259 -0
- package/src/QueryEnginePostgres.res.mjs +165 -0
- package/tests/QueryEnginePostgresListPageTest.res +312 -0
- package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
- package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmj +0 -0
- package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
- package/lib/ocaml/PostgresIntegrationTest.ast +0 -0
- package/tests/PostgresIntegrationTest.res.mjs +0 -377
|
@@ -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
|