@reventlessdev/reventless-postgres 3.0.0-alpha.3 → 3.0.0-alpha.31

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/CHANGELOG.md +221 -0
  2. package/README.md +83 -0
  3. package/lib/bs/.compiler.log +2 -2
  4. package/lib/bs/ReventlessPostgres.cmi +0 -0
  5. package/lib/bs/ReventlessPostgres.cmt +0 -0
  6. package/lib/bs/ReventlessPostgres.mlmap +4 -1
  7. package/lib/bs/compiler-info.json +2 -2
  8. package/lib/bs/src/DcbEventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
  9. package/lib/bs/src/DcbEventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
  10. package/lib/bs/src/DcbEventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
  11. package/lib/bs/src/DcbEventLogStorage_Postgres.ast +0 -0
  12. package/lib/bs/src/DcbEventLogStorage_Postgres.res +25 -340
  13. package/lib/bs/src/DcbEventLogStorage_Postgres.res.mjs +32 -348
  14. package/lib/bs/src/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  15. package/lib/bs/src/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  16. package/lib/bs/src/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  17. package/lib/bs/src/DcbEventLogStorage_Postgres_Ops.ast +0 -0
  18. package/lib/bs/src/DcbEventLogStorage_Postgres_Ops.res +350 -0
  19. package/lib/bs/src/DcbEventLogStorage_Postgres_Ops.res.mjs +380 -0
  20. package/lib/bs/src/EventLogChangeFeed-ReventlessPostgres.cmi +0 -0
  21. package/lib/bs/src/EventLogChangeFeed-ReventlessPostgres.cmj +0 -0
  22. package/lib/bs/src/EventLogChangeFeed-ReventlessPostgres.cmt +0 -0
  23. package/lib/bs/src/EventLogChangeFeed.ast +0 -0
  24. package/lib/bs/src/EventLogChangeFeed.res +184 -0
  25. package/lib/bs/src/EventLogChangeFeed.res.mjs +134 -0
  26. package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
  27. package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
  28. package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
  29. package/lib/bs/src/EventLogStorage_Postgres.ast +0 -0
  30. package/lib/bs/src/EventLogStorage_Postgres.res +12 -170
  31. package/lib/bs/src/EventLogStorage_Postgres.res.mjs +20 -186
  32. package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  33. package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  34. package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  35. package/lib/bs/src/EventLogStorage_Postgres_Ops.ast +0 -0
  36. package/lib/bs/src/EventLogStorage_Postgres_Ops.res +180 -0
  37. package/lib/bs/src/EventLogStorage_Postgres_Ops.res.mjs +202 -0
  38. package/lib/bs/src/PgChangeFeed-ReventlessPostgres.cmi +0 -0
  39. package/lib/bs/src/PgChangeFeed-ReventlessPostgres.cmt +0 -0
  40. package/lib/bs/src/PgSchema-ReventlessPostgres.cmi +0 -0
  41. package/lib/bs/src/PgSchema-ReventlessPostgres.cmt +0 -0
  42. package/lib/bs/src/PgSchema.ast +0 -0
  43. package/lib/bs/src/PgSchema.res +36 -2
  44. package/lib/bs/src/PgSchema.res.mjs +9 -2
  45. package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
  46. package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmj +0 -0
  47. package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmt +0 -0
  48. package/lib/bs/src/QueryDbStorage_Postgres.ast +0 -0
  49. package/lib/bs/src/QueryDbStorage_Postgres.res +10 -212
  50. package/lib/bs/src/QueryDbStorage_Postgres.res.mjs +27 -191
  51. package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  52. package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  53. package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  54. package/lib/bs/src/QueryDbStorage_Postgres_Ops.ast +0 -0
  55. package/lib/bs/src/QueryDbStorage_Postgres_Ops.res +229 -0
  56. package/lib/bs/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
  57. package/lib/bs/src/QueryEnginePostgres-ReventlessPostgres.cmi +0 -0
  58. package/lib/bs/src/QueryEnginePostgres-ReventlessPostgres.cmt +0 -0
  59. package/lib/bs/src/QueryEnginePostgres.ast +0 -0
  60. package/lib/bs/src/QueryEnginePostgres.res +259 -0
  61. package/lib/bs/src/QueryEnginePostgres.res.mjs +165 -0
  62. package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
  63. package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
  64. package/lib/bs/tests/PostgresIntegrationTest.ast +0 -0
  65. package/lib/bs/tests/PostgresIntegrationTest.res +68 -0
  66. package/lib/bs/tests/PostgresIntegrationTest.res.mjs +49 -0
  67. package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmi +0 -0
  68. package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmj +0 -0
  69. package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmt +0 -0
  70. package/lib/bs/tests/QueryEnginePostgresListPageTest.ast +0 -0
  71. package/lib/bs/tests/QueryEnginePostgresListPageTest.res +312 -0
  72. package/lib/bs/tests/QueryEnginePostgresListPageTest.res.mjs +461 -0
  73. package/lib/ocaml/.compiler.log +2 -2
  74. package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
  75. package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
  76. package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
  77. package/lib/ocaml/DcbEventLogStorage_Postgres.ast +0 -0
  78. package/lib/ocaml/DcbEventLogStorage_Postgres.res +25 -340
  79. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  80. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  81. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  82. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops.ast +0 -0
  83. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops.res +350 -0
  84. package/lib/ocaml/EventLogChangeFeed-ReventlessPostgres.cmi +0 -0
  85. package/lib/ocaml/EventLogChangeFeed-ReventlessPostgres.cmj +0 -0
  86. package/lib/ocaml/EventLogChangeFeed-ReventlessPostgres.cmt +0 -0
  87. package/lib/ocaml/EventLogChangeFeed.ast +0 -0
  88. package/lib/ocaml/EventLogChangeFeed.res +184 -0
  89. package/lib/ocaml/EventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
  90. package/lib/ocaml/EventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
  91. package/lib/ocaml/EventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
  92. package/lib/ocaml/EventLogStorage_Postgres.ast +0 -0
  93. package/lib/ocaml/EventLogStorage_Postgres.res +12 -170
  94. package/lib/ocaml/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  95. package/lib/ocaml/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  96. package/lib/ocaml/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  97. package/lib/ocaml/EventLogStorage_Postgres_Ops.ast +0 -0
  98. package/lib/ocaml/EventLogStorage_Postgres_Ops.res +180 -0
  99. package/lib/ocaml/PgChangeFeed-ReventlessPostgres.cmi +0 -0
  100. package/lib/ocaml/PgChangeFeed-ReventlessPostgres.cmt +0 -0
  101. package/lib/ocaml/PgSchema-ReventlessPostgres.cmi +0 -0
  102. package/lib/ocaml/PgSchema-ReventlessPostgres.cmt +0 -0
  103. package/lib/ocaml/PgSchema.ast +0 -0
  104. package/lib/ocaml/PgSchema.res +36 -2
  105. package/lib/ocaml/PostgresIntegrationTest.res +68 -0
  106. package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
  107. package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmj +0 -0
  108. package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmt +0 -0
  109. package/lib/ocaml/QueryDbStorage_Postgres.ast +0 -0
  110. package/lib/ocaml/QueryDbStorage_Postgres.res +10 -212
  111. package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  112. package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  113. package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  114. package/lib/ocaml/QueryDbStorage_Postgres_Ops.ast +0 -0
  115. package/lib/ocaml/QueryDbStorage_Postgres_Ops.res +229 -0
  116. package/lib/ocaml/QueryEnginePostgres-ReventlessPostgres.cmi +0 -0
  117. package/lib/ocaml/QueryEnginePostgres-ReventlessPostgres.cmt +0 -0
  118. package/lib/ocaml/QueryEnginePostgres.ast +0 -0
  119. package/lib/ocaml/QueryEnginePostgres.res +259 -0
  120. package/lib/ocaml/QueryEnginePostgresListPageTest.res +312 -0
  121. package/lib/ocaml/ReventlessPostgres.cmi +0 -0
  122. package/lib/ocaml/ReventlessPostgres.cmt +0 -0
  123. package/lib/ocaml/ReventlessPostgres.mlmap +5 -0
  124. package/package.json +9 -9
  125. package/rescript.json +2 -1
  126. package/src/DcbEventLogStorage_Postgres.res +25 -340
  127. package/src/DcbEventLogStorage_Postgres.res.mjs +32 -348
  128. package/src/DcbEventLogStorage_Postgres_Ops.res +350 -0
  129. package/src/DcbEventLogStorage_Postgres_Ops.res.mjs +380 -0
  130. package/src/EventLogChangeFeed.res +184 -0
  131. package/src/EventLogChangeFeed.res.mjs +134 -0
  132. package/src/EventLogStorage_Postgres.res +12 -170
  133. package/src/EventLogStorage_Postgres.res.mjs +20 -186
  134. package/src/EventLogStorage_Postgres_Ops.res +180 -0
  135. package/src/EventLogStorage_Postgres_Ops.res.mjs +202 -0
  136. package/src/PgSchema.res +36 -2
  137. package/src/PgSchema.res.mjs +9 -2
  138. package/src/QueryDbStorage_Postgres.res +10 -212
  139. package/src/QueryDbStorage_Postgres.res.mjs +27 -191
  140. package/src/QueryDbStorage_Postgres_Ops.res +229 -0
  141. package/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
  142. package/src/QueryEnginePostgres.res +259 -0
  143. package/src/QueryEnginePostgres.res.mjs +165 -0
  144. package/tests/PostgresIntegrationTest.res +68 -0
  145. package/tests/PostgresIntegrationTest.res.mjs +49 -0
  146. package/tests/QueryEnginePostgresListPageTest.res +312 -0
  147. package/tests/QueryEnginePostgresListPageTest.res.mjs +461 -0
  148. package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
  149. package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmj +0 -0
  150. package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
  151. package/lib/ocaml/PostgresIntegrationTest.ast +0 -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 Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
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 strategyParam(s) {
18
- if (s === "AdvisoryLocks") {
19
- return "advisory";
20
- } else {
21
- return "rows";
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
- function noTracking(param) {
26
-
27
- }
21
+ let strategyParam = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.strategyParam;
28
22
 
29
- let selectColumns = "\n lpad(transaction_id::text, 20, '0') || ':' || lpad(position::text, 20, '0') AS cursor,\n event_type,\n tags,\n data,\n meta,\n to_char(recorded_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.MS\"Z\"') AS recorded_at\n";
23
+ let noTracking = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.noTracking;
30
24
 
31
- function decodeTag(s) {
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
- function decodeTags(v) {
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
- function rowToEvent(row) {
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
- function mkBuilder() {
84
- return {
85
- params: []
86
- };
87
- }
31
+ let rowToEvent = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.rowToEvent;
88
32
 
89
- function param(b, v) {
90
- b.params.push(v);
91
- return "$" + b.params.length.toString();
92
- }
33
+ let mkBuilder = DcbEventLogStorage_Postgres_Ops$ReventlessPostgres.mkBuilder;
93
34
 
94
- function buildReadWhere(b, name, query, after, applyFence) {
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
- function stripZeros(s) {
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
- function decodeCursor(pos) {
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
- function isConflict(exn) {
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
- async function countAll(pool) {
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
- function makeStorage(pool, name, param, param$1, param$2, param$3, lockStrategyOpt, onAppendedOpt) {
179
- let lockStrategy = lockStrategyOpt !== undefined ? lockStrategyOpt : "AdvisoryLocks";
180
- let onAppended = onAppendedOpt !== undefined ? onAppendedOpt : noTracking;
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 pageSize = 500;
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
- /* S Not a pure module */
69
+ /* @pulumi/pulumi Not a pure module */