envio 3.0.0-alpha.21 → 3.0.0-alpha.23
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/README.md +3 -3
- package/bin.mjs +2 -48
- package/evm.schema.json +67 -0
- package/fuel.schema.json +67 -0
- package/index.d.ts +822 -38
- package/index.js +5 -3
- package/package.json +10 -8
- package/rescript.json +5 -9
- package/src/Address.res +4 -5
- package/src/Address.res.mjs +9 -12
- package/src/Api.res +15 -0
- package/src/Api.res.mjs +20 -0
- package/src/Batch.res +32 -34
- package/src/Batch.res.mjs +172 -187
- package/src/Bin.res +89 -0
- package/src/Bin.res.mjs +97 -0
- package/src/ChainFetcher.res +33 -57
- package/src/ChainFetcher.res.mjs +197 -227
- package/src/ChainManager.res +6 -14
- package/src/ChainManager.res.mjs +74 -85
- package/src/ChainMap.res +14 -16
- package/src/ChainMap.res.mjs +38 -38
- package/src/Config.res +193 -135
- package/src/Config.res.mjs +566 -592
- package/src/Core.res +182 -0
- package/src/Core.res.mjs +207 -0
- package/src/Ecosystem.res +25 -4
- package/src/Ecosystem.res.mjs +12 -13
- package/src/Env.res +20 -13
- package/src/Env.res.mjs +124 -113
- package/src/EnvSafe.res +269 -0
- package/src/EnvSafe.res.mjs +296 -0
- package/src/EnvSafe.resi +18 -0
- package/src/Envio.res +37 -26
- package/src/Envio.res.mjs +59 -60
- package/src/ErrorHandling.res +2 -2
- package/src/ErrorHandling.res.mjs +15 -15
- package/src/EventConfigBuilder.res +219 -81
- package/src/EventConfigBuilder.res.mjs +259 -202
- package/src/EventProcessing.res +27 -38
- package/src/EventProcessing.res.mjs +165 -183
- package/src/EventUtils.res +11 -11
- package/src/EventUtils.res.mjs +21 -22
- package/src/EvmTypes.res +0 -1
- package/src/EvmTypes.res.mjs +5 -5
- package/src/FetchState.res +360 -256
- package/src/FetchState.res.mjs +958 -914
- package/src/GlobalState.res +365 -351
- package/src/GlobalState.res.mjs +958 -992
- package/src/GlobalStateManager.res +1 -2
- package/src/GlobalStateManager.res.mjs +36 -44
- package/src/HandlerLoader.res +107 -23
- package/src/HandlerLoader.res.mjs +128 -38
- package/src/HandlerRegister.res +127 -103
- package/src/HandlerRegister.res.mjs +164 -164
- package/src/HandlerRegister.resi +12 -4
- package/src/Hasura.res +35 -22
- package/src/Hasura.res.mjs +158 -167
- package/src/InMemoryStore.res +20 -27
- package/src/InMemoryStore.res.mjs +64 -80
- package/src/InMemoryTable.res +34 -39
- package/src/InMemoryTable.res.mjs +165 -170
- package/src/Internal.res +52 -33
- package/src/Internal.res.mjs +84 -81
- package/src/LazyLoader.res.mjs +55 -61
- package/src/LoadLayer.res +77 -78
- package/src/LoadLayer.res.mjs +160 -189
- package/src/LoadManager.res +16 -21
- package/src/LoadManager.res.mjs +79 -84
- package/src/LogSelection.res +236 -68
- package/src/LogSelection.res.mjs +211 -141
- package/src/Logging.res +13 -9
- package/src/Logging.res.mjs +130 -143
- package/src/Main.res +430 -51
- package/src/Main.res.mjs +530 -271
- package/src/Persistence.res +80 -84
- package/src/Persistence.res.mjs +131 -132
- package/src/PgStorage.res +294 -167
- package/src/PgStorage.res.mjs +799 -817
- package/src/Prometheus.res +50 -58
- package/src/Prometheus.res.mjs +345 -373
- package/src/ReorgDetection.res +22 -24
- package/src/ReorgDetection.res.mjs +100 -106
- package/src/SafeCheckpointTracking.res +7 -7
- package/src/SafeCheckpointTracking.res.mjs +40 -43
- package/src/SimulateItems.res +41 -49
- package/src/SimulateItems.res.mjs +257 -272
- package/src/Sink.res +2 -2
- package/src/Sink.res.mjs +22 -26
- package/src/TableIndices.res +1 -2
- package/src/TableIndices.res.mjs +42 -48
- package/src/TestIndexer.res +196 -189
- package/src/TestIndexer.res.mjs +536 -536
- package/src/TestIndexerProxyStorage.res +16 -16
- package/src/TestIndexerProxyStorage.res.mjs +99 -122
- package/src/TestIndexerWorker.res +4 -0
- package/src/TestIndexerWorker.res.mjs +7 -0
- package/src/Throttler.res +3 -3
- package/src/Throttler.res.mjs +23 -24
- package/src/Time.res +1 -1
- package/src/Time.res.mjs +18 -21
- package/src/TopicFilter.res +3 -3
- package/src/TopicFilter.res.mjs +29 -30
- package/src/UserContext.res +93 -54
- package/src/UserContext.res.mjs +197 -182
- package/src/Utils.res +141 -86
- package/src/Utils.res.mjs +334 -295
- package/src/bindings/BigDecimal.res +0 -2
- package/src/bindings/BigDecimal.res.mjs +19 -23
- package/src/bindings/ClickHouse.res +28 -27
- package/src/bindings/ClickHouse.res.mjs +243 -240
- package/src/bindings/DateFns.res +11 -11
- package/src/bindings/DateFns.res.mjs +7 -7
- package/src/bindings/EventSource.res.mjs +2 -2
- package/src/bindings/Express.res +2 -5
- package/src/bindings/Hrtime.res +2 -2
- package/src/bindings/Hrtime.res.mjs +30 -32
- package/src/bindings/Lodash.res.mjs +1 -1
- package/src/bindings/NodeJs.res +14 -9
- package/src/bindings/NodeJs.res.mjs +20 -20
- package/src/bindings/Pino.res +8 -10
- package/src/bindings/Pino.res.mjs +40 -43
- package/src/bindings/Postgres.res +7 -5
- package/src/bindings/Postgres.res.mjs +9 -9
- package/src/bindings/PromClient.res +17 -2
- package/src/bindings/PromClient.res.mjs +30 -7
- package/src/bindings/SDSL.res.mjs +2 -2
- package/src/bindings/Viem.res +4 -4
- package/src/bindings/Viem.res.mjs +20 -22
- package/src/bindings/Vitest.res +1 -1
- package/src/bindings/Vitest.res.mjs +2 -2
- package/src/bindings/WebSocket.res +1 -1
- package/src/db/EntityHistory.res +9 -3
- package/src/db/EntityHistory.res.mjs +84 -59
- package/src/db/InternalTable.res +62 -60
- package/src/db/InternalTable.res.mjs +271 -203
- package/src/db/Schema.res +1 -2
- package/src/db/Schema.res.mjs +28 -32
- package/src/db/Table.res +28 -27
- package/src/db/Table.res.mjs +276 -292
- package/src/sources/EventRouter.res +21 -16
- package/src/sources/EventRouter.res.mjs +55 -57
- package/src/sources/Evm.res +17 -1
- package/src/sources/Evm.res.mjs +16 -8
- package/src/sources/EvmChain.res +15 -17
- package/src/sources/EvmChain.res.mjs +40 -42
- package/src/sources/Fuel.res +14 -1
- package/src/sources/Fuel.res.mjs +16 -8
- package/src/sources/FuelSDK.res +1 -1
- package/src/sources/FuelSDK.res.mjs +6 -8
- package/src/sources/HyperFuel.res +8 -10
- package/src/sources/HyperFuel.res.mjs +113 -123
- package/src/sources/HyperFuelClient.res.mjs +6 -7
- package/src/sources/HyperFuelSource.res +19 -20
- package/src/sources/HyperFuelSource.res.mjs +339 -356
- package/src/sources/HyperSync.res +11 -13
- package/src/sources/HyperSync.res.mjs +206 -220
- package/src/sources/HyperSyncClient.res +5 -7
- package/src/sources/HyperSyncClient.res.mjs +70 -75
- package/src/sources/HyperSyncHeightStream.res +8 -9
- package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
- package/src/sources/HyperSyncJsonApi.res +18 -15
- package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
- package/src/sources/HyperSyncSource.res +17 -21
- package/src/sources/HyperSyncSource.res.mjs +268 -290
- package/src/sources/Rpc.res +5 -5
- package/src/sources/Rpc.res.mjs +168 -192
- package/src/sources/RpcSource.res +166 -167
- package/src/sources/RpcSource.res.mjs +972 -1046
- package/src/sources/RpcWebSocketHeightStream.res +10 -11
- package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
- package/src/sources/SimulateSource.res +1 -1
- package/src/sources/SimulateSource.res.mjs +35 -38
- package/src/sources/Source.res +1 -1
- package/src/sources/Source.res.mjs +3 -3
- package/src/sources/SourceManager.res +39 -20
- package/src/sources/SourceManager.res.mjs +340 -371
- package/src/sources/SourceManager.resi +2 -1
- package/src/sources/Svm.res +12 -5
- package/src/sources/Svm.res.mjs +44 -41
- package/src/tui/Tui.res +23 -12
- package/src/tui/Tui.res.mjs +292 -290
- package/src/tui/bindings/Ink.res +2 -4
- package/src/tui/bindings/Ink.res.mjs +35 -41
- package/src/tui/components/BufferedProgressBar.res +7 -7
- package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
- package/src/tui/components/CustomHooks.res +1 -2
- package/src/tui/components/CustomHooks.res.mjs +102 -122
- package/src/tui/components/Messages.res +1 -2
- package/src/tui/components/Messages.res.mjs +38 -42
- package/src/tui/components/SyncETA.res +10 -11
- package/src/tui/components/SyncETA.res.mjs +178 -196
- package/src/tui/components/TuiData.res +1 -1
- package/src/tui/components/TuiData.res.mjs +7 -6
- package/src/vendored/Rest.res +52 -66
- package/src/vendored/Rest.res.mjs +324 -364
- package/svm.schema.json +67 -0
- package/src/Address.gen.ts +0 -8
- package/src/Config.gen.ts +0 -19
- package/src/Envio.gen.ts +0 -55
- package/src/EvmTypes.gen.ts +0 -6
- package/src/InMemoryStore.gen.ts +0 -6
- package/src/Internal.gen.ts +0 -64
- package/src/PgStorage.gen.ts +0 -10
- package/src/PgStorage.res.d.mts +0 -5
- package/src/Types.ts +0 -56
- package/src/bindings/BigDecimal.gen.ts +0 -14
- package/src/bindings/BigDecimal.res.d.mts +0 -5
- package/src/bindings/BigInt.gen.ts +0 -10
- package/src/bindings/BigInt.res +0 -70
- package/src/bindings/BigInt.res.d.mts +0 -5
- package/src/bindings/BigInt.res.mjs +0 -154
- package/src/bindings/Ethers.res.d.mts +0 -5
- package/src/bindings/Pino.gen.ts +0 -17
- package/src/bindings/Postgres.gen.ts +0 -8
- package/src/bindings/Postgres.res.d.mts +0 -5
- package/src/bindings/Promise.res +0 -67
- package/src/bindings/Promise.res.mjs +0 -26
- package/src/db/InternalTable.gen.ts +0 -36
- package/src/sources/HyperSyncClient.gen.ts +0 -19
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
@genType.import(("bignumber.js", "default"))
|
|
2
1
|
type rec t = {
|
|
3
2
|
toString: unit => string,
|
|
4
3
|
toFixed: int => string,
|
|
@@ -47,7 +46,6 @@ let one = fromInt(1)
|
|
|
47
46
|
@send external decimalPlaces: (t, int) => t = "decimalPlaces"
|
|
48
47
|
|
|
49
48
|
// Serialization
|
|
50
|
-
@genType
|
|
51
49
|
let schema =
|
|
52
50
|
S.string
|
|
53
51
|
->S.setName("BigDecimal")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as Belt_Int from "rescript/lib/es6/
|
|
3
|
+
import * as Belt_Int from "@rescript/runtime/lib/es6/Belt_Int.js";
|
|
4
4
|
import BignumberJs from "bignumber.js";
|
|
5
5
|
import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
|
|
6
6
|
|
|
@@ -12,31 +12,27 @@ function notEquals(a, b) {
|
|
|
12
12
|
return !a.isEqualTo(b);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
let zero = new BignumberJs(0);
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
let one = new BignumberJs(1);
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return bigDecimal.toString();
|
|
31
|
-
})
|
|
32
|
-
};
|
|
33
|
-
}));
|
|
19
|
+
let schema = S$RescriptSchema.transform(S$RescriptSchema.setName(S$RescriptSchema.string, "BigDecimal"), s => ({
|
|
20
|
+
p: string => {
|
|
21
|
+
let bigDecimal = new BignumberJs(string);
|
|
22
|
+
if (bigDecimal !== undefined) {
|
|
23
|
+
return bigDecimal;
|
|
24
|
+
} else {
|
|
25
|
+
return s.fail("The string is not valid BigDecimal", undefined);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
s: bigDecimal => bigDecimal.toString()
|
|
29
|
+
}));
|
|
34
30
|
|
|
35
31
|
export {
|
|
36
|
-
toInt
|
|
37
|
-
notEquals
|
|
38
|
-
zero
|
|
39
|
-
one
|
|
40
|
-
schema
|
|
32
|
+
toInt,
|
|
33
|
+
notEquals,
|
|
34
|
+
zero,
|
|
35
|
+
one,
|
|
36
|
+
schema,
|
|
41
37
|
}
|
|
42
38
|
/* zero Not a pure module */
|
|
@@ -57,7 +57,7 @@ let getClickHouseFieldType = (
|
|
|
57
57
|
if precision > 38 {
|
|
58
58
|
"String"
|
|
59
59
|
} else {
|
|
60
|
-
`Decimal(${precision->
|
|
60
|
+
`Decimal(${precision->Int.toString},0)`
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
| BigDecimal({?config}) =>
|
|
@@ -67,7 +67,7 @@ let getClickHouseFieldType = (
|
|
|
67
67
|
if precision > 38 || scale > precision {
|
|
68
68
|
"String"
|
|
69
69
|
} else {
|
|
70
|
-
`Decimal(${precision->
|
|
70
|
+
`Decimal(${precision->Int.toString},${scale->Int.toString})`
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
| Boolean => "Bool"
|
|
@@ -86,7 +86,7 @@ let getClickHouseFieldType = (
|
|
|
86
86
|
let variantStr = variant->(Utils.magic: 'a => string)
|
|
87
87
|
`'${variantStr}'`
|
|
88
88
|
})
|
|
89
|
-
->
|
|
89
|
+
->Array.joinUnsafe(", ")
|
|
90
90
|
`${enumType}(${enumValues})`
|
|
91
91
|
}
|
|
92
92
|
| Entity(_) => "String"
|
|
@@ -104,7 +104,7 @@ let getClickHouseFieldType = (
|
|
|
104
104
|
// Creates an entity schema from table definition, using clickHouseDate for Date fields
|
|
105
105
|
let makeClickHouseEntitySchema = (table: Table.table): S.t<Internal.entity> => {
|
|
106
106
|
S.schema(s => {
|
|
107
|
-
let dict =
|
|
107
|
+
let dict = Dict.make()
|
|
108
108
|
table.fields->Belt.Array.forEach(field => {
|
|
109
109
|
switch field {
|
|
110
110
|
| Field(f) => {
|
|
@@ -124,10 +124,11 @@ let makeClickHouseEntitySchema = (table: Table.table): S.t<Internal.entity> => {
|
|
|
124
124
|
| UInt52 => {
|
|
125
125
|
let uint52Schema =
|
|
126
126
|
S.float
|
|
127
|
-
->S.preprocess(
|
|
128
|
-
|
|
129
|
-
unknown->(Utils.magic: unknown => string)->
|
|
130
|
-
|
|
127
|
+
->S.preprocess(
|
|
128
|
+
_ => {
|
|
129
|
+
parser: unknown => unknown->(Utils.magic: unknown => string)->Float.parseFloat,
|
|
130
|
+
},
|
|
131
|
+
)
|
|
131
132
|
->S.toUnknown
|
|
132
133
|
if f.isNullable {
|
|
133
134
|
S.null(uint52Schema)->S.toUnknown
|
|
@@ -139,12 +140,12 @@ let makeClickHouseEntitySchema = (table: Table.table): S.t<Internal.entity> => {
|
|
|
139
140
|
}
|
|
140
141
|
| _ => f.fieldSchema
|
|
141
142
|
}
|
|
142
|
-
dict->
|
|
143
|
+
dict->Dict.set(fieldName, s.matches(fieldSchema))
|
|
143
144
|
}
|
|
144
145
|
| DerivedFrom(_) => () // Skip derived fields
|
|
145
146
|
}
|
|
146
147
|
})
|
|
147
|
-
dict->(Utils.magic:
|
|
148
|
+
dict->(Utils.magic: dict<unknown> => Internal.entity)
|
|
148
149
|
})
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -164,7 +165,7 @@ let rec insertWithRetry = async (
|
|
|
164
165
|
await client->insert({table, values, format})
|
|
165
166
|
} catch {
|
|
166
167
|
| exn if retries > 0 =>
|
|
167
|
-
let delayMs =
|
|
168
|
+
let delayMs = Math.Int.min(1000, 100 + 900 * (8 - retries) / 7)
|
|
168
169
|
if Array.length(values) > 1 {
|
|
169
170
|
logger->Logging.childWarn({
|
|
170
171
|
"msg": "ClickHouse insert failed, splitting batch in half and retrying",
|
|
@@ -175,8 +176,8 @@ let rec insertWithRetry = async (
|
|
|
175
176
|
})
|
|
176
177
|
await Utils.delay(delayMs)
|
|
177
178
|
let mid = Array.length(values) / 2
|
|
178
|
-
let first = values->
|
|
179
|
-
let second = values->
|
|
179
|
+
let first = values->Array.slice(~start=0, ~end=mid)
|
|
180
|
+
let second = values->Array.slice(~start=mid)
|
|
180
181
|
await insertWithRetry(client, ~table, ~values=first, ~format, ~retries=retries - 1)
|
|
181
182
|
await insertWithRetry(client, ~table, ~values=second, ~format, ~retries=retries - 1)
|
|
182
183
|
} else {
|
|
@@ -201,7 +202,7 @@ let setCheckpointsOrThrow = async (client, ~batch: Batch.t, ~database: string) =
|
|
|
201
202
|
let checkpointRows = []
|
|
202
203
|
for idx in 0 to checkpointsCount - 1 {
|
|
203
204
|
checkpointRows
|
|
204
|
-
->
|
|
205
|
+
->Array.push((
|
|
205
206
|
batch.checkpointIds->Belt.Array.getUnsafe(idx)->BigInt.toString,
|
|
206
207
|
batch.checkpointChainIds->Belt.Array.getUnsafe(idx),
|
|
207
208
|
batch.checkpointBlockNumbers->Belt.Array.getUnsafe(idx),
|
|
@@ -220,7 +221,7 @@ let setCheckpointsOrThrow = async (client, ~batch: Batch.t, ~database: string) =
|
|
|
220
221
|
)
|
|
221
222
|
} catch {
|
|
222
223
|
| exn =>
|
|
223
|
-
|
|
224
|
+
throw(
|
|
224
225
|
Persistence.StorageError({
|
|
225
226
|
message: `Failed to insert checkpoints into ClickHouse table "${InternalTable.Checkpoints.table.tableName}"`,
|
|
226
227
|
reason: exn->Utils.prettifyExn,
|
|
@@ -232,7 +233,7 @@ let setCheckpointsOrThrow = async (client, ~batch: Batch.t, ~database: string) =
|
|
|
232
233
|
|
|
233
234
|
type setUpdatesCache = {
|
|
234
235
|
tableName: string,
|
|
235
|
-
convertOrThrow: Change.t<Internal.entity> =>
|
|
236
|
+
convertOrThrow: Change.t<Internal.entity> => JSON.t,
|
|
236
237
|
}
|
|
237
238
|
|
|
238
239
|
let setUpdatesOrThrow = async (
|
|
@@ -280,14 +281,14 @@ let setUpdatesOrThrow = async (
|
|
|
280
281
|
|
|
281
282
|
try {
|
|
282
283
|
// Convert entity updates to ClickHouse row format
|
|
283
|
-
let values = updates->
|
|
284
|
+
let values = updates->Array.map(update => {
|
|
284
285
|
update.latestChange->convertOrThrow
|
|
285
286
|
})
|
|
286
287
|
|
|
287
288
|
await insertWithRetry(client, ~table=tableName, ~values, ~format="JSONEachRow")
|
|
288
289
|
} catch {
|
|
289
290
|
| exn =>
|
|
290
|
-
|
|
291
|
+
throw(
|
|
291
292
|
Persistence.StorageError({
|
|
292
293
|
message: `Failed to insert items into ClickHouse table "${tableName}"`,
|
|
293
294
|
reason: exn->Utils.prettifyExn,
|
|
@@ -319,7 +320,7 @@ let makeCreateHistoryTableQuery = (~entityConfig: Internal.entityConfig, ~databa
|
|
|
319
320
|
~entityName=entityConfig.name,
|
|
320
321
|
~entityIndex=entityConfig.index,
|
|
321
322
|
)}\` (
|
|
322
|
-
${fieldDefinitions->
|
|
323
|
+
${fieldDefinitions->Array.joinUnsafe(",\n ")},
|
|
323
324
|
\`${EntityHistory.checkpointIdFieldName}\` ${getClickHouseFieldType(
|
|
324
325
|
~fieldType=UInt64,
|
|
325
326
|
~isNullable=false,
|
|
@@ -391,7 +392,7 @@ let makeCreateViewQuery = (~entityConfig: Internal.entityConfig, ~database: stri
|
|
|
391
392
|
| DerivedFrom(_) => None
|
|
392
393
|
}
|
|
393
394
|
})
|
|
394
|
-
->
|
|
395
|
+
->Array.joinUnsafe(", ")
|
|
395
396
|
|
|
396
397
|
`CREATE VIEW IF NOT EXISTS ${database}.\`${entityConfig.name}\` AS
|
|
397
398
|
SELECT ${entityFields}
|
|
@@ -421,20 +422,20 @@ let initialize = async (
|
|
|
421
422
|
entities->Belt.Array.map(entityConfig =>
|
|
422
423
|
client->exec({query: makeCreateHistoryTableQuery(~entityConfig, ~database)})
|
|
423
424
|
),
|
|
424
|
-
)->Promise.ignoreValue
|
|
425
|
+
)->Utils.Promise.ignoreValue
|
|
425
426
|
await client->exec({query: makeCreateCheckpointsTableQuery(~database)})
|
|
426
427
|
|
|
427
428
|
await Promise.all(
|
|
428
429
|
entities->Belt.Array.map(entityConfig =>
|
|
429
430
|
client->exec({query: makeCreateViewQuery(~entityConfig, ~database)})
|
|
430
431
|
),
|
|
431
|
-
)->Promise.ignoreValue
|
|
432
|
+
)->Utils.Promise.ignoreValue
|
|
432
433
|
|
|
433
434
|
Logging.trace("ClickHouse sink initialization completed successfully")
|
|
434
435
|
} catch {
|
|
435
436
|
| exn => {
|
|
436
437
|
Logging.errorWithExn(exn, "Failed to initialize ClickHouse sink")
|
|
437
|
-
|
|
438
|
+
JsError.throwWithMessage("ClickHouse initialization failed")
|
|
438
439
|
}
|
|
439
440
|
}
|
|
440
441
|
}
|
|
@@ -451,7 +452,7 @@ let resume = async (client, ~database: string, ~checkpointId: Internal.checkpoin
|
|
|
451
452
|
exn,
|
|
452
453
|
`ClickHouse sink database "${database}" not found. Please run 'envio start -r' to reinitialize the indexer (it'll also drop Postgres database).`,
|
|
453
454
|
)
|
|
454
|
-
|
|
455
|
+
JsError.throwWithMessage("ClickHouse resume failed")
|
|
455
456
|
}
|
|
456
457
|
|
|
457
458
|
// Get all history tables
|
|
@@ -468,17 +469,17 @@ let resume = async (client, ~database: string, ~checkpointId: Internal.checkpoin
|
|
|
468
469
|
query: `ALTER TABLE ${database}.\`${tableName}\` DELETE WHERE \`${EntityHistory.checkpointIdFieldName}\` > ${checkpointId->BigInt.toString}`,
|
|
469
470
|
})
|
|
470
471
|
}),
|
|
471
|
-
)->Promise.ignoreValue
|
|
472
|
+
)->Utils.Promise.ignoreValue
|
|
472
473
|
|
|
473
474
|
// Delete stale checkpoints
|
|
474
475
|
await client->exec({
|
|
475
476
|
query: `DELETE FROM ${database}.\`${InternalTable.Checkpoints.table.tableName}\` WHERE \`${Table.idFieldName}\` > ${checkpointId->BigInt.toString}`,
|
|
476
477
|
})
|
|
477
478
|
} catch {
|
|
478
|
-
| Persistence.StorageError(_) as exn =>
|
|
479
|
+
| Persistence.StorageError(_) as exn => throw(exn)
|
|
479
480
|
| exn => {
|
|
480
481
|
Logging.errorWithExn(exn, "Failed to resume ClickHouse sink")
|
|
481
|
-
|
|
482
|
+
JsError.throwWithMessage("ClickHouse resume failed")
|
|
482
483
|
}
|
|
483
484
|
}
|
|
484
485
|
}
|