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
package/src/db/InternalTable.res
CHANGED
|
@@ -5,7 +5,7 @@ let isPrimaryKey = true
|
|
|
5
5
|
let isNullable = true
|
|
6
6
|
let isIndex = true
|
|
7
7
|
|
|
8
|
-
module
|
|
8
|
+
module EnvioAddresses = Config.EnvioAddresses
|
|
9
9
|
|
|
10
10
|
module Chains = {
|
|
11
11
|
type progressFields = [
|
|
@@ -42,17 +42,23 @@ module Chains = {
|
|
|
42
42
|
]
|
|
43
43
|
|
|
44
44
|
type metaFields = {
|
|
45
|
-
@as("first_event_block")
|
|
45
|
+
@as("first_event_block")
|
|
46
|
+
firstEventBlockNumber: Null.t<
|
|
47
|
+
// Push id first (for WHERE clause)
|
|
48
|
+
|
|
49
|
+
// Then push all updateable field values (for SET clause)
|
|
50
|
+
int,
|
|
51
|
+
>,
|
|
46
52
|
@as("buffer_block") latestFetchedBlockNumber: int,
|
|
47
53
|
@as("ready_at")
|
|
48
|
-
timestampCaughtUpToHeadOrEndblock:
|
|
54
|
+
timestampCaughtUpToHeadOrEndblock: Null.t<Date.t>,
|
|
49
55
|
@as("_is_hyper_sync") isHyperSync: bool,
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
type t = {
|
|
53
59
|
@as("id") id: int,
|
|
54
60
|
@as("start_block") startBlock: int,
|
|
55
|
-
@as("end_block") endBlock:
|
|
61
|
+
@as("end_block") endBlock: Null.t<int>,
|
|
56
62
|
@as("max_reorg_depth") maxReorgDepth: int,
|
|
57
63
|
@as("source_block") blockHeight: int,
|
|
58
64
|
@as("progress_block") progressBlockNumber: int,
|
|
@@ -99,12 +105,12 @@ module Chains = {
|
|
|
99
105
|
{
|
|
100
106
|
id: chainConfig.id,
|
|
101
107
|
startBlock: chainConfig.startBlock,
|
|
102
|
-
endBlock: chainConfig.endBlock->
|
|
108
|
+
endBlock: chainConfig.endBlock->Null.fromOption,
|
|
103
109
|
maxReorgDepth: chainConfig.maxReorgDepth,
|
|
104
110
|
blockHeight: 0,
|
|
105
|
-
firstEventBlockNumber:
|
|
111
|
+
firstEventBlockNumber: Null.null,
|
|
106
112
|
latestFetchedBlockNumber: -1,
|
|
107
|
-
timestampCaughtUpToHeadOrEndblock:
|
|
113
|
+
timestampCaughtUpToHeadOrEndblock: Null.null,
|
|
108
114
|
progressBlockNumber: -1,
|
|
109
115
|
isHyperSync: false,
|
|
110
116
|
numEventsProcessed: 0.,
|
|
@@ -122,23 +128,22 @@ module Chains = {
|
|
|
122
128
|
let valuesRows = chainConfigs->Belt.Array.map(chainConfig => {
|
|
123
129
|
let initialValues = initialFromConfig(chainConfig)
|
|
124
130
|
let values = fields->Belt.Array.map((field: field) => {
|
|
125
|
-
let value =
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
| _ => Js.Exn.raiseError("Invalid envio_chains value type")
|
|
131
|
+
let value = initialValues->(Utils.magic: t => dict<unknown>)->Dict.get((field :> string))
|
|
132
|
+
switch typeof(value) {
|
|
133
|
+
| #object => "NULL"
|
|
134
|
+
| #number => value->(Utils.magic: option<unknown> => int)->Belt.Int.toString
|
|
135
|
+
| #bigint => value->(Utils.magic: option<unknown> => bigint)->BigInt.toString
|
|
136
|
+
| #boolean => value->(Utils.magic: option<unknown> => bool) ? "true" : "false"
|
|
137
|
+
| _ => JsError.throwWithMessage("Invalid envio_chains value type")
|
|
133
138
|
}
|
|
134
139
|
})
|
|
135
140
|
|
|
136
|
-
`(${values->
|
|
141
|
+
`(${values->Array.joinUnsafe(", ")})`
|
|
137
142
|
})
|
|
138
143
|
|
|
139
144
|
Some(
|
|
140
|
-
`INSERT INTO "${pgSchema}"."${table.tableName}" (${columnNames->
|
|
141
|
-
VALUES ${valuesRows->
|
|
145
|
+
`INSERT INTO "${pgSchema}"."${table.tableName}" (${columnNames->Array.joinUnsafe(", ")})
|
|
146
|
+
VALUES ${valuesRows->Array.joinUnsafe(",\n ")};`,
|
|
142
147
|
)
|
|
143
148
|
}
|
|
144
149
|
}
|
|
@@ -155,27 +160,23 @@ VALUES ${valuesRows->Js.Array2.joinWith(",\n ")};`,
|
|
|
155
160
|
})
|
|
156
161
|
|
|
157
162
|
`UPDATE "${pgSchema}"."${table.tableName}"
|
|
158
|
-
SET ${setClauses->
|
|
163
|
+
SET ${setClauses->Array.joinUnsafe(",\n ")}
|
|
159
164
|
WHERE "${(#id: field :> string)}" = $1;`
|
|
160
165
|
}
|
|
161
166
|
|
|
162
167
|
type rawInitialState = {
|
|
163
168
|
id: int,
|
|
164
169
|
startBlock: int,
|
|
165
|
-
endBlock:
|
|
170
|
+
endBlock: Null.t<int>,
|
|
166
171
|
maxReorgDepth: int,
|
|
167
|
-
firstEventBlockNumber:
|
|
168
|
-
timestampCaughtUpToHeadOrEndblock:
|
|
172
|
+
firstEventBlockNumber: Null.t<int>,
|
|
173
|
+
timestampCaughtUpToHeadOrEndblock: Null.t<Date.t>,
|
|
169
174
|
numEventsProcessed: float,
|
|
170
175
|
progressBlockNumber: int,
|
|
171
|
-
|
|
176
|
+
indexingAddresses: array<Internal.indexingAddress>,
|
|
172
177
|
sourceBlockNumber: int,
|
|
173
178
|
}
|
|
174
179
|
|
|
175
|
-
// FIXME: Using registering_event_block_number for startBlock
|
|
176
|
-
// seems incorrect, since there might be a custom start block
|
|
177
|
-
// for the contract.
|
|
178
|
-
// TODO: Write a repro test where it might break something and fix
|
|
179
180
|
let makeGetInitialStateQuery = (~pgSchema) => {
|
|
180
181
|
`SELECT "${(#id: field :> string)}" as "id",
|
|
181
182
|
"${(#start_block: field :> string)}" as "startBlock",
|
|
@@ -187,15 +188,17 @@ WHERE "${(#id: field :> string)}" = $1;`
|
|
|
187
188
|
"${(#progress_block: field :> string)}" as "progressBlockNumber",
|
|
188
189
|
"${(#source_block: field :> string)}" as "sourceBlockNumber",
|
|
189
190
|
(
|
|
191
|
+
-- envio_addresses.id is a composite "{chainId}-{address}" string produced by
|
|
192
|
+
-- Config.EnvioAddresses.makeId; extract the address by taking everything
|
|
193
|
+
-- after the first '-'. Keep in sync with makeId / getAddress.
|
|
190
194
|
SELECT COALESCE(json_agg(json_build_object(
|
|
191
|
-
'address', "
|
|
195
|
+
'address', SUBSTRING("id" FROM POSITION('-' IN "id") + 1),
|
|
192
196
|
'contractName', "contract_name",
|
|
193
|
-
'
|
|
194
|
-
'registrationBlock', "registering_event_block_number"
|
|
197
|
+
'registrationBlock', "registration_block"
|
|
195
198
|
)), '[]'::json)
|
|
196
|
-
FROM "${pgSchema}"."${
|
|
199
|
+
FROM "${pgSchema}"."${EnvioAddresses.table.tableName}"
|
|
197
200
|
WHERE "chain_id" = chains."${(#id: field :> string)}"
|
|
198
|
-
) as "
|
|
201
|
+
) as "indexingAddresses"
|
|
199
202
|
FROM "${pgSchema}"."${table.tableName}" as chains;`
|
|
200
203
|
}
|
|
201
204
|
|
|
@@ -215,7 +218,7 @@ FROM "${pgSchema}"."${table.tableName}" as chains;`
|
|
|
215
218
|
})
|
|
216
219
|
|
|
217
220
|
`UPDATE "${pgSchema}"."${table.tableName}"
|
|
218
|
-
SET ${setClauses->
|
|
221
|
+
SET ${setClauses->Array.joinUnsafe(",\n ")}
|
|
219
222
|
WHERE "id" = $1;`
|
|
220
223
|
}
|
|
221
224
|
|
|
@@ -228,16 +231,16 @@ WHERE "id" = $1;`
|
|
|
228
231
|
let params = []
|
|
229
232
|
|
|
230
233
|
// Push id first (for WHERE clause)
|
|
231
|
-
params->
|
|
234
|
+
params->Array.push(chainId->(Utils.magic: string => unknown))->ignore
|
|
232
235
|
|
|
233
236
|
// Then push all updateable field values (for SET clause)
|
|
234
|
-
metaFields->
|
|
237
|
+
metaFields->Array.forEach(field => {
|
|
235
238
|
let value =
|
|
236
|
-
data->(Utils.magic: metaFields => dict<unknown>)->
|
|
237
|
-
params->
|
|
239
|
+
data->(Utils.magic: metaFields => dict<unknown>)->Dict.getUnsafe((field :> string))
|
|
240
|
+
params->Array.push(value)->ignore
|
|
238
241
|
})
|
|
239
242
|
|
|
240
|
-
promises->
|
|
243
|
+
promises->Array.push(sql->Postgres.preparedUnsafe(query, params->Obj.magic))->ignore
|
|
241
244
|
})
|
|
242
245
|
|
|
243
246
|
Promise.all(promises)
|
|
@@ -255,16 +258,14 @@ WHERE "id" = $1;`
|
|
|
255
258
|
|
|
256
259
|
let promises = []
|
|
257
260
|
|
|
258
|
-
progressedChains->
|
|
261
|
+
progressedChains->Array.forEach(data => {
|
|
259
262
|
let params = []
|
|
260
263
|
|
|
261
|
-
|
|
262
|
-
params->Js.Array2.push(data.chainId->(Utils.magic: int => unknown))->ignore
|
|
264
|
+
params->Array.push(data.chainId->(Utils.magic: int => unknown))->ignore
|
|
263
265
|
|
|
264
|
-
|
|
265
|
-
progressFields->Js.Array2.forEach(field => {
|
|
266
|
+
progressFields->Array.forEach(field => {
|
|
266
267
|
params
|
|
267
|
-
->
|
|
268
|
+
->Array.push(
|
|
268
269
|
switch field {
|
|
269
270
|
| #progress_block => data.progressBlockNumber->(Utils.magic: int => unknown)
|
|
270
271
|
| #events_processed => data.totalEventsProcessed->(Utils.magic: float => unknown)
|
|
@@ -274,10 +275,10 @@ WHERE "id" = $1;`
|
|
|
274
275
|
->ignore
|
|
275
276
|
})
|
|
276
277
|
|
|
277
|
-
promises->
|
|
278
|
+
promises->Array.push(sql->Postgres.preparedUnsafe(query, params->Obj.magic))->ignore
|
|
278
279
|
})
|
|
279
280
|
|
|
280
|
-
Promise.all(promises)->Promise.ignoreValue
|
|
281
|
+
Promise.all(promises)->Utils.Promise.ignoreValue
|
|
281
282
|
}
|
|
282
283
|
}
|
|
283
284
|
|
|
@@ -318,19 +319,22 @@ module Checkpoints = {
|
|
|
318
319
|
@as("block_number")
|
|
319
320
|
blockNumber: int,
|
|
320
321
|
@as("block_hash")
|
|
321
|
-
blockHash:
|
|
322
|
+
blockHash: Null.t<string>,
|
|
322
323
|
@as("events_processed")
|
|
323
324
|
eventsProcessed: int,
|
|
324
325
|
}
|
|
325
326
|
|
|
326
327
|
// Schema for parsing DB results where BIGINT columns come back as strings
|
|
327
328
|
let dbSchema = S.object(s => {
|
|
328
|
-
id: s.field("id", BigInt.schema),
|
|
329
|
+
id: s.field("id", Utils.BigInt.schema),
|
|
329
330
|
chainId: s.field("chain_id", S.int),
|
|
330
331
|
blockNumber: s.field("block_number", S.int),
|
|
331
332
|
blockHash: s.field(
|
|
332
333
|
"block_hash",
|
|
333
|
-
S.union([
|
|
334
|
+
S.union([
|
|
335
|
+
S.string->(Utils.magic: S.t<string> => S.t<Null.t<string>>),
|
|
336
|
+
S.literal(%raw(`null`)),
|
|
337
|
+
]),
|
|
334
338
|
),
|
|
335
339
|
eventsProcessed: s.field("events_processed", S.int),
|
|
336
340
|
})
|
|
@@ -395,7 +399,7 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
|
|
|
395
399
|
let query = makeInsertCheckpointQuery(~pgSchema)
|
|
396
400
|
|
|
397
401
|
// Convert bigint arrays to string arrays for postgres driver compatibility
|
|
398
|
-
let checkpointIdStrings = checkpointIds->BigInt.arrayToStringArray
|
|
402
|
+
let checkpointIdStrings = checkpointIds->Utils.BigInt.arrayToStringArray
|
|
399
403
|
sql
|
|
400
404
|
->Postgres.preparedUnsafe(
|
|
401
405
|
query,
|
|
@@ -407,11 +411,11 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
|
|
|
407
411
|
checkpointEventsProcessed,
|
|
408
412
|
)->(
|
|
409
413
|
Utils.magic: (
|
|
410
|
-
(array<string>, array<int>, array<int>, array<
|
|
414
|
+
(array<string>, array<int>, array<int>, array<Null.t<string>>, array<int>)
|
|
411
415
|
) => unknown
|
|
412
416
|
),
|
|
413
417
|
)
|
|
414
|
-
->Promise.ignoreValue
|
|
418
|
+
->Utils.Promise.ignoreValue
|
|
415
419
|
}
|
|
416
420
|
|
|
417
421
|
let rollback = (sql, ~pgSchema, ~rollbackTargetCheckpointId: Internal.checkpointId) => {
|
|
@@ -420,7 +424,7 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
|
|
|
420
424
|
`DELETE FROM "${pgSchema}"."${table.tableName}" WHERE "${(#id: field :> string)}" > $1;`,
|
|
421
425
|
[rollbackTargetCheckpointId->BigInt.toString]->(Utils.magic: array<string> => unknown),
|
|
422
426
|
)
|
|
423
|
-
->Promise.ignoreValue
|
|
427
|
+
->Utils.Promise.ignoreValue
|
|
424
428
|
}
|
|
425
429
|
|
|
426
430
|
let makePruneStaleCheckpointsQuery = (~pgSchema) => {
|
|
@@ -433,7 +437,7 @@ SELECT * FROM unnest($1::${(BigInt: Postgres.columnType :> string)}[],$2::${(Int
|
|
|
433
437
|
makePruneStaleCheckpointsQuery(~pgSchema),
|
|
434
438
|
[safeCheckpointId->BigInt.toString]->Obj.magic,
|
|
435
439
|
)
|
|
436
|
-
->Promise.ignoreValue
|
|
440
|
+
->Utils.Promise.ignoreValue
|
|
437
441
|
}
|
|
438
442
|
|
|
439
443
|
let makeGetRollbackTargetCheckpointQuery = (~pgSchema) => {
|
|
@@ -459,7 +463,7 @@ LIMIT 1;`
|
|
|
459
463
|
)
|
|
460
464
|
->(Utils.magic: promise<unknown> => promise<array<{"id": string}>>)
|
|
461
465
|
rawResult->Promise.thenResolve(rows => {
|
|
462
|
-
rows->Belt.Array.get(0)->Belt.Option.map(row => row["id"]->BigInt.
|
|
466
|
+
rows->Belt.Array.get(0)->Belt.Option.map(row => row["id"]->BigInt.fromStringOrThrow)
|
|
463
467
|
})
|
|
464
468
|
}
|
|
465
469
|
|
|
@@ -496,8 +500,6 @@ GROUP BY "${(#chain_id: field :> string)}";`
|
|
|
496
500
|
}
|
|
497
501
|
|
|
498
502
|
module RawEvents = {
|
|
499
|
-
// @genType Used for Test DB and internal tests
|
|
500
|
-
@genType
|
|
501
503
|
type t = {
|
|
502
504
|
@as("chain_id") chainId: int,
|
|
503
505
|
@as("event_id") eventId: bigint,
|
|
@@ -508,9 +510,9 @@ module RawEvents = {
|
|
|
508
510
|
@as("src_address") srcAddress: Address.t,
|
|
509
511
|
@as("block_hash") blockHash: string,
|
|
510
512
|
@as("block_timestamp") blockTimestamp: int,
|
|
511
|
-
@as("block_fields") blockFields:
|
|
512
|
-
@as("transaction_fields") transactionFields:
|
|
513
|
-
params:
|
|
513
|
+
@as("block_fields") blockFields: JSON.t,
|
|
514
|
+
@as("transaction_fields") transactionFields: JSON.t,
|
|
515
|
+
params: JSON.t,
|
|
514
516
|
}
|
|
515
517
|
|
|
516
518
|
let schema = S.schema(s => {
|