@reventlessdev/reventless-postgres 3.0.0-alpha.5 → 3.0.0-alpha.50

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 (158) hide show
  1. package/CHANGELOG.md +361 -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 +3 -2
  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.cmt +0 -0
  22. package/lib/bs/src/EventLogChangeFeed.ast +0 -0
  23. package/lib/bs/src/EventLogChangeFeed.res +5 -2
  24. package/lib/bs/src/EventLogChangeFeed.res.mjs +3 -3
  25. package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
  26. package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
  27. package/lib/bs/src/EventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
  28. package/lib/bs/src/EventLogStorage_Postgres.ast +0 -0
  29. package/lib/bs/src/EventLogStorage_Postgres.res +12 -170
  30. package/lib/bs/src/EventLogStorage_Postgres.res.mjs +20 -186
  31. package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  32. package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  33. package/lib/bs/src/EventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  34. package/lib/bs/src/EventLogStorage_Postgres_Ops.ast +0 -0
  35. package/lib/bs/src/EventLogStorage_Postgres_Ops.res +180 -0
  36. package/lib/bs/src/EventLogStorage_Postgres_Ops.res.mjs +202 -0
  37. package/lib/bs/src/PgChangeFeed-ReventlessPostgres.cmi +0 -0
  38. package/lib/bs/src/PgChangeFeed-ReventlessPostgres.cmt +0 -0
  39. package/lib/bs/src/PgChangeFeed.ast +0 -0
  40. package/lib/bs/src/PgChangeFeed.res +6 -1
  41. package/lib/bs/src/PgChangeFeed.res.mjs +6 -6
  42. package/lib/bs/src/PgDriver-ReventlessPostgres.cmi +0 -0
  43. package/lib/bs/src/PgDriver-ReventlessPostgres.cmt +0 -0
  44. package/lib/bs/src/PgDriver-ReventlessPostgres.cmti +0 -0
  45. package/lib/bs/src/PgDriver.ast +0 -0
  46. package/lib/bs/src/PgDriver.iast +0 -0
  47. package/lib/bs/src/PgSchema-ReventlessPostgres.cmi +0 -0
  48. package/lib/bs/src/PgSchema-ReventlessPostgres.cmt +0 -0
  49. package/lib/bs/src/PgSchema.ast +0 -0
  50. package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
  51. package/lib/bs/src/QueryDbStorage_Postgres-ReventlessPostgres.cmt +0 -0
  52. package/lib/bs/src/QueryDbStorage_Postgres.ast +0 -0
  53. package/lib/bs/src/QueryDbStorage_Postgres.res +10 -233
  54. package/lib/bs/src/QueryDbStorage_Postgres.res.mjs +25 -204
  55. package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  56. package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  57. package/lib/bs/src/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  58. package/lib/bs/src/QueryDbStorage_Postgres_Ops.ast +0 -0
  59. package/lib/bs/src/QueryDbStorage_Postgres_Ops.res +229 -0
  60. package/lib/bs/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
  61. package/lib/bs/src/QueryEnginePostgres-ReventlessPostgres.cmi +0 -0
  62. package/lib/bs/src/QueryEnginePostgres-ReventlessPostgres.cmt +0 -0
  63. package/lib/bs/src/QueryEnginePostgres.ast +0 -0
  64. package/lib/bs/src/QueryEnginePostgres.res +91 -10
  65. package/lib/bs/src/QueryEnginePostgres.res.mjs +89 -21
  66. package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
  67. package/lib/bs/tests/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
  68. package/lib/bs/tests/PostgresIntegrationTest.ast +0 -0
  69. package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmi +0 -0
  70. package/lib/bs/tests/QueryEnginePostgresListPageTest-ReventlessPostgres.cmt +0 -0
  71. package/lib/bs/tests/QueryEnginePostgresListPageTest.ast +0 -0
  72. package/lib/bs/tests/QueryEnginePostgresListPageTest.res +76 -0
  73. package/lib/bs/tests/QueryEnginePostgresListPageTest.res.mjs +136 -0
  74. package/lib/ocaml/.compiler.log +2 -2
  75. package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmi +0 -0
  76. package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmj +0 -0
  77. package/lib/ocaml/DcbEventLogStorage_Postgres-ReventlessPostgres.cmt +0 -0
  78. package/lib/ocaml/DcbEventLogStorage_Postgres.ast +0 -0
  79. package/lib/ocaml/DcbEventLogStorage_Postgres.res +25 -340
  80. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  81. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  82. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  83. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops.ast +0 -0
  84. package/lib/ocaml/DcbEventLogStorage_Postgres_Ops.res +350 -0
  85. package/lib/ocaml/EventLogChangeFeed-ReventlessPostgres.cmi +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 +5 -2
  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/PgChangeFeed.ast +0 -0
  102. package/lib/ocaml/PgChangeFeed.res +6 -1
  103. package/lib/ocaml/PgDriver-ReventlessPostgres.cmi +0 -0
  104. package/lib/ocaml/PgDriver-ReventlessPostgres.cmt +0 -0
  105. package/lib/ocaml/PgDriver-ReventlessPostgres.cmti +0 -0
  106. package/lib/ocaml/PgDriver.ast +0 -0
  107. package/lib/ocaml/PgDriver.iast +0 -0
  108. package/lib/ocaml/PgSchema-ReventlessPostgres.cmi +0 -0
  109. package/lib/ocaml/PgSchema-ReventlessPostgres.cmt +0 -0
  110. package/lib/ocaml/PgSchema.ast +0 -0
  111. package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmi +0 -0
  112. package/lib/ocaml/QueryDbStorage_Postgres-ReventlessPostgres.cmt +0 -0
  113. package/lib/ocaml/QueryDbStorage_Postgres.ast +0 -0
  114. package/lib/ocaml/QueryDbStorage_Postgres.res +10 -233
  115. package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmi +0 -0
  116. package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmj +0 -0
  117. package/lib/ocaml/QueryDbStorage_Postgres_Ops-ReventlessPostgres.cmt +0 -0
  118. package/lib/ocaml/QueryDbStorage_Postgres_Ops.ast +0 -0
  119. package/lib/ocaml/QueryDbStorage_Postgres_Ops.res +229 -0
  120. package/lib/ocaml/QueryEnginePostgres-ReventlessPostgres.cmi +0 -0
  121. package/lib/ocaml/QueryEnginePostgres-ReventlessPostgres.cmt +0 -0
  122. package/lib/ocaml/QueryEnginePostgres.ast +0 -0
  123. package/lib/ocaml/QueryEnginePostgres.res +91 -10
  124. package/lib/ocaml/QueryEnginePostgresListPageTest.res +76 -0
  125. package/lib/ocaml/ReventlessPostgres.cmi +0 -0
  126. package/lib/ocaml/ReventlessPostgres.cmt +0 -0
  127. package/lib/ocaml/ReventlessPostgres.mlmap +3 -0
  128. package/package.json +11 -11
  129. package/rescript.json +2 -1
  130. package/src/DcbEventLogStorage_Postgres.res +25 -340
  131. package/src/DcbEventLogStorage_Postgres.res.mjs +32 -348
  132. package/src/DcbEventLogStorage_Postgres_Ops.res +350 -0
  133. package/src/DcbEventLogStorage_Postgres_Ops.res.mjs +380 -0
  134. package/src/EventLogChangeFeed.res +5 -2
  135. package/src/EventLogChangeFeed.res.mjs +3 -3
  136. package/src/EventLogStorage_Postgres.res +12 -170
  137. package/src/EventLogStorage_Postgres.res.mjs +20 -186
  138. package/src/EventLogStorage_Postgres_Ops.res +180 -0
  139. package/src/EventLogStorage_Postgres_Ops.res.mjs +202 -0
  140. package/src/PgChangeFeed.res +6 -1
  141. package/src/PgChangeFeed.res.mjs +6 -6
  142. package/src/QueryDbStorage_Postgres.res +10 -233
  143. package/src/QueryDbStorage_Postgres.res.mjs +25 -204
  144. package/src/QueryDbStorage_Postgres_Ops.res +229 -0
  145. package/src/QueryDbStorage_Postgres_Ops.res.mjs +222 -0
  146. package/src/QueryEnginePostgres.res +91 -10
  147. package/src/QueryEnginePostgres.res.mjs +89 -21
  148. package/tests/QueryEnginePostgresListPageTest.res +76 -0
  149. package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmi +0 -0
  150. package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmj +0 -0
  151. package/lib/ocaml/PostgresIntegrationTest-ReventlessPostgres.cmt +0 -0
  152. package/lib/ocaml/PostgresIntegrationTest.ast +0 -0
  153. package/lib/ocaml/QueryEnginePostgresListPageTest-ReventlessPostgres.cmi +0 -0
  154. package/lib/ocaml/QueryEnginePostgresListPageTest-ReventlessPostgres.cmj +0 -0
  155. package/lib/ocaml/QueryEnginePostgresListPageTest-ReventlessPostgres.cmt +0 -0
  156. package/lib/ocaml/QueryEnginePostgresListPageTest.ast +0 -0
  157. package/tests/PostgresIntegrationTest.res.mjs +0 -377
  158. package/tests/QueryEnginePostgresListPageTest.res.mjs +0 -325
@@ -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 */