prostgles-server 4.2.335 → 4.2.336
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,CAqWD"}
|
|
@@ -217,8 +217,8 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
217
217
|
if (getHyperTablesReq.error) {
|
|
218
218
|
console.error(getHyperTablesReq.error);
|
|
219
219
|
}
|
|
220
|
-
let
|
|
221
|
-
|
|
220
|
+
let tableSchemaList = getTablesAndViews.data.tablesAndViews.concat(getMaterialViewsReq.data.materialViews);
|
|
221
|
+
tableSchemaList = await Promise.all(tableSchemaList.map(async (table) => {
|
|
222
222
|
table.name = table.escaped_identifier;
|
|
223
223
|
/** This is used to prevent bug of table schema not sent */
|
|
224
224
|
const allowAllIfNoColumns = !table.columns.length ? true : undefined;
|
|
@@ -240,35 +240,52 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
240
240
|
return c;
|
|
241
241
|
});
|
|
242
242
|
/** Get view reference cols (based on parent table) */
|
|
243
|
-
|
|
243
|
+
const viewReferenceColumns = [];
|
|
244
244
|
if (table.is_view && table.view_definition) {
|
|
245
245
|
try {
|
|
246
246
|
const view_definition = table.view_definition.endsWith(";") ?
|
|
247
247
|
table.view_definition.slice(0, -1)
|
|
248
248
|
: table.view_definition;
|
|
249
|
-
const { fields } = (await runSQL(`SELECT * FROM \n ( ${view_definition} \n) t LIMIT 0`, {}, {}, undefined));
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const d = {
|
|
260
|
-
name: ff.columnName,
|
|
261
|
-
references: [
|
|
262
|
-
{
|
|
263
|
-
ftable: ft.name,
|
|
264
|
-
fcols: [ff.columnName],
|
|
265
|
-
cols: [ff.name],
|
|
266
|
-
},
|
|
267
|
-
],
|
|
249
|
+
const { fields: viewFieldsWithInfo } = (await runSQL(`SELECT * FROM \n ( ${view_definition} \n) t LIMIT 0`, {}, {}, undefined));
|
|
250
|
+
const viewTables = tableSchemaList.filter((r) => viewFieldsWithInfo.some((f) => f.tableID === r.oid));
|
|
251
|
+
viewTables.forEach((viewTable) => {
|
|
252
|
+
const viewTableColumnsUsed = viewFieldsWithInfo
|
|
253
|
+
.map(({ columnName, ...col }) => {
|
|
254
|
+
if (!columnName || col.tableID !== viewTable.oid)
|
|
255
|
+
return;
|
|
256
|
+
return {
|
|
257
|
+
...col,
|
|
258
|
+
columnName,
|
|
268
259
|
};
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
260
|
+
})
|
|
261
|
+
.filter(util_1.isDefined);
|
|
262
|
+
const viewTablePKeys = viewTable.columns.filter((c) => c.is_pkey);
|
|
263
|
+
const viewTableColumnsUsedPKeys = viewTableColumnsUsed.filter((ff) => viewTablePKeys.some((p) => p.name === ff.columnName));
|
|
264
|
+
const addReferences = (referenceCols) => {
|
|
265
|
+
const reference = {
|
|
266
|
+
ftable: viewTable.name,
|
|
267
|
+
cols: [],
|
|
268
|
+
fcols: [],
|
|
269
|
+
};
|
|
270
|
+
referenceCols.forEach(({ name: viewColumnName, columnName: tableColumnName }) => {
|
|
271
|
+
reference.cols.push(viewColumnName);
|
|
272
|
+
reference.fcols.push(tableColumnName);
|
|
273
|
+
});
|
|
274
|
+
reference.cols.forEach((colName) => {
|
|
275
|
+
viewReferenceColumns.push({
|
|
276
|
+
name: colName,
|
|
277
|
+
references: [reference],
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
};
|
|
281
|
+
const canTransferPKeys = viewTablePKeys.length && viewTableColumnsUsedPKeys.length === viewTablePKeys.length;
|
|
282
|
+
if (canTransferPKeys) {
|
|
283
|
+
addReferences(viewTableColumnsUsedPKeys);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
const comparableColumns = viewTableColumnsUsed.filter((ff) => !["json", "jsonb", "xml"].includes(ff.udt_name));
|
|
287
|
+
addReferences(comparableColumns);
|
|
288
|
+
}
|
|
272
289
|
});
|
|
273
290
|
}
|
|
274
291
|
catch (err) {
|
|
@@ -286,7 +303,7 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
286
303
|
col.column_default
|
|
287
304
|
: null;
|
|
288
305
|
}
|
|
289
|
-
const viewFCol =
|
|
306
|
+
const viewFCol = viewReferenceColumns.find((fc) => fc.name === col.name);
|
|
290
307
|
if (viewFCol) {
|
|
291
308
|
col.references = viewFCol.references;
|
|
292
309
|
}
|
|
@@ -299,7 +316,7 @@ async function getTablesForSchemaPostgresSQL({ db, runSQL }, schemaFilter) {
|
|
|
299
316
|
return table;
|
|
300
317
|
}));
|
|
301
318
|
const res = {
|
|
302
|
-
result,
|
|
319
|
+
result: tableSchemaList,
|
|
303
320
|
durations: {
|
|
304
321
|
matv: getMaterialViewsReq.duration,
|
|
305
322
|
columns: getTVColumns.duration,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SQLResult, asName } from "prostgles-types";
|
|
2
|
-
import { omitKeys, tryCatchV2 } from "prostgles-types/dist/util";
|
|
1
|
+
import { SQLResult, asName, type ValidatedColumnInfo } from "prostgles-types";
|
|
2
|
+
import { isDefined, 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";
|
|
@@ -250,11 +250,11 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
250
250
|
console.error(getHyperTablesReq.error);
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
-
let
|
|
253
|
+
let tableSchemaList = getTablesAndViews.data!.tablesAndViews.concat(
|
|
254
254
|
getMaterialViewsReq.data!.materialViews
|
|
255
255
|
);
|
|
256
|
-
|
|
257
|
-
|
|
256
|
+
tableSchemaList = await Promise.all(
|
|
257
|
+
tableSchemaList.map(async (table) => {
|
|
258
258
|
table.name = table.escaped_identifier;
|
|
259
259
|
/** This is used to prevent bug of table schema not sent */
|
|
260
260
|
const allowAllIfNoColumns = !table.columns.length ? true : undefined;
|
|
@@ -277,42 +277,64 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
277
277
|
});
|
|
278
278
|
|
|
279
279
|
/** Get view reference cols (based on parent table) */
|
|
280
|
-
|
|
280
|
+
const viewReferenceColumns: Pick<TableSchemaColumn, "name" | "references">[] = [];
|
|
281
281
|
if (table.is_view && table.view_definition) {
|
|
282
282
|
try {
|
|
283
283
|
const view_definition =
|
|
284
284
|
table.view_definition.endsWith(";") ?
|
|
285
285
|
table.view_definition.slice(0, -1)
|
|
286
286
|
: table.view_definition;
|
|
287
|
-
const { fields } = (await runSQL(
|
|
287
|
+
const { fields: viewFieldsWithInfo } = (await runSQL(
|
|
288
288
|
`SELECT * FROM \n ( ${view_definition} \n) t LIMIT 0`,
|
|
289
289
|
{},
|
|
290
290
|
{},
|
|
291
291
|
undefined
|
|
292
292
|
)) as SQLResult<undefined>;
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
293
|
+
const viewTables = tableSchemaList.filter((r) =>
|
|
294
|
+
viewFieldsWithInfo.some((f) => f.tableID === r.oid)
|
|
295
|
+
);
|
|
296
|
+
viewTables.forEach((viewTable) => {
|
|
297
|
+
const viewTableColumnsUsed = viewFieldsWithInfo
|
|
298
|
+
.map(({ columnName, ...col }) => {
|
|
299
|
+
if (!columnName || col.tableID !== viewTable.oid) return;
|
|
300
|
+
return {
|
|
301
|
+
...col,
|
|
302
|
+
columnName,
|
|
303
|
+
};
|
|
304
|
+
})
|
|
305
|
+
.filter(isDefined);
|
|
306
|
+
const viewTablePKeys = viewTable.columns.filter((c) => c.is_pkey);
|
|
307
|
+
const viewTableColumnsUsedPKeys = viewTableColumnsUsed.filter((ff) =>
|
|
308
|
+
viewTablePKeys.some((p) => p.name === ff.columnName)
|
|
309
|
+
);
|
|
310
|
+
|
|
311
|
+
const addReferences = (referenceCols: typeof viewTableColumnsUsedPKeys) => {
|
|
312
|
+
const reference: { ftable: string; fcols: string[]; cols: string[] } = {
|
|
313
|
+
ftable: viewTable.name,
|
|
314
|
+
cols: [],
|
|
315
|
+
fcols: [],
|
|
312
316
|
};
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
317
|
+
referenceCols.forEach(({ name: viewColumnName, columnName: tableColumnName }) => {
|
|
318
|
+
reference.cols.push(viewColumnName);
|
|
319
|
+
reference.fcols.push(tableColumnName);
|
|
320
|
+
});
|
|
321
|
+
reference.cols.forEach((colName) => {
|
|
322
|
+
viewReferenceColumns.push({
|
|
323
|
+
name: colName,
|
|
324
|
+
references: [reference],
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
};
|
|
328
|
+
const canTransferPKeys =
|
|
329
|
+
viewTablePKeys.length && viewTableColumnsUsedPKeys.length === viewTablePKeys.length;
|
|
330
|
+
if (canTransferPKeys) {
|
|
331
|
+
addReferences(viewTableColumnsUsedPKeys);
|
|
332
|
+
} else {
|
|
333
|
+
const comparableColumns = viewTableColumnsUsed.filter(
|
|
334
|
+
(ff) => !["json", "jsonb", "xml"].includes(ff.udt_name)
|
|
335
|
+
);
|
|
336
|
+
addReferences(comparableColumns);
|
|
337
|
+
}
|
|
316
338
|
});
|
|
317
339
|
} catch (err) {
|
|
318
340
|
console.error(err);
|
|
@@ -333,7 +355,7 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
333
355
|
: null;
|
|
334
356
|
}
|
|
335
357
|
|
|
336
|
-
const viewFCol =
|
|
358
|
+
const viewFCol = viewReferenceColumns.find((fc) => fc.name === col.name);
|
|
337
359
|
if (viewFCol) {
|
|
338
360
|
col.references = viewFCol.references;
|
|
339
361
|
}
|
|
@@ -351,7 +373,7 @@ export async function getTablesForSchemaPostgresSQL(
|
|
|
351
373
|
);
|
|
352
374
|
|
|
353
375
|
const res = {
|
|
354
|
-
result,
|
|
376
|
+
result: tableSchemaList,
|
|
355
377
|
durations: {
|
|
356
378
|
matv: getMaterialViewsReq.duration,
|
|
357
379
|
columns: getTVColumns.duration,
|