prostgles-server 4.2.328 → 4.2.329
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTablesForSchemaPostgresSQL.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AAInE,eAAO,MAAM,eAAe,YAAY,oBAAoB,CAAC,cAAc,CAAC;;;CAW3E,CAAC;AAIF,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC,EACjD,YAAY,EAAE,oBAAoB,CAAC,cAAc,CAAC,GACjD,OAAO,CAAC;IACT,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC,
|
|
1
|
+
{"version":3,"file":"getTablesForSchemaPostgresSQL.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AAInE,eAAO,MAAM,eAAe,YAAY,oBAAoB,CAAC,cAAc,CAAC;;;CAW3E,CAAC;AAIF,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,QAAQ,CAAC,EACjD,YAAY,EAAE,oBAAoB,CAAC,cAAc,CAAC,GACjD,OAAO,CAAC;IACT,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC,CA+UD"}
|
|
@@ -60,8 +60,8 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
60
60
|
if (badFkey) {
|
|
61
61
|
throw `Invalid table column schema. Null or empty fcols for ${JSON.stringify(fkeys)}`;
|
|
62
62
|
}
|
|
63
|
-
const getTVColumns = await (0, util_1.
|
|
64
|
-
const
|
|
63
|
+
const getTVColumns = await (0, util_1.tryCatchV2)(async () => {
|
|
64
|
+
const columnsWithNullProps = await t.manyOrNone(`
|
|
65
65
|
SELECT
|
|
66
66
|
table_oid
|
|
67
67
|
, ccc.column_name as name ,
|
|
@@ -77,6 +77,9 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
77
77
|
ccc.is_generated,
|
|
78
78
|
null as references,
|
|
79
79
|
ccc.has_default,
|
|
80
|
+
ccc.character_maximum_length,
|
|
81
|
+
ccc.numeric_precision,
|
|
82
|
+
ccc.numeric_scale,
|
|
80
83
|
ccc.column_default
|
|
81
84
|
, COALESCE(ccc.privileges, '[]'::JSON) as privileges
|
|
82
85
|
FROM (
|
|
@@ -89,6 +92,9 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
89
92
|
, c.ordinal_position
|
|
90
93
|
, COALESCE(c.column_default IS NOT NULL OR c.identity_generation = 'ALWAYS', false) as has_default
|
|
91
94
|
, c.column_default
|
|
95
|
+
, c.character_maximum_length
|
|
96
|
+
, c.numeric_precision
|
|
97
|
+
, c.numeric_scale
|
|
92
98
|
, c.is_nullable
|
|
93
99
|
, CASE WHEN c.is_generated = 'ALWAYS' THEN true ELSE false END as is_generated
|
|
94
100
|
/* generated always and view columns cannot be updated */
|
|
@@ -123,13 +129,21 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
123
129
|
WHERE table_schema ${sql}
|
|
124
130
|
ORDER BY table_oid, ordinal_position
|
|
125
131
|
`, { schemaNames });
|
|
132
|
+
const columns = columnsWithNullProps.map((col) => {
|
|
133
|
+
["character_maximum_length", "numeric_precision", "numeric_scale"].forEach((key) => {
|
|
134
|
+
if (col[key] === null || col[key] === undefined) {
|
|
135
|
+
delete col[key];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return col;
|
|
139
|
+
});
|
|
126
140
|
return { columns };
|
|
127
141
|
});
|
|
128
|
-
if (getTVColumns.error
|
|
142
|
+
if (getTVColumns.error) {
|
|
129
143
|
throw getTVColumns.error ?? "No columns";
|
|
130
144
|
}
|
|
131
|
-
const getViewParentTables = await (0, util_1.
|
|
132
|
-
const parent_tables = await t.
|
|
145
|
+
const getViewParentTables = await (0, util_1.tryCatchV2)(async () => {
|
|
146
|
+
const parent_tables = await t.manyOrNone(`
|
|
133
147
|
SELECT cl_r.oid, cl_r.relname as view_name, array_agg(DISTINCT cl_d.relname) AS table_names
|
|
134
148
|
FROM pg_rewrite AS r
|
|
135
149
|
JOIN pg_class AS cl_r ON r.ev_class = cl_r.oid
|
|
@@ -141,7 +155,7 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
141
155
|
`);
|
|
142
156
|
return { parent_tables };
|
|
143
157
|
});
|
|
144
|
-
const getTablesAndViews = await (0, util_1.
|
|
158
|
+
const getTablesAndViews = await (0, util_1.tryCatchV2)(async () => {
|
|
145
159
|
const query = `
|
|
146
160
|
SELECT
|
|
147
161
|
jsonb_build_object(
|
|
@@ -176,33 +190,34 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
176
190
|
ORDER BY schema, name
|
|
177
191
|
`;
|
|
178
192
|
const tablesAndViews = (await t.any(query, { schemaNames })).map((table) => {
|
|
179
|
-
table.columns = (0, utils_1.clone)(getTVColumns.columns)
|
|
193
|
+
table.columns = (0, utils_1.clone)(getTVColumns.data.columns)
|
|
180
194
|
.filter((c) => c.table_oid === table.oid)
|
|
181
195
|
.map((c) => (0, util_1.omitKeys)(c, ["table_oid"]));
|
|
182
196
|
table.parent_tables =
|
|
183
|
-
getViewParentTables.parent_tables
|
|
197
|
+
getViewParentTables.data?.parent_tables.find((vr) => vr.oid === table.oid)?.table_names ??
|
|
198
|
+
[];
|
|
184
199
|
return table;
|
|
185
200
|
});
|
|
186
201
|
return { tablesAndViews };
|
|
187
202
|
});
|
|
188
|
-
if (getTablesAndViews.error
|
|
203
|
+
if (getTablesAndViews.error) {
|
|
189
204
|
throw getTablesAndViews.error ?? "No tablesAndViews";
|
|
190
205
|
}
|
|
191
|
-
const getMaterialViewsReq = await (0, util_1.
|
|
206
|
+
const getMaterialViewsReq = await (0, util_1.tryCatchV2)(async () => {
|
|
192
207
|
const materialViews = await (0, getMaterialViews_1.getMaterialViews)(t, schemaFilter);
|
|
193
208
|
return { materialViews };
|
|
194
209
|
});
|
|
195
|
-
if (getMaterialViewsReq.error
|
|
210
|
+
if (getMaterialViewsReq.error) {
|
|
196
211
|
throw getMaterialViewsReq.error ?? "No materialViews";
|
|
197
212
|
}
|
|
198
|
-
const getHyperTablesReq = await (0, util_1.
|
|
213
|
+
const getHyperTablesReq = await (0, util_1.tryCatchV2)(async () => {
|
|
199
214
|
const hyperTables = await getHyperTables(t);
|
|
200
215
|
return { hyperTables };
|
|
201
216
|
});
|
|
202
217
|
if (getHyperTablesReq.error) {
|
|
203
218
|
console.error(getHyperTablesReq.error);
|
|
204
219
|
}
|
|
205
|
-
let result = getTablesAndViews.tablesAndViews.concat(getMaterialViewsReq.materialViews);
|
|
220
|
+
let result = getTablesAndViews.data.tablesAndViews.concat(getMaterialViewsReq.data.materialViews);
|
|
206
221
|
result = await Promise.all(result.map(async (table) => {
|
|
207
222
|
table.name = table.escaped_identifier;
|
|
208
223
|
/** This is used to prevent bug of table schema not sent */
|
|
@@ -263,10 +278,11 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
263
278
|
table.columns = table.columns.map((col) => {
|
|
264
279
|
if (col.has_default) {
|
|
265
280
|
/** Hide pkey default value */
|
|
281
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
266
282
|
col.column_default =
|
|
267
283
|
(col.udt_name !== "uuid" &&
|
|
268
284
|
!col.is_pkey &&
|
|
269
|
-
|
|
285
|
+
!`${col.column_default}`.startsWith("nextval(")) ?
|
|
270
286
|
col.column_default
|
|
271
287
|
: null;
|
|
272
288
|
}
|
|
@@ -276,7 +292,7 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
276
292
|
}
|
|
277
293
|
return col;
|
|
278
294
|
});
|
|
279
|
-
table.isHyperTable = getHyperTablesReq.hyperTables?.includes(table.name);
|
|
295
|
+
table.isHyperTable = getHyperTablesReq.data.hyperTables?.includes(table.name);
|
|
280
296
|
table.uniqueColumnGroups = uniqueColsReq.data
|
|
281
297
|
?.filter((r) => r.table_name === table.name && r.table_schema === table.schema)
|
|
282
298
|
.map((r) => r.column_names);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SQLResult, asName } from "prostgles-types";
|
|
2
|
-
import { omitKeys,
|
|
2
|
+
import { omitKeys, tryCatchV2 } from "prostgles-types/dist/util";
|
|
3
3
|
import { DboBuilder } from "../DboBuilder/DboBuilder";
|
|
4
4
|
import { DBorTx } from "../Prostgles";
|
|
5
5
|
import { ProstglesInitOptions } from "../ProstglesTypes";
|
|
@@ -83,8 +83,8 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
83
83
|
throw `Invalid table column schema. Null or empty fcols for ${JSON.stringify(fkeys)}`;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
const getTVColumns = await
|
|
87
|
-
const
|
|
86
|
+
const getTVColumns = await tryCatchV2(async () => {
|
|
87
|
+
const columnsWithNullProps = await t.manyOrNone<TableSchemaColumn & { table_oid: number }>(
|
|
88
88
|
`
|
|
89
89
|
SELECT
|
|
90
90
|
table_oid
|
|
@@ -101,6 +101,9 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
101
101
|
ccc.is_generated,
|
|
102
102
|
null as references,
|
|
103
103
|
ccc.has_default,
|
|
104
|
+
ccc.character_maximum_length,
|
|
105
|
+
ccc.numeric_precision,
|
|
106
|
+
ccc.numeric_scale,
|
|
104
107
|
ccc.column_default
|
|
105
108
|
, COALESCE(ccc.privileges, '[]'::JSON) as privileges
|
|
106
109
|
FROM (
|
|
@@ -113,6 +116,9 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
113
116
|
, c.ordinal_position
|
|
114
117
|
, COALESCE(c.column_default IS NOT NULL OR c.identity_generation = 'ALWAYS', false) as has_default
|
|
115
118
|
, c.column_default
|
|
119
|
+
, c.character_maximum_length
|
|
120
|
+
, c.numeric_precision
|
|
121
|
+
, c.numeric_scale
|
|
116
122
|
, c.is_nullable
|
|
117
123
|
, CASE WHEN c.is_generated = 'ALWAYS' THEN true ELSE false END as is_generated
|
|
118
124
|
/* generated always and view columns cannot be updated */
|
|
@@ -150,14 +156,24 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
150
156
|
{ schemaNames }
|
|
151
157
|
);
|
|
152
158
|
|
|
159
|
+
const columns = columnsWithNullProps.map((col) => {
|
|
160
|
+
(["character_maximum_length", "numeric_precision", "numeric_scale"] as const).forEach(
|
|
161
|
+
(key) => {
|
|
162
|
+
if (col[key] === null || col[key] === undefined) {
|
|
163
|
+
delete col[key];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
return col;
|
|
168
|
+
});
|
|
153
169
|
return { columns };
|
|
154
170
|
});
|
|
155
|
-
if (getTVColumns.error
|
|
171
|
+
if (getTVColumns.error) {
|
|
156
172
|
throw getTVColumns.error ?? "No columns";
|
|
157
173
|
}
|
|
158
174
|
|
|
159
|
-
const getViewParentTables = await
|
|
160
|
-
const parent_tables
|
|
175
|
+
const getViewParentTables = await tryCatchV2(async () => {
|
|
176
|
+
const parent_tables = await t.manyOrNone<{ oid: number; table_names: string[] }>(`
|
|
161
177
|
SELECT cl_r.oid, cl_r.relname as view_name, array_agg(DISTINCT cl_d.relname) AS table_names
|
|
162
178
|
FROM pg_rewrite AS r
|
|
163
179
|
JOIN pg_class AS cl_r ON r.ev_class = cl_r.oid
|
|
@@ -169,7 +185,7 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
169
185
|
`);
|
|
170
186
|
return { parent_tables };
|
|
171
187
|
});
|
|
172
|
-
const getTablesAndViews = await
|
|
188
|
+
const getTablesAndViews = await tryCatchV2(async () => {
|
|
173
189
|
const query = `
|
|
174
190
|
SELECT
|
|
175
191
|
jsonb_build_object(
|
|
@@ -204,28 +220,29 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
204
220
|
ORDER BY schema, name
|
|
205
221
|
`;
|
|
206
222
|
const tablesAndViews = (await t.any(query, { schemaNames })).map((table: TableSchema) => {
|
|
207
|
-
table.columns = clone(getTVColumns.columns)
|
|
223
|
+
table.columns = clone(getTVColumns.data!.columns)
|
|
208
224
|
.filter((c) => c.table_oid === table.oid)
|
|
209
225
|
.map((c) => omitKeys(c, ["table_oid"]));
|
|
210
226
|
table.parent_tables =
|
|
211
|
-
getViewParentTables.parent_tables
|
|
227
|
+
getViewParentTables.data?.parent_tables.find((vr) => vr.oid === table.oid)?.table_names ??
|
|
228
|
+
[];
|
|
212
229
|
return table;
|
|
213
230
|
});
|
|
214
231
|
return { tablesAndViews };
|
|
215
232
|
});
|
|
216
|
-
if (getTablesAndViews.error
|
|
233
|
+
if (getTablesAndViews.error) {
|
|
217
234
|
throw getTablesAndViews.error ?? "No tablesAndViews";
|
|
218
235
|
}
|
|
219
236
|
|
|
220
|
-
const getMaterialViewsReq = await
|
|
237
|
+
const getMaterialViewsReq = await tryCatchV2(async () => {
|
|
221
238
|
const materialViews = await getMaterialViews(t, schemaFilter);
|
|
222
239
|
return { materialViews };
|
|
223
240
|
});
|
|
224
|
-
if (getMaterialViewsReq.error
|
|
241
|
+
if (getMaterialViewsReq.error) {
|
|
225
242
|
throw getMaterialViewsReq.error ?? "No materialViews";
|
|
226
243
|
}
|
|
227
244
|
|
|
228
|
-
const getHyperTablesReq = await
|
|
245
|
+
const getHyperTablesReq = await tryCatchV2(async () => {
|
|
229
246
|
const hyperTables = await getHyperTables(t);
|
|
230
247
|
return { hyperTables };
|
|
231
248
|
});
|
|
@@ -233,7 +250,9 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
233
250
|
console.error(getHyperTablesReq.error);
|
|
234
251
|
}
|
|
235
252
|
|
|
236
|
-
let result = getTablesAndViews.tablesAndViews.concat(
|
|
253
|
+
let result = getTablesAndViews.data!.tablesAndViews.concat(
|
|
254
|
+
getMaterialViewsReq.data!.materialViews
|
|
255
|
+
);
|
|
237
256
|
result = await Promise.all(
|
|
238
257
|
result.map(async (table) => {
|
|
239
258
|
table.name = table.escaped_identifier;
|
|
@@ -303,11 +322,12 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
303
322
|
table.columns = table.columns.map((col) => {
|
|
304
323
|
if (col.has_default) {
|
|
305
324
|
/** Hide pkey default value */
|
|
325
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
306
326
|
col.column_default =
|
|
307
327
|
(
|
|
308
328
|
col.udt_name !== "uuid" &&
|
|
309
329
|
!col.is_pkey &&
|
|
310
|
-
|
|
330
|
+
!`${col.column_default}`.startsWith("nextval(")
|
|
311
331
|
) ?
|
|
312
332
|
col.column_default
|
|
313
333
|
: null;
|
|
@@ -320,7 +340,7 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
320
340
|
|
|
321
341
|
return col;
|
|
322
342
|
});
|
|
323
|
-
table.isHyperTable = getHyperTablesReq.hyperTables?.includes(table.name);
|
|
343
|
+
table.isHyperTable = getHyperTablesReq.data!.hyperTables?.includes(table.name);
|
|
324
344
|
|
|
325
345
|
table.uniqueColumnGroups = uniqueColsReq.data
|
|
326
346
|
?.filter((r) => r.table_name === table.name && r.table_schema === table.schema)
|