envio 3.0.0-alpha.21 → 3.0.0-alpha.22

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 (219) hide show
  1. package/bin.mjs +2 -48
  2. package/evm.schema.json +67 -0
  3. package/fuel.schema.json +67 -0
  4. package/index.d.ts +822 -38
  5. package/index.js +5 -3
  6. package/package.json +10 -8
  7. package/rescript.json +5 -9
  8. package/src/Address.res +4 -5
  9. package/src/Address.res.mjs +9 -12
  10. package/src/Api.res +15 -0
  11. package/src/Api.res.mjs +20 -0
  12. package/src/Batch.res +32 -34
  13. package/src/Batch.res.mjs +172 -187
  14. package/src/Bin.res +89 -0
  15. package/src/Bin.res.mjs +97 -0
  16. package/src/ChainFetcher.res +33 -57
  17. package/src/ChainFetcher.res.mjs +197 -227
  18. package/src/ChainManager.res +6 -14
  19. package/src/ChainManager.res.mjs +74 -85
  20. package/src/ChainMap.res +14 -16
  21. package/src/ChainMap.res.mjs +38 -38
  22. package/src/Config.res +193 -135
  23. package/src/Config.res.mjs +566 -592
  24. package/src/Core.res +182 -0
  25. package/src/Core.res.mjs +207 -0
  26. package/src/Ecosystem.res +25 -4
  27. package/src/Ecosystem.res.mjs +12 -13
  28. package/src/Env.res +20 -13
  29. package/src/Env.res.mjs +124 -113
  30. package/src/EnvSafe.res +269 -0
  31. package/src/EnvSafe.res.mjs +296 -0
  32. package/src/EnvSafe.resi +18 -0
  33. package/src/Envio.res +37 -26
  34. package/src/Envio.res.mjs +59 -60
  35. package/src/ErrorHandling.res +2 -2
  36. package/src/ErrorHandling.res.mjs +15 -15
  37. package/src/EventConfigBuilder.res +219 -81
  38. package/src/EventConfigBuilder.res.mjs +259 -202
  39. package/src/EventProcessing.res +27 -38
  40. package/src/EventProcessing.res.mjs +165 -183
  41. package/src/EventUtils.res +11 -11
  42. package/src/EventUtils.res.mjs +21 -22
  43. package/src/EvmTypes.res +0 -1
  44. package/src/EvmTypes.res.mjs +5 -5
  45. package/src/FetchState.res +360 -256
  46. package/src/FetchState.res.mjs +958 -914
  47. package/src/GlobalState.res +365 -351
  48. package/src/GlobalState.res.mjs +958 -992
  49. package/src/GlobalStateManager.res +1 -2
  50. package/src/GlobalStateManager.res.mjs +36 -44
  51. package/src/HandlerLoader.res +107 -23
  52. package/src/HandlerLoader.res.mjs +128 -38
  53. package/src/HandlerRegister.res +127 -103
  54. package/src/HandlerRegister.res.mjs +164 -164
  55. package/src/HandlerRegister.resi +12 -4
  56. package/src/Hasura.res +35 -22
  57. package/src/Hasura.res.mjs +158 -167
  58. package/src/InMemoryStore.res +20 -27
  59. package/src/InMemoryStore.res.mjs +64 -80
  60. package/src/InMemoryTable.res +34 -39
  61. package/src/InMemoryTable.res.mjs +165 -170
  62. package/src/Internal.res +52 -33
  63. package/src/Internal.res.mjs +84 -81
  64. package/src/LazyLoader.res.mjs +55 -61
  65. package/src/LoadLayer.res +77 -78
  66. package/src/LoadLayer.res.mjs +160 -189
  67. package/src/LoadManager.res +16 -21
  68. package/src/LoadManager.res.mjs +79 -84
  69. package/src/LogSelection.res +236 -68
  70. package/src/LogSelection.res.mjs +211 -141
  71. package/src/Logging.res +13 -9
  72. package/src/Logging.res.mjs +130 -143
  73. package/src/Main.res +428 -51
  74. package/src/Main.res.mjs +528 -271
  75. package/src/Persistence.res +77 -84
  76. package/src/Persistence.res.mjs +131 -132
  77. package/src/PgStorage.res +291 -167
  78. package/src/PgStorage.res.mjs +797 -817
  79. package/src/Prometheus.res +50 -58
  80. package/src/Prometheus.res.mjs +345 -373
  81. package/src/ReorgDetection.res +22 -24
  82. package/src/ReorgDetection.res.mjs +100 -106
  83. package/src/SafeCheckpointTracking.res +7 -7
  84. package/src/SafeCheckpointTracking.res.mjs +40 -43
  85. package/src/SimulateItems.res +41 -49
  86. package/src/SimulateItems.res.mjs +257 -272
  87. package/src/Sink.res +2 -2
  88. package/src/Sink.res.mjs +22 -26
  89. package/src/TableIndices.res +1 -2
  90. package/src/TableIndices.res.mjs +42 -48
  91. package/src/TestIndexer.res +196 -189
  92. package/src/TestIndexer.res.mjs +536 -536
  93. package/src/TestIndexerProxyStorage.res +15 -16
  94. package/src/TestIndexerProxyStorage.res.mjs +98 -122
  95. package/src/TestIndexerWorker.res +4 -0
  96. package/src/TestIndexerWorker.res.mjs +7 -0
  97. package/src/Throttler.res +3 -3
  98. package/src/Throttler.res.mjs +23 -24
  99. package/src/Time.res +1 -1
  100. package/src/Time.res.mjs +18 -21
  101. package/src/TopicFilter.res +3 -3
  102. package/src/TopicFilter.res.mjs +29 -30
  103. package/src/UserContext.res +93 -54
  104. package/src/UserContext.res.mjs +197 -182
  105. package/src/Utils.res +141 -86
  106. package/src/Utils.res.mjs +334 -295
  107. package/src/bindings/BigDecimal.res +0 -2
  108. package/src/bindings/BigDecimal.res.mjs +19 -23
  109. package/src/bindings/ClickHouse.res +28 -27
  110. package/src/bindings/ClickHouse.res.mjs +243 -240
  111. package/src/bindings/DateFns.res +11 -11
  112. package/src/bindings/DateFns.res.mjs +7 -7
  113. package/src/bindings/EventSource.res.mjs +2 -2
  114. package/src/bindings/Express.res +2 -5
  115. package/src/bindings/Hrtime.res +2 -2
  116. package/src/bindings/Hrtime.res.mjs +30 -32
  117. package/src/bindings/Lodash.res.mjs +1 -1
  118. package/src/bindings/NodeJs.res +14 -9
  119. package/src/bindings/NodeJs.res.mjs +20 -20
  120. package/src/bindings/Pino.res +8 -10
  121. package/src/bindings/Pino.res.mjs +40 -43
  122. package/src/bindings/Postgres.res +2 -5
  123. package/src/bindings/Postgres.res.mjs +9 -9
  124. package/src/bindings/PromClient.res +17 -2
  125. package/src/bindings/PromClient.res.mjs +30 -7
  126. package/src/bindings/SDSL.res.mjs +2 -2
  127. package/src/bindings/Viem.res +4 -4
  128. package/src/bindings/Viem.res.mjs +20 -22
  129. package/src/bindings/Vitest.res +1 -1
  130. package/src/bindings/Vitest.res.mjs +2 -2
  131. package/src/bindings/WebSocket.res +1 -1
  132. package/src/db/EntityHistory.res +9 -3
  133. package/src/db/EntityHistory.res.mjs +84 -59
  134. package/src/db/InternalTable.res +62 -60
  135. package/src/db/InternalTable.res.mjs +271 -203
  136. package/src/db/Schema.res +1 -2
  137. package/src/db/Schema.res.mjs +28 -32
  138. package/src/db/Table.res +28 -27
  139. package/src/db/Table.res.mjs +276 -292
  140. package/src/sources/EventRouter.res +21 -16
  141. package/src/sources/EventRouter.res.mjs +55 -57
  142. package/src/sources/Evm.res +17 -1
  143. package/src/sources/Evm.res.mjs +16 -8
  144. package/src/sources/EvmChain.res +15 -17
  145. package/src/sources/EvmChain.res.mjs +40 -42
  146. package/src/sources/Fuel.res +14 -1
  147. package/src/sources/Fuel.res.mjs +16 -8
  148. package/src/sources/FuelSDK.res +1 -1
  149. package/src/sources/FuelSDK.res.mjs +6 -8
  150. package/src/sources/HyperFuel.res +8 -10
  151. package/src/sources/HyperFuel.res.mjs +113 -123
  152. package/src/sources/HyperFuelClient.res.mjs +6 -7
  153. package/src/sources/HyperFuelSource.res +19 -20
  154. package/src/sources/HyperFuelSource.res.mjs +339 -356
  155. package/src/sources/HyperSync.res +11 -13
  156. package/src/sources/HyperSync.res.mjs +206 -220
  157. package/src/sources/HyperSyncClient.res +5 -7
  158. package/src/sources/HyperSyncClient.res.mjs +70 -75
  159. package/src/sources/HyperSyncHeightStream.res +8 -9
  160. package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
  161. package/src/sources/HyperSyncJsonApi.res +18 -15
  162. package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
  163. package/src/sources/HyperSyncSource.res +17 -21
  164. package/src/sources/HyperSyncSource.res.mjs +268 -290
  165. package/src/sources/Rpc.res +5 -5
  166. package/src/sources/Rpc.res.mjs +168 -192
  167. package/src/sources/RpcSource.res +166 -167
  168. package/src/sources/RpcSource.res.mjs +972 -1046
  169. package/src/sources/RpcWebSocketHeightStream.res +10 -11
  170. package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
  171. package/src/sources/SimulateSource.res +1 -1
  172. package/src/sources/SimulateSource.res.mjs +35 -38
  173. package/src/sources/Source.res +1 -1
  174. package/src/sources/Source.res.mjs +3 -3
  175. package/src/sources/SourceManager.res +39 -20
  176. package/src/sources/SourceManager.res.mjs +340 -371
  177. package/src/sources/SourceManager.resi +2 -1
  178. package/src/sources/Svm.res +12 -5
  179. package/src/sources/Svm.res.mjs +44 -41
  180. package/src/tui/Tui.res +23 -12
  181. package/src/tui/Tui.res.mjs +292 -290
  182. package/src/tui/bindings/Ink.res +2 -4
  183. package/src/tui/bindings/Ink.res.mjs +35 -41
  184. package/src/tui/components/BufferedProgressBar.res +7 -7
  185. package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
  186. package/src/tui/components/CustomHooks.res +1 -2
  187. package/src/tui/components/CustomHooks.res.mjs +102 -122
  188. package/src/tui/components/Messages.res +1 -2
  189. package/src/tui/components/Messages.res.mjs +38 -42
  190. package/src/tui/components/SyncETA.res +10 -11
  191. package/src/tui/components/SyncETA.res.mjs +178 -196
  192. package/src/tui/components/TuiData.res +1 -1
  193. package/src/tui/components/TuiData.res.mjs +7 -6
  194. package/src/vendored/Rest.res +52 -66
  195. package/src/vendored/Rest.res.mjs +324 -364
  196. package/svm.schema.json +67 -0
  197. package/src/Address.gen.ts +0 -8
  198. package/src/Config.gen.ts +0 -19
  199. package/src/Envio.gen.ts +0 -55
  200. package/src/EvmTypes.gen.ts +0 -6
  201. package/src/InMemoryStore.gen.ts +0 -6
  202. package/src/Internal.gen.ts +0 -64
  203. package/src/PgStorage.gen.ts +0 -10
  204. package/src/PgStorage.res.d.mts +0 -5
  205. package/src/Types.ts +0 -56
  206. package/src/bindings/BigDecimal.gen.ts +0 -14
  207. package/src/bindings/BigDecimal.res.d.mts +0 -5
  208. package/src/bindings/BigInt.gen.ts +0 -10
  209. package/src/bindings/BigInt.res +0 -70
  210. package/src/bindings/BigInt.res.d.mts +0 -5
  211. package/src/bindings/BigInt.res.mjs +0 -154
  212. package/src/bindings/Ethers.res.d.mts +0 -5
  213. package/src/bindings/Pino.gen.ts +0 -17
  214. package/src/bindings/Postgres.gen.ts +0 -8
  215. package/src/bindings/Postgres.res.d.mts +0 -5
  216. package/src/bindings/Promise.res +0 -67
  217. package/src/bindings/Promise.res.mjs +0 -26
  218. package/src/db/InternalTable.gen.ts +0 -36
  219. package/src/sources/HyperSyncClient.gen.ts +0 -19
