envio 2.32.2 → 3.0.0-alpha-main-clickhouse-sink
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/index.d.ts +1 -0
- package/package.json +6 -5
- package/src/Batch.res +4 -4
- package/src/Change.res +9 -0
- package/src/Change.res.js +2 -0
- package/src/Config.res +5 -5
- package/src/Config.res.js +3 -1
- package/src/Envio.gen.ts +3 -3
- package/src/Envio.res +14 -3
- package/src/EventRegister.res +3 -11
- package/src/EventRegister.res.js +4 -8
- package/src/EventRegister.resi +1 -1
- package/src/InMemoryStore.res +7 -15
- package/src/InMemoryStore.res.js +2 -4
- package/src/InMemoryTable.res +50 -35
- package/src/InMemoryTable.res.js +52 -84
- package/src/Internal.gen.ts +0 -2
- package/src/Internal.res +20 -38
- package/src/Internal.res.js +2 -16
- package/src/Persistence.res +190 -38
- package/src/Persistence.res.js +92 -39
- package/src/PgStorage.res +700 -14
- package/src/PgStorage.res.js +431 -19
- package/src/Platform.res +141 -0
- package/src/Platform.res.js +170 -0
- package/src/Prometheus.res +41 -0
- package/src/Prometheus.res.js +45 -0
- package/src/SafeCheckpointTracking.res +5 -4
- package/src/Sink.res +47 -0
- package/src/Sink.res.js +36 -0
- package/src/Utils.res +2 -0
- package/src/Utils.res.js +3 -0
- package/src/bindings/ClickHouse.res +387 -0
- package/src/bindings/ClickHouse.res.js +274 -0
- package/src/bindings/Postgres.res +15 -0
- package/src/db/EntityHistory.res +33 -156
- package/src/db/EntityHistory.res.js +40 -115
- package/src/db/InternalTable.res +56 -55
- package/src/db/InternalTable.res.js +49 -52
- package/src/db/Table.res +86 -22
- package/src/db/Table.res.js +77 -10
|
@@ -8,7 +8,6 @@ var Address = require("../Address.res.js");
|
|
|
8
8
|
var Js_dict = require("rescript/lib/js/js_dict.js");
|
|
9
9
|
var Js_null = require("rescript/lib/js/js_null.js");
|
|
10
10
|
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
11
|
-
var EntityHistory = require("./EntityHistory.res.js");
|
|
12
11
|
var S$RescriptSchema = require("rescript-schema/src/S.res.js");
|
|
13
12
|
|
|
14
13
|
var name = "dynamic_contract_registry";
|
|
@@ -35,27 +34,24 @@ var schema = S$RescriptSchema.schema(function (s) {
|
|
|
35
34
|
var rowsSchema = S$RescriptSchema.array(schema);
|
|
36
35
|
|
|
37
36
|
var table = Table.mkTable(name, undefined, [
|
|
38
|
-
Table.mkField("id", "
|
|
39
|
-
Table.mkField("chain_id", "
|
|
40
|
-
Table.mkField("registering_event_block_number", "
|
|
41
|
-
Table.mkField("registering_event_log_index", "
|
|
42
|
-
Table.mkField("registering_event_block_timestamp", "
|
|
43
|
-
Table.mkField("registering_event_contract_name", "
|
|
44
|
-
Table.mkField("registering_event_name", "
|
|
45
|
-
Table.mkField("registering_event_src_address", "
|
|
46
|
-
Table.mkField("contract_address", "
|
|
47
|
-
Table.mkField("contract_name", "
|
|
37
|
+
Table.mkField("id", "String", S$RescriptSchema.string, undefined, undefined, undefined, true, undefined, undefined),
|
|
38
|
+
Table.mkField("chain_id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
39
|
+
Table.mkField("registering_event_block_number", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
40
|
+
Table.mkField("registering_event_log_index", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
41
|
+
Table.mkField("registering_event_block_timestamp", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
42
|
+
Table.mkField("registering_event_contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
43
|
+
Table.mkField("registering_event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
44
|
+
Table.mkField("registering_event_src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
45
|
+
Table.mkField("contract_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
46
|
+
Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
48
47
|
]);
|
|
49
48
|
|
|
50
|
-
var entityHistory = EntityHistory.fromTable(table, schema, -1);
|
|
51
|
-
|
|
52
49
|
var config = {
|
|
53
50
|
name: name,
|
|
54
51
|
index: -1,
|
|
55
52
|
schema: schema,
|
|
56
53
|
rowsSchema: rowsSchema,
|
|
57
|
-
table: table
|
|
58
|
-
entityHistory: entityHistory
|
|
54
|
+
table: table
|
|
59
55
|
};
|
|
60
56
|
|
|
61
57
|
var DynamicContractRegistry = {
|
|
@@ -65,7 +61,6 @@ var DynamicContractRegistry = {
|
|
|
65
61
|
schema: schema,
|
|
66
62
|
rowsSchema: rowsSchema,
|
|
67
63
|
table: table,
|
|
68
|
-
entityHistory: entityHistory,
|
|
69
64
|
config: config
|
|
70
65
|
};
|
|
71
66
|
|
|
@@ -85,18 +80,18 @@ var fields = [
|
|
|
85
80
|
];
|
|
86
81
|
|
|
87
82
|
var table$1 = Table.mkTable("envio_chains", undefined, [
|
|
88
|
-
Table.mkField("id", "
|
|
89
|
-
Table.mkField("start_block", "
|
|
90
|
-
Table.mkField("end_block", "
|
|
91
|
-
Table.mkField("max_reorg_depth", "
|
|
92
|
-
Table.mkField("buffer_block", "
|
|
93
|
-
Table.mkField("source_block", "
|
|
94
|
-
Table.mkField("first_event_block", "
|
|
95
|
-
Table.mkField("ready_at", "
|
|
96
|
-
Table.mkField("events_processed", "
|
|
97
|
-
Table.mkField("_is_hyper_sync", "
|
|
98
|
-
Table.mkField("progress_block", "
|
|
99
|
-
Table.mkField("_num_batches_fetched", "
|
|
83
|
+
Table.mkField("id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
|
|
84
|
+
Table.mkField("start_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
85
|
+
Table.mkField("end_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
|
|
86
|
+
Table.mkField("max_reorg_depth", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
87
|
+
Table.mkField("buffer_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
88
|
+
Table.mkField("source_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
89
|
+
Table.mkField("first_event_block", "Int32", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
|
|
90
|
+
Table.mkField("ready_at", "Date", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined),
|
|
91
|
+
Table.mkField("events_processed", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
92
|
+
Table.mkField("_is_hyper_sync", "Boolean", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
93
|
+
Table.mkField("progress_block", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
94
|
+
Table.mkField("_num_batches_fetched", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
100
95
|
]);
|
|
101
96
|
|
|
102
97
|
function initialFromConfig(chainConfig) {
|
|
@@ -231,12 +226,12 @@ var Chains = {
|
|
|
231
226
|
};
|
|
232
227
|
|
|
233
228
|
var table$2 = Table.mkTable("persisted_state", undefined, [
|
|
234
|
-
Table.mkField("id", "
|
|
235
|
-
Table.mkField("envio_version", "
|
|
236
|
-
Table.mkField("config_hash", "
|
|
237
|
-
Table.mkField("schema_hash", "
|
|
238
|
-
Table.mkField("handler_files_hash", "
|
|
239
|
-
Table.mkField("abi_files_hash", "
|
|
229
|
+
Table.mkField("id", "Serial", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
|
|
230
|
+
Table.mkField("envio_version", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
231
|
+
Table.mkField("config_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
232
|
+
Table.mkField("schema_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
233
|
+
Table.mkField("handler_files_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
234
|
+
Table.mkField("abi_files_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
240
235
|
]);
|
|
241
236
|
|
|
242
237
|
var PersistedState = {
|
|
@@ -244,11 +239,11 @@ var PersistedState = {
|
|
|
244
239
|
};
|
|
245
240
|
|
|
246
241
|
var table$3 = Table.mkTable("envio_checkpoints", undefined, [
|
|
247
|
-
Table.mkField("id", "
|
|
248
|
-
Table.mkField("chain_id", "
|
|
249
|
-
Table.mkField("block_number", "
|
|
250
|
-
Table.mkField("block_hash", "
|
|
251
|
-
Table.mkField("events_processed", "
|
|
242
|
+
Table.mkField("id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
|
|
243
|
+
Table.mkField("chain_id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
244
|
+
Table.mkField("block_number", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
245
|
+
Table.mkField("block_hash", "String", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined),
|
|
246
|
+
Table.mkField("events_processed", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
|
|
252
247
|
]);
|
|
253
248
|
|
|
254
249
|
function makeGetReorgCheckpointsQuery(pgSchema) {
|
|
@@ -339,19 +334,21 @@ var schema$1 = S$RescriptSchema.schema(function (s) {
|
|
|
339
334
|
});
|
|
340
335
|
|
|
341
336
|
var table$4 = Table.mkTable("raw_events", undefined, [
|
|
342
|
-
Table.mkField("chain_id", "
|
|
343
|
-
Table.mkField("event_id",
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
Table.mkField("
|
|
347
|
-
Table.mkField("
|
|
348
|
-
Table.mkField("
|
|
349
|
-
Table.mkField("
|
|
350
|
-
Table.mkField("
|
|
351
|
-
Table.mkField("
|
|
352
|
-
Table.mkField("
|
|
353
|
-
Table.mkField("
|
|
354
|
-
Table.mkField("
|
|
337
|
+
Table.mkField("chain_id", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
338
|
+
Table.mkField("event_id", {
|
|
339
|
+
type: "BigInt"
|
|
340
|
+
}, S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
341
|
+
Table.mkField("event_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
342
|
+
Table.mkField("contract_name", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
343
|
+
Table.mkField("block_number", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
344
|
+
Table.mkField("log_index", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
345
|
+
Table.mkField("src_address", "String", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
346
|
+
Table.mkField("block_hash", "String", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
347
|
+
Table.mkField("block_timestamp", "Int32", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
|
|
348
|
+
Table.mkField("block_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
|
|
349
|
+
Table.mkField("transaction_fields", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
|
|
350
|
+
Table.mkField("params", "Json", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
|
|
351
|
+
Table.mkField("serial", "Serial", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, true, undefined, undefined)
|
|
355
352
|
]);
|
|
356
353
|
|
|
357
354
|
var RawEvents = {
|
package/src/db/Table.res
CHANGED
|
@@ -2,20 +2,35 @@ open Belt
|
|
|
2
2
|
|
|
3
3
|
type primitive
|
|
4
4
|
type derived
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
type enum
|
|
7
|
+
type enumConfig<'enum> = {
|
|
8
|
+
name: string,
|
|
9
|
+
variants: array<'enum>,
|
|
10
|
+
schema: S.t<'enum>,
|
|
11
|
+
}
|
|
12
|
+
external fromGenericEnumConfig: enumConfig<'enum> => enumConfig<enum> = "%identity"
|
|
13
|
+
|
|
14
|
+
let makeEnumConfig = (~name, ~variants) => {
|
|
15
|
+
name,
|
|
16
|
+
variants,
|
|
17
|
+
schema: S.enum(variants),
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@tag("type")
|
|
6
21
|
type fieldType =
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
22
|
+
| String
|
|
23
|
+
| Boolean
|
|
24
|
+
| Uint32
|
|
25
|
+
| Int32
|
|
26
|
+
| Number
|
|
27
|
+
| BigInt({precision?: int})
|
|
28
|
+
| BigDecimal({config?: (int, int)}) // (precision, scale)
|
|
29
|
+
| Serial
|
|
30
|
+
| Json
|
|
31
|
+
| Date
|
|
32
|
+
| Enum({config: enumConfig<enum>})
|
|
33
|
+
| Entity({name: string})
|
|
19
34
|
|
|
20
35
|
type field = {
|
|
21
36
|
fieldName: string,
|
|
@@ -84,8 +99,52 @@ let getFieldName = fieldOrDerived =>
|
|
|
84
99
|
| DerivedFrom({fieldName}) => fieldName
|
|
85
100
|
}
|
|
86
101
|
|
|
87
|
-
let
|
|
88
|
-
|
|
102
|
+
let idFieldName = "id"
|
|
103
|
+
|
|
104
|
+
let getPgFieldType = (
|
|
105
|
+
~fieldType: fieldType,
|
|
106
|
+
~pgSchema,
|
|
107
|
+
~isArray,
|
|
108
|
+
~isNumericArrayAsText,
|
|
109
|
+
~isNullable,
|
|
110
|
+
) => {
|
|
111
|
+
let columnType = switch fieldType {
|
|
112
|
+
| String => (Postgres.Text :> string)
|
|
113
|
+
| Boolean => (Postgres.Boolean :> string)
|
|
114
|
+
| Int32 => (Postgres.Integer :> string)
|
|
115
|
+
| Uint32 => (Postgres.BigInt :> string)
|
|
116
|
+
| Number => (Postgres.DoublePrecision :> string)
|
|
117
|
+
| BigInt({?precision}) =>
|
|
118
|
+
(Postgres.Numeric :> string) ++
|
|
119
|
+
switch precision {
|
|
120
|
+
| Some(precision) => `(${precision->Int.toString}, 0)` // scale is always 0 for BigInt
|
|
121
|
+
| None => ""
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
| BigDecimal({?config}) =>
|
|
125
|
+
(Postgres.Numeric :> string) ++
|
|
126
|
+
switch config {
|
|
127
|
+
| Some((precision, scale)) => `(${precision->Int.toString}, ${scale->Int.toString})`
|
|
128
|
+
| None => ""
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
| Serial => (Postgres.Serial :> string)
|
|
132
|
+
| Json => (Postgres.JsonB :> string)
|
|
133
|
+
| Date =>
|
|
134
|
+
(isNullable ? Postgres.TimestampWithTimezoneNull : Postgres.TimestampWithTimezone :> string)
|
|
135
|
+
| Enum({config}) => `"${pgSchema}".${config.name}`
|
|
136
|
+
| Entity(_) => (Postgres.Text :> string) // FIXME: Will it work correctly if id is not a text column?
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Workaround for Hasura bug https://github.com/enviodev/hyperindex/issues/788
|
|
140
|
+
let isNumericAsText = isArray && isNumericArrayAsText
|
|
141
|
+
let columnType = if columnType == (Postgres.Numeric :> string) && isNumericAsText {
|
|
142
|
+
(Postgres.Text :> string)
|
|
143
|
+
} else {
|
|
144
|
+
columnType
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
columnType ++ (isArray ? "[]" : "")
|
|
89
148
|
}
|
|
90
149
|
|
|
91
150
|
type table = {
|
|
@@ -240,15 +299,20 @@ let toSqlParams = (table: table, ~schema, ~pgSchema) => {
|
|
|
240
299
|
->Js.Array2.push(
|
|
241
300
|
switch field {
|
|
242
301
|
| Field(f) =>
|
|
302
|
+
let pgFieldType = getPgFieldType(
|
|
303
|
+
~fieldType=f.fieldType,
|
|
304
|
+
~pgSchema,
|
|
305
|
+
~isArray=true,
|
|
306
|
+
~isNullable=f.isNullable,
|
|
307
|
+
~isNumericArrayAsText=false, // TODO: Test whether it should be passed via args and match the column type
|
|
308
|
+
)
|
|
243
309
|
switch f.fieldType {
|
|
244
|
-
|
|
245
|
-
|
|
|
246
|
-
|
|
|
247
|
-
| Boolean => `${(Integer :> string)}[]::${(f.fieldType :> string)}`
|
|
248
|
-
| fieldType => (fieldType :> string)
|
|
310
|
+
| Enum(_) => `${(Text: Postgres.columnType :> string)}[]::${pgFieldType}`
|
|
311
|
+
| Boolean => `${(Integer: Postgres.columnType :> string)}[]::${pgFieldType}`
|
|
312
|
+
| _ => pgFieldType
|
|
249
313
|
}
|
|
250
|
-
| DerivedFrom(_) => (Text :> string)
|
|
251
|
-
}
|
|
314
|
+
| DerivedFrom(_) => (Text: Postgres.columnType :> string) ++ "[]"
|
|
315
|
+
},
|
|
252
316
|
)
|
|
253
317
|
->ignore
|
|
254
318
|
dict->Js.Dict.set(location, s.matches(schema->coerceSchema))
|
package/src/db/Table.res.js
CHANGED
|
@@ -10,6 +10,14 @@ var Belt_SetString = require("rescript/lib/js/belt_SetString.js");
|
|
|
10
10
|
var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
|
|
11
11
|
var S$RescriptSchema = require("rescript-schema/src/S.res.js");
|
|
12
12
|
|
|
13
|
+
function makeEnumConfig(name, variants) {
|
|
14
|
+
return {
|
|
15
|
+
name: name,
|
|
16
|
+
variants: variants,
|
|
17
|
+
schema: S$RescriptSchema.$$enum(variants)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
function mkField(fieldName, fieldType, fieldSchema, $$default, isArrayOpt, isNullableOpt, isPrimaryKeyOpt, isIndexOpt, linkedEntity) {
|
|
14
22
|
var isArray = isArrayOpt !== undefined ? isArrayOpt : false;
|
|
15
23
|
var isNullable = isNullableOpt !== undefined ? isNullableOpt : false;
|
|
@@ -66,9 +74,63 @@ function getFieldName(fieldOrDerived) {
|
|
|
66
74
|
}
|
|
67
75
|
}
|
|
68
76
|
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
function getPgFieldType(fieldType, pgSchema, isArray, isNumericArrayAsText, isNullable) {
|
|
78
|
+
var columnType;
|
|
79
|
+
if (typeof fieldType !== "object") {
|
|
80
|
+
switch (fieldType) {
|
|
81
|
+
case "String" :
|
|
82
|
+
columnType = "TEXT";
|
|
83
|
+
break;
|
|
84
|
+
case "Boolean" :
|
|
85
|
+
columnType = "BOOLEAN";
|
|
86
|
+
break;
|
|
87
|
+
case "Uint32" :
|
|
88
|
+
columnType = "BIGINT";
|
|
89
|
+
break;
|
|
90
|
+
case "Int32" :
|
|
91
|
+
columnType = "INTEGER";
|
|
92
|
+
break;
|
|
93
|
+
case "Number" :
|
|
94
|
+
columnType = "DOUBLE PRECISION";
|
|
95
|
+
break;
|
|
96
|
+
case "Serial" :
|
|
97
|
+
columnType = "SERIAL";
|
|
98
|
+
break;
|
|
99
|
+
case "Json" :
|
|
100
|
+
columnType = "JSONB";
|
|
101
|
+
break;
|
|
102
|
+
case "Date" :
|
|
103
|
+
columnType = isNullable ? "TIMESTAMP WITH TIME ZONE NULL" : "TIMESTAMP WITH TIME ZONE";
|
|
104
|
+
break;
|
|
105
|
+
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
switch (fieldType.type) {
|
|
109
|
+
case "BigInt" :
|
|
110
|
+
var precision = fieldType.precision;
|
|
111
|
+
columnType = "NUMERIC" + (
|
|
112
|
+
precision !== undefined ? "(" + String(precision) + ", 0)" : ""
|
|
113
|
+
);
|
|
114
|
+
break;
|
|
115
|
+
case "BigDecimal" :
|
|
116
|
+
var config = fieldType.config;
|
|
117
|
+
columnType = "NUMERIC" + (
|
|
118
|
+
config !== undefined ? "(" + String(config[0]) + ", " + String(config[1]) + ")" : ""
|
|
119
|
+
);
|
|
120
|
+
break;
|
|
121
|
+
case "Enum" :
|
|
122
|
+
columnType = "\"" + pgSchema + "\"." + fieldType.config.name;
|
|
123
|
+
break;
|
|
124
|
+
case "Entity" :
|
|
125
|
+
columnType = "TEXT";
|
|
126
|
+
break;
|
|
127
|
+
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
var isNumericAsText = isArray && isNumericArrayAsText;
|
|
131
|
+
var columnType$1 = columnType === "NUMERIC" && isNumericAsText ? "TEXT" : columnType;
|
|
132
|
+
return columnType$1 + (
|
|
133
|
+
isArray ? "[]" : ""
|
|
72
134
|
);
|
|
73
135
|
}
|
|
74
136
|
|
|
@@ -258,16 +320,17 @@ function toSqlParams(table, schema, pgSchema) {
|
|
|
258
320
|
var tmp;
|
|
259
321
|
if (field$1.TAG === "Field") {
|
|
260
322
|
var f = field$1._0;
|
|
261
|
-
var
|
|
262
|
-
|
|
263
|
-
|
|
323
|
+
var pgFieldType = getPgFieldType(f.fieldType, pgSchema, true, false, f.isNullable);
|
|
324
|
+
var match = f.fieldType;
|
|
325
|
+
tmp = typeof match !== "object" ? (
|
|
326
|
+
match === "Boolean" ? "INTEGER[]::" + pgFieldType : pgFieldType
|
|
264
327
|
) : (
|
|
265
|
-
|
|
328
|
+
match.type === "Enum" ? "TEXT[]::" + pgFieldType : pgFieldType
|
|
266
329
|
);
|
|
267
330
|
} else {
|
|
268
|
-
tmp = "TEXT";
|
|
331
|
+
tmp = "TEXT[]";
|
|
269
332
|
}
|
|
270
|
-
arrayFieldTypes.push(tmp
|
|
333
|
+
arrayFieldTypes.push(tmp);
|
|
271
334
|
dict[$$location] = s.m(coerceSchema(param.schema));
|
|
272
335
|
}));
|
|
273
336
|
return dict;
|
|
@@ -303,13 +366,17 @@ function getCompositeIndices(table) {
|
|
|
303
366
|
}));
|
|
304
367
|
}
|
|
305
368
|
|
|
369
|
+
var idFieldName = "id";
|
|
370
|
+
|
|
371
|
+
exports.makeEnumConfig = makeEnumConfig;
|
|
306
372
|
exports.mkField = mkField;
|
|
307
373
|
exports.mkDerivedFromField = mkDerivedFromField;
|
|
308
374
|
exports.getUserDefinedFieldName = getUserDefinedFieldName;
|
|
309
375
|
exports.isLinkedEntityField = isLinkedEntityField;
|
|
310
376
|
exports.getDbFieldName = getDbFieldName;
|
|
311
377
|
exports.getFieldName = getFieldName;
|
|
312
|
-
exports.
|
|
378
|
+
exports.idFieldName = idFieldName;
|
|
379
|
+
exports.getPgFieldType = getPgFieldType;
|
|
313
380
|
exports.mkTable = mkTable;
|
|
314
381
|
exports.getPrimaryKeyFieldNames = getPrimaryKeyFieldNames;
|
|
315
382
|
exports.getFields = getFields;
|