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.
@@ -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", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, true, undefined, undefined),
39
- Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
40
- Table.mkField("registering_event_block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
41
- Table.mkField("registering_event_log_index", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
42
- Table.mkField("registering_event_block_timestamp", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
43
- Table.mkField("registering_event_contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
44
- Table.mkField("registering_event_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
45
- Table.mkField("registering_event_src_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
46
- Table.mkField("contract_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
47
- Table.mkField("contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
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", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
89
- Table.mkField("start_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
90
- Table.mkField("end_block", "INTEGER", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
91
- Table.mkField("max_reorg_depth", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
92
- Table.mkField("buffer_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
93
- Table.mkField("source_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
94
- Table.mkField("first_event_block", "INTEGER", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, undefined, undefined, undefined),
95
- Table.mkField("ready_at", "TIMESTAMP WITH TIME ZONE NULL", S$RescriptSchema.$$null(Utils.Schema.dbDate), undefined, undefined, true, undefined, undefined, undefined),
96
- Table.mkField("events_processed", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
97
- Table.mkField("_is_hyper_sync", "BOOLEAN", S$RescriptSchema.bool, undefined, undefined, undefined, undefined, undefined, undefined),
98
- Table.mkField("progress_block", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
99
- Table.mkField("_num_batches_fetched", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
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", "SERIAL", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
235
- Table.mkField("envio_version", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
236
- Table.mkField("config_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
237
- Table.mkField("schema_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
238
- Table.mkField("handler_files_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
239
- Table.mkField("abi_files_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined)
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", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined),
248
- Table.mkField("chain_id", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
249
- Table.mkField("block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
250
- Table.mkField("block_hash", "TEXT", S$RescriptSchema.$$null(S$RescriptSchema.string), undefined, undefined, true, undefined, undefined, undefined),
251
- Table.mkField("events_processed", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined)
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", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
343
- Table.mkField("event_id", "NUMERIC", S$RescriptSchema.bigint, undefined, undefined, undefined, undefined, undefined, undefined),
344
- Table.mkField("event_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
345
- Table.mkField("contract_name", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
346
- Table.mkField("block_number", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
347
- Table.mkField("log_index", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
348
- Table.mkField("src_address", "TEXT", Address.schema, undefined, undefined, undefined, undefined, undefined, undefined),
349
- Table.mkField("block_hash", "TEXT", S$RescriptSchema.string, undefined, undefined, undefined, undefined, undefined, undefined),
350
- Table.mkField("block_timestamp", "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, undefined, undefined, undefined),
351
- Table.mkField("block_fields", "JSONB", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
352
- Table.mkField("transaction_fields", "JSONB", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
353
- Table.mkField("params", "JSONB", S$RescriptSchema.json(false), undefined, undefined, undefined, undefined, undefined, undefined),
354
- Table.mkField("serial", "SERIAL", S$RescriptSchema.$$null(S$RescriptSchema.$$int), undefined, undefined, true, true, undefined, undefined)
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
- @unboxed
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
- | @as("INTEGER") Integer
8
- | @as("BIGINT") BigInt
9
- | @as("BOOLEAN") Boolean
10
- | @as("NUMERIC") Numeric
11
- | @as("DOUBLE PRECISION") DoublePrecision
12
- | @as("TEXT") Text
13
- | @as("SERIAL") Serial
14
- | @as("JSONB") JsonB
15
- | @as("TIMESTAMP WITH TIME ZONE") Timestamp
16
- | @as("TIMESTAMP") TimestampWithoutTimezone
17
- | @as("TIMESTAMP WITH TIME ZONE NULL") TimestampWithNullTimezone
18
- | Custom(string)
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 getFieldType = (field: field) => {
88
- (field.fieldType :> string) ++ (field.isArray ? "[]" : "")
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
- // The case for `BigDecimal! @config(precision: 10, scale: 8)`
245
- | Custom(fieldType) if fieldType->Js.String2.startsWith("NUMERIC(") => fieldType
246
- | Custom(fieldType) => `${(Text :> string)}[]::"${pgSchema}".${(fieldType :> string)}`
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))
@@ -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 getFieldType(field) {
70
- return field.fieldType + (
71
- field.isArray ? "[]" : ""
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 fieldType = f.fieldType;
262
- tmp = fieldType === "TIMESTAMP" || fieldType === "TIMESTAMP WITH TIME ZONE" || fieldType === "JSONB" || fieldType === "SERIAL" || fieldType === "TEXT" || fieldType === "DOUBLE PRECISION" || fieldType === "NUMERIC" || fieldType === "BOOLEAN" || fieldType === "BIGINT" || fieldType === "INTEGER" || fieldType === "TIMESTAMP WITH TIME ZONE NULL" ? (
263
- fieldType === "BOOLEAN" ? "INTEGER[]::" + f.fieldType : fieldType
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
- fieldType.startsWith("NUMERIC(") ? fieldType : "TEXT[]::\"" + pgSchema + "\"." + fieldType
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.getFieldType = getFieldType;
378
+ exports.idFieldName = idFieldName;
379
+ exports.getPgFieldType = getPgFieldType;
313
380
  exports.mkTable = mkTable;
314
381
  exports.getPrimaryKeyFieldNames = getPrimaryKeyFieldNames;
315
382
  exports.getFields = getFields;