package/src/LoadLayer.res CHANGED
@@ -1,5 +1,3 @@
1
- open Belt
2
-
3
1
  let loadById = (
4
2
  ~loadManager,
5
3
  ~persistence: Persistence.t,
@@ -13,12 +11,13 @@ let loadById = (
13
11
  let inMemTable = inMemoryStore->InMemoryStore.getInMemTable(~entityConfig)
14
12
 
15
13
  let load = async (idsToLoad, ~onError as _) => {
16
- let timerRef = Prometheus.StorageLoad.startOperation(~operation=key)
14
+ let storage = persistence->Persistence.getInitializedStorageOrThrow
15
+ let timerRef = Prometheus.StorageLoad.startOperation(~storage=storage.name, ~operation=key)
17
16
 
18
17
  // Since LoadManager.call prevents registerign entities already existing in the inMemoryStore,
19
18
  // we can be sure that we load only the new ones.
20
19
  let dbEntities = try {
21
- await (persistence->Persistence.getInitializedStorageOrThrow).loadByIdsOrThrow(
20
+ await storage.loadByIdsOrThrow(
22
21
  ~table=entityConfig.table,
23
22
  ~rowsSchema=entityConfig.rowsSchema,
24
23
  ~ids=idsToLoad,
@@ -28,15 +27,14 @@ let loadById = (
28
27
  reason->ErrorHandling.mkLogAndRaise(~logger=item->Logging.getItemLogger, ~msg=message)
29
28
  }
30
29
 
31
- let entitiesMap = Js.Dict.empty()
30
+ let entitiesMap = Dict.make()
31
+
32
+ //Set the entity in the in memory store
32
33
  for idx in 0 to dbEntities->Array.length - 1 {
33
- let entity = dbEntities->Js.Array2.unsafe_get(idx)
34
- entitiesMap->Js.Dict.set(entity.id, entity)
34
+ let entity = dbEntities->Array.getUnsafe(idx)
35
+ entitiesMap->Dict.set(entity.id, entity)
35
36
  }
36
- idsToLoad->Js.Array2.forEach(entityId => {
37
- // Set the entity in the in memory store
38
- // without overwriting existing values
39
- // which might be newer than what we got from db
37
+ idsToLoad->Array.forEach(entityId => {
40
38
  inMemTable->InMemoryTable.Entity.initValue(
41
39
  ~allowOverWriteEntity=false,
42
40
  ~key=entityId,
@@ -45,6 +43,7 @@ let loadById = (
45
43
  })
46
44
 
47
45
  timerRef->Prometheus.StorageLoad.endOperation(
46
+ ~storage=storage.name,
48
47
  ~operation=key,
49
48
  ~whereSize=idsToLoad->Array.length,
50
49
  ~size=dbEntities->Array.length,
@@ -90,12 +89,12 @@ let callEffect = (
90
89
 
91
90
  effect.handler(arg)
92
91
  ->Promise.thenResolve(output => {
93
- inMemTable.dict->Js.Dict.set(arg.cacheKey, output)
92
+ inMemTable.dict->Dict.set(arg.cacheKey, output)
94
93
  if arg.context.cache {
95
94
  inMemTable.idsToStore->Array.push(arg.cacheKey)->ignore
96
95
  }
97
96
  })
98
- ->Promise.catchResolve(exn => {
97
+ ->Utils.Promise.catchResolve(exn => {
99
98
  onError(~inputKey=arg.cacheKey, ~exn)
100
99
  })
101
100
  ->Promise.finally(() => {
@@ -143,13 +142,13 @@ let rec executeWithRateLimit = (
143
142
  ~inMemTable,
144
143
  ~timerRef,
145
144
  ~onError,
146
- )->Promise.ignoreValue,
145
+ )->Utils.Promise.ignoreValue,
147
146
  )
148
147
  ->ignore
149
148
  }
150
149
 
151
150
  | Some(state) =>
152
- let now = Js.Date.now()
151
+ let now = Date.now()
153
152
 
154
153
  // Check if we need to reset the window
155
154
  if now >= state.windowStartTime +. state.durationMs->Int.toFloat {
@@ -159,9 +158,9 @@ let rec executeWithRateLimit = (
159
158
  }
160
159
 
161
160
  // Split into immediate and queued
162
- let immediateCount = Js.Math.min_int(state.availableCalls, effectArgs->Array.length)
163
- let immediateArgs = effectArgs->Array.slice(~offset=0, ~len=immediateCount)
164
- let queuedArgs = effectArgs->Array.sliceToEnd(immediateCount)
161
+ let immediateCount = Math.Int.min(state.availableCalls, effectArgs->Array.length)
162
+ let immediateArgs = effectArgs->Belt.Array.slice(~offset=0, ~len=immediateCount)
163
+ let queuedArgs = effectArgs->Belt.Array.sliceToEnd(immediateCount)
165
164
 
166
165
  // Update available calls
167
166
  state.availableCalls = state.availableCalls - immediateCount
@@ -176,7 +175,7 @@ let rec executeWithRateLimit = (
176
175
  ~inMemTable,
177
176
  ~timerRef,
178
177
  ~onError,
179
- )->Promise.ignoreValue,
178
+ )->Utils.Promise.ignoreValue,
180
179
  )
181
180
  ->ignore
182
181
  }
@@ -225,7 +224,7 @@ let rec executeWithRateLimit = (
225
224
  ~isFromQueue=true,
226
225
  )
227
226
  })
228
- ->Promise.ignoreValue,
227
+ ->Utils.Promise.ignoreValue,
229
228
  )
230
229
  ->ignore
231
230
  }
@@ -249,7 +248,7 @@ let loadEffect = (
249
248
  let inMemTable = inMemoryStore->InMemoryStore.getEffectInMemTable(~effect)
250
249
 
251
250
  let load = async (args, ~onError) => {
252
- let idsToLoad = args->Js.Array2.map((arg: Internal.effectArgs) => arg.cacheKey)
251
+ let idsToLoad = args->Array.map((arg: Internal.effectArgs) => arg.cacheKey)
253
252
  let idsFromCache = Utils.Set.make()
254
253
 
255
254
  if (
@@ -258,11 +257,12 @@ let loadEffect = (
258
257
  | _ => false
259
258
  }
260
259
  ) {
261
- let timerRef = Prometheus.StorageLoad.startOperation(~operation=key)
260
+ let storage = persistence->Persistence.getInitializedStorageOrThrow
261
+ let timerRef = Prometheus.StorageLoad.startOperation(~storage=storage.name, ~operation=key)
262
262
  let {table, outputSchema} = effect.storageMeta
263
263
 
264
264
  let dbEntities = try {
265
- await (persistence->Persistence.getInitializedStorageOrThrow).loadByIdsOrThrow(
265
+ await storage.loadByIdsOrThrow(
266
266
  ~table,
267
267
  ~rowsSchema=Internal.effectCacheItemRowsSchema,
268
268
  ~ids=idsToLoad,
@@ -279,11 +279,11 @@ let loadEffect = (
279
279
  []
280
280
  }
281
281
 
282
- dbEntities->Js.Array2.forEach(dbEntity => {
282
+ dbEntities->Array.forEach(dbEntity => {
283
283
  try {
284
284
  let output = dbEntity.output->S.parseOrThrow(outputSchema)
285
285
  idsFromCache->Utils.Set.add(dbEntity.id)->ignore
286
- inMemTable.dict->Js.Dict.set(dbEntity.id, output)
286
+ inMemTable.dict->Dict.set(dbEntity.id, output)
287
287
  } catch {
288
288
  | S.Raised(error) =>
289
289
  inMemTable.invalidationsCount = inMemTable.invalidationsCount + 1
@@ -300,6 +300,7 @@ let loadEffect = (
300
300
  })
301
301
 
302
302
  timerRef->Prometheus.StorageLoad.endOperation(
303
+ ~storage=storage.name,
303
304
  ~operation=key,
304
305
  ~whereSize=idsToLoad->Array.length,
305
306
  ~size=dbEntities->Array.length,
@@ -323,7 +324,7 @@ let loadEffect = (
323
324
  ~inMemTable,
324
325
  ~onError,
325
326
  ~isFromQueue=false,
326
- )->Promise.ignoreValue
327
+ )->Utils.Promise.ignoreValue
327
328
  }
328
329
  }
329
330
  }
@@ -333,7 +334,7 @@ let loadEffect = (
333
334
  ~load,
334
335
  ~shouldGroup,
335
336
  ~hasher=args => args.cacheKey,
336
- ~getUnsafeInMemory=hash => inMemTable.dict->Js.Dict.unsafeGet(hash),
337
+ ~getUnsafeInMemory=hash => inMemTable.dict->Dict.getUnsafe(hash),
337
338
  ~hasInMemory=hash => inMemTable.dict->Utils.Dict.has(hash),
338
339
  ~input=effectArgs,
339
340
  )
@@ -360,11 +361,12 @@ let loadByField = (
360
361
  let inMemTable = inMemoryStore->InMemoryStore.getInMemTable(~entityConfig)
361
362
 
362
363
  let load = async (fieldValues: array<'fieldValue>, ~onError as _) => {
363
- let timerRef = Prometheus.StorageLoad.startOperation(~operation=key)
364
+ let storage = persistence->Persistence.getInitializedStorageOrThrow
365
+ let timerRef = Prometheus.StorageLoad.startOperation(~storage=storage.name, ~operation=key)
364
366
 
365
367
  let size = ref(0)
366
368
 
367
- let indiciesToLoad = fieldValues->Js.Array2.map((fieldValue): TableIndices.Index.t => {
369
+ let indiciesToLoad = fieldValues->Array.map((fieldValue): TableIndices.Index.t => {
368
370
  Single({
369
371
  fieldName,
370
372
  fieldValue: TableIndices.FieldValue.castFrom(fieldValue),
@@ -372,59 +374,56 @@ let loadByField = (
372
374
  })
373
375
  })
374
376
 
375
- let _ =
376
- await indiciesToLoad
377
- ->Js.Array2.map(async index => {
378
- inMemTable->InMemoryTable.Entity.addEmptyIndex(~index)
379
- try {
380
- let entities = await (
381
- persistence->Persistence.getInitializedStorageOrThrow
382
- ).loadByFieldOrThrow(
383
- ~operator=switch index {
384
- | Single({operator: Gt}) => #">"
385
- | Single({operator: Eq}) => #"="
386
- | Single({operator: Lt}) => #"<"
387
- },
388
- ~table=entityConfig.table,
389
- ~rowsSchema=entityConfig.rowsSchema,
390
- ~fieldName=index->TableIndices.Index.getFieldName,
391
- ~fieldValue=switch index {
392
- | Single({fieldValue}) => fieldValue
393
- },
394
- ~fieldSchema=fieldValueSchema->(
395
- Utils.magic: S.t<'fieldValue> => S.t<TableIndices.FieldValue.t>
396
- ),
397
- )
398
-
399
- entities->Array.forEach(entity => {
400
- //Set the entity in the in memory store
401
- inMemTable->InMemoryTable.Entity.initValue(
402
- ~allowOverWriteEntity=false,
403
- ~key=entity.id,
404
- ~entity=Some(entity),
405
- )
406
- })
377
+ let _ = await indiciesToLoad
378
+ ->Array.map(async index => {
379
+ inMemTable->InMemoryTable.Entity.addEmptyIndex(~index)
380
+ try {
381
+ let entities = await storage.loadByFieldOrThrow(
382
+ ~operator=switch index {
383
+ | Single({operator: Gt}) => #">"
384
+ | Single({operator: Eq}) => #"="
385
+ | Single({operator: Lt}) => #"<"
386
+ },
387
+ ~table=entityConfig.table,
388
+ ~rowsSchema=entityConfig.rowsSchema,
389
+ ~fieldName=index->TableIndices.Index.getFieldName,
390
+ ~fieldValue=switch index {
391
+ | Single({fieldValue}) => fieldValue
392
+ },
393
+ ~fieldSchema=fieldValueSchema->(
394
+ Utils.magic: S.t<'fieldValue> => S.t<TableIndices.FieldValue.t>
395
+ ),
396
+ )
407
397
 
408
- size := size.contents + entities->Array.length
409
- } catch {
410
- | Persistence.StorageError({message, reason}) =>
411
- reason->ErrorHandling.mkLogAndRaise(
412
- ~logger=Logging.createChildFrom(
413
- ~logger=item->Logging.getItemLogger,
414
- ~params={
415
- "operator": operatorCallName,
416
- "tableName": entityConfig.table.tableName,
417
- "fieldName": fieldName,
418
- "fieldValue": fieldValue,
419
- },
420
- ),
421
- ~msg=message,
398
+ entities->Array.forEach(entity => {
399
+ inMemTable->InMemoryTable.Entity.initValue(
400
+ ~allowOverWriteEntity=false,
401
+ ~key=entity.id,
402
+ ~entity=Some(entity),
422
403
  )
423
- }
424
- })
425
- ->Promise.all
404
+ })
405
+
406
+ size := size.contents + entities->Array.length
407
+ } catch {
408
+ | Persistence.StorageError({message, reason}) =>
409
+ reason->ErrorHandling.mkLogAndRaise(
410
+ ~logger=Logging.createChildFrom(
411
+ ~logger=item->Logging.getItemLogger,
412
+ ~params={
413
+ "operator": operatorCallName,
414
+ "tableName": entityConfig.table.tableName,
415
+ "fieldName": fieldName,
416
+ "fieldValue": fieldValue,
417
+ },
418
+ ),
419
+ ~msg=message,
420
+ )
421
+ }
422
+ })
423
+ ->Promise.all
426
424
 
427
425
  timerRef->Prometheus.StorageLoad.endOperation(
426
+ ~storage=storage.name,
428
427
  ~operation=key,
429
428
  ~whereSize=fieldValues->Array.length,
430
429
  ~size=size.contents,