envio 3.1.2 → 3.2.0
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/evm.schema.json +83 -11
- package/fuel.schema.json +83 -11
- package/index.d.ts +184 -3
- package/package.json +6 -6
- package/src/Batch.res +2 -2
- package/src/ChainFetcher.res +27 -3
- package/src/ChainFetcher.res.mjs +17 -3
- package/src/ChainManager.res +163 -0
- package/src/ChainManager.res.mjs +136 -0
- package/src/Config.res +213 -30
- package/src/Config.res.mjs +102 -41
- package/src/Core.res +16 -10
- package/src/Ecosystem.res +0 -3
- package/src/Env.res +2 -2
- package/src/Env.res.mjs +2 -2
- package/src/Envio.res +101 -2
- package/src/Envio.res.mjs +2 -3
- package/src/EventConfigBuilder.res +52 -0
- package/src/EventConfigBuilder.res.mjs +32 -0
- package/src/EventUtils.res +2 -2
- package/src/FetchState.res +23 -14
- package/src/FetchState.res.mjs +21 -15
- package/src/GlobalState.res +219 -363
- package/src/GlobalState.res.mjs +314 -491
- package/src/GlobalStateManager.res +49 -59
- package/src/GlobalStateManager.res.mjs +5 -4
- package/src/GlobalStateManager.resi +1 -1
- package/src/HandlerLoader.res +12 -1
- package/src/HandlerLoader.res.mjs +6 -1
- package/src/HandlerRegister.res +9 -9
- package/src/HandlerRegister.res.mjs +9 -9
- package/src/Hasura.res +102 -32
- package/src/Hasura.res.mjs +88 -34
- package/src/InMemoryStore.res +10 -1
- package/src/InMemoryStore.res.mjs +4 -1
- package/src/InMemoryTable.res +83 -136
- package/src/InMemoryTable.res.mjs +57 -86
- package/src/Internal.res +54 -5
- package/src/Internal.res.mjs +2 -8
- package/src/LazyLoader.res +2 -2
- package/src/LazyLoader.res.mjs +3 -3
- package/src/LoadLayer.res +47 -60
- package/src/LoadLayer.res.mjs +28 -50
- package/src/LoadLayer.resi +2 -5
- package/src/LogSelection.res +4 -4
- package/src/LogSelection.res.mjs +5 -7
- package/src/Logging.res +1 -1
- package/src/Main.res +61 -2
- package/src/Main.res.mjs +37 -1
- package/src/Persistence.res +3 -16
- package/src/PgStorage.res +125 -114
- package/src/PgStorage.res.mjs +112 -95
- package/src/Ports.res +5 -0
- package/src/Ports.res.mjs +9 -0
- package/src/Prometheus.res +3 -3
- package/src/Prometheus.res.mjs +4 -4
- package/src/ReorgDetection.res +4 -4
- package/src/ReorgDetection.res.mjs +4 -5
- package/src/SafeCheckpointTracking.res +16 -16
- package/src/SafeCheckpointTracking.res.mjs +2 -2
- package/src/SimulateItems.res +10 -14
- package/src/SimulateItems.res.mjs +5 -2
- package/src/Sink.res +1 -1
- package/src/Sink.res.mjs +1 -2
- package/src/SvmTypes.res +9 -0
- package/src/SvmTypes.res.mjs +14 -0
- package/src/TestIndexer.res +17 -57
- package/src/TestIndexer.res.mjs +14 -48
- package/src/TestIndexerProxyStorage.res +23 -23
- package/src/TestIndexerProxyStorage.res.mjs +12 -15
- package/src/Throttler.res +2 -2
- package/src/Time.res +2 -2
- package/src/Time.res.mjs +2 -2
- package/src/UserContext.res +19 -118
- package/src/UserContext.res.mjs +10 -66
- package/src/Utils.res +15 -15
- package/src/Utils.res.mjs +7 -8
- package/src/adapters/MarkBatchProcessedAdapter.res +5 -0
- package/src/adapters/MarkBatchProcessedAdapter.res.mjs +14 -0
- package/src/bindings/BigDecimal.res +1 -1
- package/src/bindings/BigDecimal.res.mjs +2 -2
- package/src/bindings/ClickHouse.res +8 -6
- package/src/bindings/ClickHouse.res.mjs +5 -5
- package/src/bindings/Hrtime.res +1 -1
- package/src/bindings/Pino.res +2 -2
- package/src/bindings/Pino.res.mjs +3 -4
- package/src/db/EntityFilter.res +410 -0
- package/src/db/EntityFilter.res.mjs +424 -0
- package/src/db/EntityHistory.res +1 -1
- package/src/db/EntityHistory.res.mjs +1 -1
- package/src/db/InternalTable.res +10 -10
- package/src/db/InternalTable.res.mjs +41 -45
- package/src/db/Schema.res +2 -2
- package/src/db/Schema.res.mjs +3 -3
- package/src/db/Table.res +106 -22
- package/src/db/Table.res.mjs +84 -35
- package/src/sources/EventRouter.res +67 -2
- package/src/sources/EventRouter.res.mjs +45 -3
- package/src/sources/Evm.res +0 -7
- package/src/sources/Evm.res.mjs +0 -15
- package/src/sources/EvmChain.res +1 -1
- package/src/sources/EvmChain.res.mjs +1 -2
- package/src/sources/EvmRpcClient.res +42 -0
- package/src/sources/EvmRpcClient.res.mjs +64 -0
- package/src/sources/Fuel.res +0 -7
- package/src/sources/Fuel.res.mjs +0 -15
- package/src/sources/HyperFuelSource.res +5 -4
- package/src/sources/HyperFuelSource.res.mjs +2 -2
- package/src/sources/HyperSyncClient.res +9 -5
- package/src/sources/HyperSyncClient.res.mjs +2 -2
- package/src/sources/HyperSyncHeightStream.res +2 -2
- package/src/sources/HyperSyncHeightStream.res.mjs +2 -2
- package/src/sources/HyperSyncSource.res +10 -9
- package/src/sources/HyperSyncSource.res.mjs +4 -4
- package/src/sources/Rpc.res +1 -5
- package/src/sources/Rpc.res.mjs +1 -9
- package/src/sources/RpcSource.res +57 -21
- package/src/sources/RpcSource.res.mjs +47 -20
- package/src/sources/RpcWebSocketHeightStream.res +1 -1
- package/src/sources/SourceManager.res +3 -2
- package/src/sources/SourceManager.res.mjs +1 -1
- package/src/sources/Svm.res +3 -10
- package/src/sources/Svm.res.mjs +4 -18
- package/src/sources/SvmHyperSyncClient.res +265 -0
- package/src/sources/SvmHyperSyncClient.res.mjs +28 -0
- package/src/sources/SvmHyperSyncSource.res +638 -0
- package/src/sources/SvmHyperSyncSource.res.mjs +557 -0
- package/src/tui/Tui.res +9 -2
- package/src/tui/Tui.res.mjs +18 -3
- package/src/tui/components/BufferedProgressBar.res +2 -2
- package/src/tui/components/TuiData.res +3 -0
- package/svm.schema.json +523 -14
- package/src/TableIndices.res +0 -115
- package/src/TableIndices.res.mjs +0 -144
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
|
|
3
|
+
import * as Table from "./Table.res.mjs";
|
|
4
|
+
import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.js";
|
|
5
|
+
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
6
|
+
import * as Primitive_object from "@rescript/runtime/lib/es6/Primitive_object.js";
|
|
7
|
+
|
|
8
|
+
function toString(tNonOptional) {
|
|
9
|
+
if (Array.isArray(tNonOptional)) {
|
|
10
|
+
return `[` + tNonOptional.map(toString).join(",") + `]`;
|
|
11
|
+
}
|
|
12
|
+
switch (typeof tNonOptional) {
|
|
13
|
+
case "string" :
|
|
14
|
+
return tNonOptional;
|
|
15
|
+
case "bigint" :
|
|
16
|
+
case "number" :
|
|
17
|
+
return tNonOptional.toString();
|
|
18
|
+
case "object" :
|
|
19
|
+
return tNonOptional.toString();
|
|
20
|
+
case "boolean" :
|
|
21
|
+
if (tNonOptional) {
|
|
22
|
+
return "true";
|
|
23
|
+
} else {
|
|
24
|
+
return "false";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function toString$1(value) {
|
|
30
|
+
if (value !== undefined) {
|
|
31
|
+
return toString(value);
|
|
32
|
+
} else {
|
|
33
|
+
return "undefined";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function eq(a, b) {
|
|
38
|
+
if (typeof a === "object" && !Array.isArray(a) && typeof b === "object" && !Array.isArray(b)) {
|
|
39
|
+
return a.isEqualTo(b);
|
|
40
|
+
} else {
|
|
41
|
+
return Primitive_object.equal(a, b);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function gt(a, b) {
|
|
46
|
+
if (typeof a === "object" && !Array.isArray(a) && typeof b === "object" && !Array.isArray(b)) {
|
|
47
|
+
return a.isGreaterThan(b);
|
|
48
|
+
} else {
|
|
49
|
+
return Primitive_object.greaterthan(a, b);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function lt(a, b) {
|
|
54
|
+
if (typeof a === "object" && !Array.isArray(a) && typeof b === "object" && !Array.isArray(b)) {
|
|
55
|
+
return a.isLessThan(b);
|
|
56
|
+
} else {
|
|
57
|
+
return Primitive_object.lessthan(a, b);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
let FieldValue = {
|
|
62
|
+
toString: toString$1,
|
|
63
|
+
eq: eq,
|
|
64
|
+
gt: gt,
|
|
65
|
+
lt: lt
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
function toString$2(filter) {
|
|
69
|
+
switch (filter.operator) {
|
|
70
|
+
case "=" :
|
|
71
|
+
return filter.fieldName + `:Eq:` + toString$1(filter.fieldValue);
|
|
72
|
+
case ">" :
|
|
73
|
+
return filter.fieldName + `:Gt:` + toString$1(filter.fieldValue);
|
|
74
|
+
case "<" :
|
|
75
|
+
return filter.fieldName + `:Lt:` + toString$1(filter.fieldValue);
|
|
76
|
+
case "in" :
|
|
77
|
+
return filter.fieldName + `:In:[` + filter.fieldValue.map(toString$1).join(",") + `]`;
|
|
78
|
+
case "and" :
|
|
79
|
+
return `And(` + filter.filters.map(toString$2).join(",") + `)`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function valuesCount(filter) {
|
|
84
|
+
switch (filter.operator) {
|
|
85
|
+
case "in" :
|
|
86
|
+
return filter.fieldValue.length;
|
|
87
|
+
case "and" :
|
|
88
|
+
return Stdlib_Array.reduce(filter.filters, 0, (acc, filter) => acc + valuesCount(filter) | 0);
|
|
89
|
+
default:
|
|
90
|
+
return 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
let codegenHelpMessage = `Rerun 'pnpm dev' to update generated code after schema.graphql changes.`;
|
|
95
|
+
|
|
96
|
+
function getUndefinedOrNullName(value) {
|
|
97
|
+
if (value === undefined) {
|
|
98
|
+
return "undefined";
|
|
99
|
+
} else if (value === null) {
|
|
100
|
+
return "null";
|
|
101
|
+
} else {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function throwUnsupportedGetWhereValue(valueName, entityName, filterDisplay, hintOpt) {
|
|
107
|
+
let hint = hintOpt !== undefined ? hintOpt : "";
|
|
108
|
+
return Stdlib_JsError.throwWithMessage(`Invalid ` + valueName + ` value passed to context.` + entityName + `.getWhere(` + filterDisplay + `). Filtering by null or undefined values is not supported in getWhere.` + hint);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function parseGetWhereOrThrow(filter, entityName, table) {
|
|
112
|
+
let filterKeys = Object.keys(filter);
|
|
113
|
+
if (filterKeys.length === 0) {
|
|
114
|
+
Stdlib_JsError.throwWithMessage(`Empty filter passed to context.` + entityName + `.getWhere(). Please provide a filter like { fieldName: { _eq: value } }.`);
|
|
115
|
+
}
|
|
116
|
+
let filterGroups = filterKeys.flatMap(apiFieldName => {
|
|
117
|
+
let operatorObj = filter[apiFieldName];
|
|
118
|
+
let valueName = getUndefinedOrNullName(operatorObj);
|
|
119
|
+
if (valueName !== undefined) {
|
|
120
|
+
throwUnsupportedGetWhereValue(valueName, entityName, `{ ` + apiFieldName + `: ` + valueName + ` }`, ` Please provide an operator like { _eq: value }.`);
|
|
121
|
+
}
|
|
122
|
+
if (typeof operatorObj !== "object" || Array.isArray(operatorObj)) {
|
|
123
|
+
Stdlib_JsError.throwWithMessage(`Invalid value passed to context.` + entityName + `.getWhere({ ` + apiFieldName + `: ... }). Please provide an operator like { _eq: value }.`);
|
|
124
|
+
}
|
|
125
|
+
let operatorKeys = Object.keys(operatorObj);
|
|
126
|
+
if (operatorKeys.length === 0) {
|
|
127
|
+
Stdlib_JsError.throwWithMessage(`Empty operator passed to context.` + entityName + `.getWhere({ ` + apiFieldName + `: {} }). Please provide an operator like { _eq: value }, { _gt: value }, { _lt: value }, { _gte: value }, { _lte: value }, or { _in: [values] }.`);
|
|
128
|
+
}
|
|
129
|
+
let throwInvalidOperator = operatorKey => Stdlib_JsError.throwWithMessage(`Invalid operator "` + operatorKey + `" in context.` + entityName + `.getWhere({ ` + apiFieldName + `: { ` + operatorKey + `: ... } }). Valid operators are _eq, _gt, _lt, _gte, _lte, _in.`);
|
|
130
|
+
operatorKeys.forEach(operatorKey => {
|
|
131
|
+
switch (operatorKey) {
|
|
132
|
+
case "_eq" :
|
|
133
|
+
case "_gt" :
|
|
134
|
+
case "_gte" :
|
|
135
|
+
case "_in" :
|
|
136
|
+
case "_lt" :
|
|
137
|
+
case "_lte" :
|
|
138
|
+
return;
|
|
139
|
+
default:
|
|
140
|
+
return throwInvalidOperator(operatorKey);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
let match = Table.getFieldByApiName(table, apiFieldName);
|
|
144
|
+
if (match !== undefined) {
|
|
145
|
+
if (match.TAG === "Field") {
|
|
146
|
+
let match$1 = match._0;
|
|
147
|
+
if (match$1.isPrimaryKey || match$1.isIndex || match$1.linkedEntity !== undefined) {
|
|
148
|
+
|
|
149
|
+
} else {
|
|
150
|
+
Stdlib_JsError.throwWithMessage(`The field "` + apiFieldName + `" on entity "` + entityName + `" does not have an index. To use it in getWhere(), add the @index directive in your schema.graphql:\n\n ` + apiFieldName + `: ... @index\n\nThen run 'pnpm envio codegen' to regenerate.`);
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
Stdlib_JsError.throwWithMessage(`The field "` + apiFieldName + `" on entity "` + entityName + `" is a derived field and cannot be used in getWhere(). Use the source entity's indexed field instead.`);
|
|
154
|
+
}
|
|
155
|
+
} else {
|
|
156
|
+
Stdlib_JsError.throwWithMessage(`Invalid field "` + apiFieldName + `" in context.` + entityName + `.getWhere(). The field doesn't exist. ` + codegenHelpMessage);
|
|
157
|
+
}
|
|
158
|
+
return operatorKeys.map(operatorKey => {
|
|
159
|
+
let fieldValue = operatorObj[operatorKey];
|
|
160
|
+
let valueName = getUndefinedOrNullName(fieldValue);
|
|
161
|
+
if (valueName !== undefined) {
|
|
162
|
+
throwUnsupportedGetWhereValue(valueName, entityName, `{ ` + apiFieldName + `: { ` + operatorKey + `: ` + valueName + ` } }`, undefined);
|
|
163
|
+
}
|
|
164
|
+
switch (operatorKey) {
|
|
165
|
+
case "_eq" :
|
|
166
|
+
return [{
|
|
167
|
+
operator: "=",
|
|
168
|
+
fieldName: apiFieldName,
|
|
169
|
+
fieldValue: fieldValue
|
|
170
|
+
}];
|
|
171
|
+
case "_gt" :
|
|
172
|
+
return [{
|
|
173
|
+
operator: ">",
|
|
174
|
+
fieldName: apiFieldName,
|
|
175
|
+
fieldValue: fieldValue
|
|
176
|
+
}];
|
|
177
|
+
case "_gte" :
|
|
178
|
+
return [
|
|
179
|
+
{
|
|
180
|
+
operator: "=",
|
|
181
|
+
fieldName: apiFieldName,
|
|
182
|
+
fieldValue: fieldValue
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
operator: ">",
|
|
186
|
+
fieldName: apiFieldName,
|
|
187
|
+
fieldValue: fieldValue
|
|
188
|
+
}
|
|
189
|
+
];
|
|
190
|
+
case "_in" :
|
|
191
|
+
if (!Array.isArray(fieldValue)) {
|
|
192
|
+
Stdlib_JsError.throwWithMessage(`Invalid value passed to context.` + entityName + `.getWhere({ ` + apiFieldName + `: { _in: ... } }). The _in operator expects an array of values.`);
|
|
193
|
+
}
|
|
194
|
+
return fieldValue.map((fieldValue, index) => {
|
|
195
|
+
let valueName = getUndefinedOrNullName(fieldValue);
|
|
196
|
+
if (valueName !== undefined) {
|
|
197
|
+
throwUnsupportedGetWhereValue(valueName, entityName, `{ ` + apiFieldName + `: { _in: [...] } }`, ` The ` + valueName + ` value is at index ` + index.toString() + ` of the _in array.`);
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
operator: "=",
|
|
201
|
+
fieldName: apiFieldName,
|
|
202
|
+
fieldValue: fieldValue
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
case "_lt" :
|
|
206
|
+
return [{
|
|
207
|
+
operator: "<",
|
|
208
|
+
fieldName: apiFieldName,
|
|
209
|
+
fieldValue: fieldValue
|
|
210
|
+
}];
|
|
211
|
+
case "_lte" :
|
|
212
|
+
return [
|
|
213
|
+
{
|
|
214
|
+
operator: "=",
|
|
215
|
+
fieldName: apiFieldName,
|
|
216
|
+
fieldValue: fieldValue
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
operator: "<",
|
|
220
|
+
fieldName: apiFieldName,
|
|
221
|
+
fieldValue: fieldValue
|
|
222
|
+
}
|
|
223
|
+
];
|
|
224
|
+
default:
|
|
225
|
+
return throwInvalidOperator(operatorKey);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
return Stdlib_Array.reduce(filterGroups, [[]], (combinations, group) => combinations.flatMap(combination => group.map(filter => combination.concat([filter])))).map(filters => {
|
|
230
|
+
if (filters.length !== 1) {
|
|
231
|
+
return {
|
|
232
|
+
operator: "and",
|
|
233
|
+
filters: filters
|
|
234
|
+
};
|
|
235
|
+
} else {
|
|
236
|
+
return filters[0];
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function printOperationFilter(filter, paramsCount) {
|
|
242
|
+
switch (filter.operator) {
|
|
243
|
+
case "=" :
|
|
244
|
+
paramsCount.contents = paramsCount.contents + 1 | 0;
|
|
245
|
+
return filter.fieldName + `: $` + paramsCount.contents.toString();
|
|
246
|
+
case ">" :
|
|
247
|
+
paramsCount.contents = paramsCount.contents + 1 | 0;
|
|
248
|
+
return filter.fieldName + `: {_gt: $` + paramsCount.contents.toString() + `}`;
|
|
249
|
+
case "<" :
|
|
250
|
+
paramsCount.contents = paramsCount.contents + 1 | 0;
|
|
251
|
+
return filter.fieldName + `: {_lt: $` + paramsCount.contents.toString() + `}`;
|
|
252
|
+
case "in" :
|
|
253
|
+
paramsCount.contents = paramsCount.contents + 1 | 0;
|
|
254
|
+
return filter.fieldName + `: {_in: $` + paramsCount.contents.toString() + `}`;
|
|
255
|
+
case "and" :
|
|
256
|
+
let filters = filter.filters;
|
|
257
|
+
let acc = "";
|
|
258
|
+
for (let idx = 0, idx_finish = filters.length; idx < idx_finish; ++idx) {
|
|
259
|
+
let part = printOperationFilter(filters[idx], paramsCount);
|
|
260
|
+
acc = acc === "" ? part : acc + `, ` + part;
|
|
261
|
+
}
|
|
262
|
+
return acc;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function toOperationKey(filter, entityName) {
|
|
267
|
+
switch (filter.operator) {
|
|
268
|
+
case "=" :
|
|
269
|
+
return entityName + `.getWhere({` + filter.fieldName + `: $1})`;
|
|
270
|
+
case ">" :
|
|
271
|
+
return entityName + `.getWhere({` + filter.fieldName + `: {_gt: $1}})`;
|
|
272
|
+
case "<" :
|
|
273
|
+
return entityName + `.getWhere({` + filter.fieldName + `: {_lt: $1}})`;
|
|
274
|
+
case "in" :
|
|
275
|
+
return entityName + `.getWhere({` + filter.fieldName + `: {_in: $1}})`;
|
|
276
|
+
case "and" :
|
|
277
|
+
return entityName + `.getWhere({` + printOperationFilter(filter, {
|
|
278
|
+
contents: 0
|
|
279
|
+
}) + `})`;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
function getParams(filter) {
|
|
284
|
+
switch (filter.operator) {
|
|
285
|
+
case "in" :
|
|
286
|
+
return filter.fieldValue;
|
|
287
|
+
case "and" :
|
|
288
|
+
let acc = [];
|
|
289
|
+
let collect = filter => {
|
|
290
|
+
switch (filter.operator) {
|
|
291
|
+
case "and" :
|
|
292
|
+
filter.filters.forEach(collect);
|
|
293
|
+
return;
|
|
294
|
+
default:
|
|
295
|
+
acc.push(filter.fieldValue);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
collect(filter);
|
|
300
|
+
return acc;
|
|
301
|
+
default:
|
|
302
|
+
return [filter.fieldValue];
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function throwUnmergeable(filter) {
|
|
307
|
+
return Stdlib_JsError.throwWithMessage(`Unexpected filter ` + toString$2(filter) + ` in a merged batch. Filters batched into a single query must use the same operator and field.`);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function merge(filters) {
|
|
311
|
+
let len = filters.length;
|
|
312
|
+
if (len === 1) {
|
|
313
|
+
return filters;
|
|
314
|
+
}
|
|
315
|
+
if (len === 0) {
|
|
316
|
+
return filters;
|
|
317
|
+
}
|
|
318
|
+
let match = filters[0];
|
|
319
|
+
switch (match.operator) {
|
|
320
|
+
case "=" :
|
|
321
|
+
return [{
|
|
322
|
+
operator: "in",
|
|
323
|
+
fieldName: match.fieldName,
|
|
324
|
+
fieldValue: filters.map(filter => {
|
|
325
|
+
if (filter.operator === "=") {
|
|
326
|
+
return filter.fieldValue;
|
|
327
|
+
} else {
|
|
328
|
+
return throwUnmergeable(filter);
|
|
329
|
+
}
|
|
330
|
+
})
|
|
331
|
+
}];
|
|
332
|
+
case "in" :
|
|
333
|
+
return [{
|
|
334
|
+
operator: "in",
|
|
335
|
+
fieldName: match.fieldName,
|
|
336
|
+
fieldValue: filters.map(filter => {
|
|
337
|
+
if (filter.operator === "in") {
|
|
338
|
+
return filter.fieldValue;
|
|
339
|
+
} else {
|
|
340
|
+
return throwUnmergeable(filter);
|
|
341
|
+
}
|
|
342
|
+
}).flat()
|
|
343
|
+
}];
|
|
344
|
+
default:
|
|
345
|
+
return filters;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
function matches(filter, entity) {
|
|
350
|
+
switch (filter.operator) {
|
|
351
|
+
case "=" :
|
|
352
|
+
return eq(entity[filter.fieldName], filter.fieldValue);
|
|
353
|
+
case ">" :
|
|
354
|
+
return gt(entity[filter.fieldName], filter.fieldValue);
|
|
355
|
+
case "<" :
|
|
356
|
+
return lt(entity[filter.fieldName], filter.fieldValue);
|
|
357
|
+
case "in" :
|
|
358
|
+
let entityFieldValue = entity[filter.fieldName];
|
|
359
|
+
return filter.fieldValue.some(fieldValue => eq(entityFieldValue, fieldValue));
|
|
360
|
+
case "and" :
|
|
361
|
+
let filters = filter.filters;
|
|
362
|
+
if (filters.length !== 0) {
|
|
363
|
+
return filters.every(filter => matches(filter, entity));
|
|
364
|
+
} else {
|
|
365
|
+
return Stdlib_JsError.throwWithMessage(`The "and" filter must contain at least one nested filter.`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
function mapValues(filter, mapValue) {
|
|
371
|
+
switch (filter.operator) {
|
|
372
|
+
case "=" :
|
|
373
|
+
let fieldName = filter.fieldName;
|
|
374
|
+
return {
|
|
375
|
+
operator: "=",
|
|
376
|
+
fieldName: fieldName,
|
|
377
|
+
fieldValue: mapValue(fieldName, filter.fieldValue, false)
|
|
378
|
+
};
|
|
379
|
+
case ">" :
|
|
380
|
+
let fieldName$1 = filter.fieldName;
|
|
381
|
+
return {
|
|
382
|
+
operator: ">",
|
|
383
|
+
fieldName: fieldName$1,
|
|
384
|
+
fieldValue: mapValue(fieldName$1, filter.fieldValue, false)
|
|
385
|
+
};
|
|
386
|
+
case "<" :
|
|
387
|
+
let fieldName$2 = filter.fieldName;
|
|
388
|
+
return {
|
|
389
|
+
operator: "<",
|
|
390
|
+
fieldName: fieldName$2,
|
|
391
|
+
fieldValue: mapValue(fieldName$2, filter.fieldValue, false)
|
|
392
|
+
};
|
|
393
|
+
case "in" :
|
|
394
|
+
let fieldName$3 = filter.fieldName;
|
|
395
|
+
return {
|
|
396
|
+
operator: "in",
|
|
397
|
+
fieldName: fieldName$3,
|
|
398
|
+
fieldValue: mapValue(fieldName$3, filter.fieldValue, true)
|
|
399
|
+
};
|
|
400
|
+
case "and" :
|
|
401
|
+
return {
|
|
402
|
+
operator: "and",
|
|
403
|
+
filters: filter.filters.map(filter => mapValues(filter, mapValue))
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
export {
|
|
409
|
+
FieldValue,
|
|
410
|
+
toString$2 as toString,
|
|
411
|
+
valuesCount,
|
|
412
|
+
codegenHelpMessage,
|
|
413
|
+
getUndefinedOrNullName,
|
|
414
|
+
throwUnsupportedGetWhereValue,
|
|
415
|
+
parseGetWhereOrThrow,
|
|
416
|
+
printOperationFilter,
|
|
417
|
+
toOperationKey,
|
|
418
|
+
getParams,
|
|
419
|
+
throwUnmergeable,
|
|
420
|
+
merge,
|
|
421
|
+
matches,
|
|
422
|
+
mapValues,
|
|
423
|
+
}
|
|
424
|
+
/* Table Not a pure module */
|
package/src/db/EntityHistory.res
CHANGED
|
@@ -53,7 +53,7 @@ let historyTablePrefix = "envio_history_"
|
|
|
53
53
|
let historyTableName = (~entityName, ~entityIndex) => {
|
|
54
54
|
let fullName = historyTablePrefix ++ entityName
|
|
55
55
|
if fullName->String.length > maxPgTableNameLength {
|
|
56
|
-
let entityIndexStr = entityIndex->
|
|
56
|
+
let entityIndexStr = entityIndex->Int.toString
|
|
57
57
|
fullName->Js.String.slice(~from=0, ~to_=maxPgTableNameLength - entityIndexStr->String.length) ++
|
|
58
58
|
entityIndexStr
|
|
59
59
|
} else {
|
|
@@ -67,7 +67,7 @@ function historyTableName(entityName, entityIndex) {
|
|
|
67
67
|
if (fullName.length <= 63) {
|
|
68
68
|
return fullName;
|
|
69
69
|
}
|
|
70
|
-
let entityIndexStr =
|
|
70
|
+
let entityIndexStr = entityIndex.toString();
|
|
71
71
|
return Js_string.slice(0, 63 - entityIndexStr.length | 0, fullName) + entityIndexStr;
|
|
72
72
|
}
|
|
73
73
|
|
package/src/db/InternalTable.res
CHANGED
|
@@ -122,16 +122,16 @@ module Chains = {
|
|
|
122
122
|
None
|
|
123
123
|
} else {
|
|
124
124
|
// Create column names list
|
|
125
|
-
let columnNames = fields->
|
|
125
|
+
let columnNames = fields->Array.map(field => `"${(field :> string)}"`)
|
|
126
126
|
|
|
127
127
|
// Create VALUES rows for each chain config
|
|
128
|
-
let valuesRows = chainConfigs->
|
|
128
|
+
let valuesRows = chainConfigs->Array.map(chainConfig => {
|
|
129
129
|
let initialValues = initialFromConfig(chainConfig)
|
|
130
|
-
let values = fields->
|
|
130
|
+
let values = fields->Array.map((field: field) => {
|
|
131
131
|
let value = initialValues->(Utils.magic: t => dict<unknown>)->Dict.get((field :> string))
|
|
132
132
|
switch typeof(value) {
|
|
133
133
|
| #object => "NULL"
|
|
134
|
-
| #number => value->(Utils.magic: option<unknown> => int)->
|
|
134
|
+
| #number => value->(Utils.magic: option<unknown> => int)->Int.toString
|
|
135
135
|
| #bigint => value->(Utils.magic: option<unknown> => bigint)->BigInt.toString
|
|
136
136
|
| #boolean => value->(Utils.magic: option<unknown> => bool) ? "true" : "false"
|
|
137
137
|
| _ => JsError.throwWithMessage("Invalid envio_chains value type")
|
|
@@ -153,10 +153,10 @@ VALUES ${valuesRows->Array.joinUnsafe(",\n ")};`,
|
|
|
153
153
|
|
|
154
154
|
let makeMetaFieldsUpdateQuery = (~pgSchema) => {
|
|
155
155
|
// Generate SET clauses with parameter placeholders
|
|
156
|
-
let setClauses =
|
|
156
|
+
let setClauses = Array.mapWithIndex(metaFields, (field, index) => {
|
|
157
157
|
let fieldName = (field :> string)
|
|
158
158
|
let paramIndex = index + 2 // +2 because $1 is for id in WHERE clause
|
|
159
|
-
`"${fieldName}" = $${
|
|
159
|
+
`"${fieldName}" = $${Int.toString(paramIndex)}`
|
|
160
160
|
})
|
|
161
161
|
|
|
162
162
|
`UPDATE "${pgSchema}"."${table.tableName}"
|
|
@@ -252,10 +252,10 @@ FROM "${pgSchema}"."${EnvioAddresses.table.tableName}";`
|
|
|
252
252
|
let progressFields: array<progressFields> = [#progress_block, #events_processed, #source_block]
|
|
253
253
|
|
|
254
254
|
let makeProgressFieldsUpdateQuery = (~pgSchema) => {
|
|
255
|
-
let setClauses =
|
|
255
|
+
let setClauses = Array.mapWithIndex(progressFields, (field, index) => {
|
|
256
256
|
let fieldName = (field :> string)
|
|
257
257
|
let paramIndex = index + 2 // +2 because $1 is for id in WHERE clause
|
|
258
|
-
`"${fieldName}" = $${
|
|
258
|
+
`"${fieldName}" = $${Int.toString(paramIndex)}`
|
|
259
259
|
})
|
|
260
260
|
|
|
261
261
|
`UPDATE "${pgSchema}"."${table.tableName}"
|
|
@@ -358,7 +358,7 @@ module EnvioInfo = {
|
|
|
358
358
|
| _ => throw(exn)
|
|
359
359
|
}
|
|
360
360
|
}
|
|
361
|
-
rows->
|
|
361
|
+
rows->Array.get(0)->Option.map(row => row["config"]->JSON.parseOrThrow)
|
|
362
362
|
}
|
|
363
363
|
|
|
364
364
|
// Upsert keyed on the fixed id so the table stays a singleton even if
|
|
@@ -534,7 +534,7 @@ LIMIT 1;`
|
|
|
534
534
|
)
|
|
535
535
|
->(Utils.magic: promise<unknown> => promise<array<{"id": string}>>)
|
|
536
536
|
rawResult->Promise.thenResolve(rows => {
|
|
537
|
-
rows->
|
|
537
|
+
rows->Array.get(0)->Option.map(row => row["id"]->BigInt.fromStringOrThrow)
|
|
538
538
|
})
|
|
539
539
|
}
|
|
540
540
|
|
|
@@ -4,8 +4,6 @@ import * as Table from "./Table.res.mjs";
|
|
|
4
4
|
import * as Utils from "../Utils.res.mjs";
|
|
5
5
|
import * as Config from "../Config.res.mjs";
|
|
6
6
|
import * as Address from "../Address.res.mjs";
|
|
7
|
-
import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
|
|
8
|
-
import * as Belt_Option from "@rescript/runtime/lib/es6/Belt_Option.js";
|
|
9
7
|
import * as Stdlib_Null from "@rescript/runtime/lib/es6/Stdlib_Null.js";
|
|
10
8
|
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
11
9
|
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
@@ -27,17 +25,17 @@ let fields = [
|
|
|
27
25
|
];
|
|
28
26
|
|
|
29
27
|
let table = Table.mkTable("envio_chains", undefined, [
|
|
30
|
-
Table.mkField("id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, true, undefined, undefined, undefined),
|
|
31
|
-
Table.mkField("start_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
32
|
-
Table.mkField("end_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined),
|
|
33
|
-
Table.mkField("max_reorg_depth", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
34
|
-
Table.mkField("buffer_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
35
|
-
Table.mkField("source_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
36
|
-
Table.mkField("first_event_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined),
|
|
37
|
-
Table.mkField("ready_at", "Date", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined, undefined),
|
|
38
|
-
Table.mkField("events_processed", "UInt52", S$RescriptSchema.float, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
39
|
-
Table.mkField("_is_hyper_sync", "Boolean", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
40
|
-
Table.mkField("progress_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
28
|
+
Table.mkField("id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, true, undefined, undefined, undefined, undefined, undefined),
|
|
29
|
+
Table.mkField("start_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
30
|
+
Table.mkField("end_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
31
|
+
Table.mkField("max_reorg_depth", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
32
|
+
Table.mkField("buffer_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
33
|
+
Table.mkField("source_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
34
|
+
Table.mkField("first_event_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.int), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
35
|
+
Table.mkField("ready_at", "Date", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
36
|
+
Table.mkField("events_processed", "UInt52", S$RescriptSchema.float, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
37
|
+
Table.mkField("_is_hyper_sync", "Boolean", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
38
|
+
Table.mkField("progress_block", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
41
39
|
], undefined);
|
|
42
40
|
|
|
43
41
|
function initialFromConfig(chainConfig) {
|
|
@@ -60,13 +58,13 @@ function makeInitialValuesQuery(pgSchema, chainConfigs) {
|
|
|
60
58
|
if (chainConfigs.length === 0) {
|
|
61
59
|
return;
|
|
62
60
|
}
|
|
63
|
-
let columnNames =
|
|
64
|
-
let valuesRows =
|
|
61
|
+
let columnNames = fields.map(field => `"` + field + `"`);
|
|
62
|
+
let valuesRows = chainConfigs.map(chainConfig => {
|
|
65
63
|
let initialValues = initialFromConfig(chainConfig);
|
|
66
|
-
let values =
|
|
64
|
+
let values = fields.map(field => {
|
|
67
65
|
let value = initialValues[field];
|
|
68
66
|
let match = typeof value;
|
|
69
|
-
if (match === "bigint") {
|
|
67
|
+
if (match === "number" || match === "bigint") {
|
|
70
68
|
return value.toString();
|
|
71
69
|
} else if (match === "boolean") {
|
|
72
70
|
if (value) {
|
|
@@ -76,8 +74,6 @@ function makeInitialValuesQuery(pgSchema, chainConfigs) {
|
|
|
76
74
|
}
|
|
77
75
|
} else if (match === "object") {
|
|
78
76
|
return "NULL";
|
|
79
|
-
} else if (match === "number") {
|
|
80
|
-
return String(value);
|
|
81
77
|
} else {
|
|
82
78
|
return Stdlib_JsError.throwWithMessage("Invalid envio_chains value type");
|
|
83
79
|
}
|
|
@@ -96,9 +92,9 @@ let metaFields = [
|
|
|
96
92
|
];
|
|
97
93
|
|
|
98
94
|
function makeMetaFieldsUpdateQuery(pgSchema) {
|
|
99
|
-
let setClauses =
|
|
95
|
+
let setClauses = metaFields.map((field, index) => {
|
|
100
96
|
let paramIndex = index + 2 | 0;
|
|
101
|
-
return `"` + field + `" = $` +
|
|
97
|
+
return `"` + field + `" = $` + paramIndex.toString();
|
|
102
98
|
});
|
|
103
99
|
return `UPDATE "` + pgSchema + `"."` + table.tableName + `"
|
|
104
100
|
SET ` + setClauses.join(",\n ") + `
|
|
@@ -170,9 +166,9 @@ let progressFields = [
|
|
|
170
166
|
];
|
|
171
167
|
|
|
172
168
|
function makeProgressFieldsUpdateQuery(pgSchema) {
|
|
173
|
-
let setClauses =
|
|
169
|
+
let setClauses = progressFields.map((field, index) => {
|
|
174
170
|
let paramIndex = index + 2 | 0;
|
|
175
|
-
return `"` + field + `" = $` +
|
|
171
|
+
return `"` + field + `" = $` + paramIndex.toString();
|
|
176
172
|
});
|
|
177
173
|
return `UPDATE "` + pgSchema + `"."` + table.tableName + `"
|
|
178
174
|
SET ` + setClauses.join(",\n ") + `
|
|
@@ -227,8 +223,8 @@ let Chains = {
|
|
|
227
223
|
};
|
|
228
224
|
|
|
229
225
|
let table$1 = Table.mkTable("envio_info", undefined, [
|
|
230
|
-
Table.mkField("id", "Int32", S$RescriptSchema.int, "1", undefined, undefined, true, undefined, undefined, undefined),
|
|
231
|
-
Table.mkField("config", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
226
|
+
Table.mkField("id", "Int32", S$RescriptSchema.int, "1", undefined, undefined, true, undefined, undefined, undefined, undefined, undefined),
|
|
227
|
+
Table.mkField("config", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
232
228
|
], undefined);
|
|
233
229
|
|
|
234
230
|
let undefinedTableSqlState = "42P01";
|
|
@@ -250,7 +246,7 @@ async function read(sql, pgSchema) {
|
|
|
250
246
|
throw exn;
|
|
251
247
|
}
|
|
252
248
|
}
|
|
253
|
-
return
|
|
249
|
+
return Stdlib_Option.map(rows[0], row => JSON.parse(row.config));
|
|
254
250
|
}
|
|
255
251
|
|
|
256
252
|
function write(sql, pgSchema, envioInfo) {
|
|
@@ -276,11 +272,11 @@ let dbSchema = S$RescriptSchema.object(s => ({
|
|
|
276
272
|
}));
|
|
277
273
|
|
|
278
274
|
let table$2 = Table.mkTable("envio_checkpoints", undefined, [
|
|
279
|
-
Table.mkField("id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, true, undefined, undefined, undefined),
|
|
280
|
-
Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
281
|
-
Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
282
|
-
Table.mkField("block_hash", "String", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined, undefined),
|
|
283
|
-
Table.mkField("events_processed", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
275
|
+
Table.mkField("id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, true, undefined, undefined, undefined, undefined, undefined),
|
|
276
|
+
Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
277
|
+
Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
278
|
+
Table.mkField("block_hash", "String", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
279
|
+
Table.mkField("events_processed", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
284
280
|
], undefined);
|
|
285
281
|
|
|
286
282
|
function makeGetReorgCheckpointsQuery(pgSchema) {
|
|
@@ -351,7 +347,7 @@ function getRollbackTargetCheckpoint(sql, pgSchema, reorgChainId, lastKnownValid
|
|
|
351
347
|
reorgChainId,
|
|
352
348
|
lastKnownValidBlockNumber
|
|
353
349
|
], {prepare: true});
|
|
354
|
-
return rawResult.then(rows =>
|
|
350
|
+
return rawResult.then(rows => Stdlib_Option.map(rows[0], row => BigInt(row.id)));
|
|
355
351
|
}
|
|
356
352
|
|
|
357
353
|
function makeGetRollbackProgressDiffQuery(pgSchema) {
|
|
@@ -401,19 +397,19 @@ let schema = S$RescriptSchema.schema(s => ({
|
|
|
401
397
|
}));
|
|
402
398
|
|
|
403
399
|
let table$3 = Table.mkTable("raw_events", undefined, [
|
|
404
|
-
Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
405
|
-
Table.mkField("event_id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
406
|
-
Table.mkField("event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
407
|
-
Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
408
|
-
Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
409
|
-
Table.mkField("log_index", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
410
|
-
Table.mkField("src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
411
|
-
Table.mkField("block_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
412
|
-
Table.mkField("block_timestamp", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
413
|
-
Table.mkField("block_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
414
|
-
Table.mkField("transaction_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
415
|
-
Table.mkField("params", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
416
|
-
Table.mkField("serial", "BigSerial", S$RescriptSchema.$$null(S$RescriptSchema.bigint), undefined, undefined, true, true, undefined, undefined, undefined)
|
|
400
|
+
Table.mkField("chain_id", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
401
|
+
Table.mkField("event_id", "UInt64", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
402
|
+
Table.mkField("event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
403
|
+
Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
404
|
+
Table.mkField("block_number", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
405
|
+
Table.mkField("log_index", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
406
|
+
Table.mkField("src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
407
|
+
Table.mkField("block_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
408
|
+
Table.mkField("block_timestamp", "Int32", S$RescriptSchema.int, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
409
|
+
Table.mkField("block_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
410
|
+
Table.mkField("transaction_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
411
|
+
Table.mkField("params", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
412
|
+
Table.mkField("serial", "BigSerial", S$RescriptSchema.$$null(S$RescriptSchema.bigint), undefined, undefined, true, true, undefined, undefined, undefined, undefined, undefined)
|
|
417
413
|
], undefined);
|
|
418
414
|
|
|
419
415
|
let RawEvents = {
|