prostgles-server 4.0.39 → 4.0.41
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/dist/DboBuilder/getColumns.js +2 -2
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts +3 -0
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -0
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +207 -0
- package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -0
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +2 -199
- package/dist/DboBuilder.js.map +1 -1
- package/lib/DboBuilder/getColumns.js +2 -2
- package/lib/DboBuilder/getColumns.ts +2 -2
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.d.ts +3 -0
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -0
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.js +206 -0
- package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +212 -0
- package/lib/DboBuilder.d.ts.map +1 -1
- package/lib/DboBuilder.js +2 -199
- package/lib/DboBuilder.ts +1 -206
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/client/package-lock.json +15 -15
- package/tests/client/package.json +1 -1
- package/tests/isomorphic_queries.d.ts.map +1 -1
- package/tests/isomorphic_queries.js +4 -0
- package/tests/isomorphic_queries.ts +4 -0
- package/tests/server/package-lock.json +3 -3
|
@@ -54,11 +54,11 @@ async function getColumns(lang, params, _param3, tableRules, localParams) {
|
|
|
54
54
|
...c,
|
|
55
55
|
label,
|
|
56
56
|
tsDataType: (0, DboBuilder_1.postgresToTsType)(c.udt_name),
|
|
57
|
-
insert: insert && Boolean(p.insert?.fields?.includes(c.name)) && tableRules?.insert?.forcedData?.[c.name] === undefined,
|
|
57
|
+
insert: insert && Boolean(p.insert?.fields?.includes(c.name)) && tableRules?.insert?.forcedData?.[c.name] === undefined && c.is_updatable,
|
|
58
58
|
select: select && Boolean(p.select?.fields?.includes(c.name)),
|
|
59
59
|
orderBy: select && Boolean(p.select?.fields && p.select.orderByFields.includes(c.name)) && !nonOrderableUD_Types.includes(c.udt_name),
|
|
60
60
|
filter: Boolean(p.select?.filterFields?.includes(c.name)),
|
|
61
|
-
update: update && Boolean(p.update?.fields?.includes(c.name)) && tableRules?.update?.forcedData?.[c.name] === undefined,
|
|
61
|
+
update: update && Boolean(p.update?.fields?.includes(c.name)) && tableRules?.update?.forcedData?.[c.name] === undefined && c.is_updatable,
|
|
62
62
|
delete: _delete && Boolean(p.delete && p.delete.filterFields && p.delete.filterFields.includes(c.name)),
|
|
63
63
|
...(prostgles?.tableConfigurator?.getColInfo({ table: this.name, col: c.name, lang }) || {}),
|
|
64
64
|
...(fileConfig && { file: fileConfig })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getColumns.js","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"getColumns.js","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTablesForSchemaPostgresSQL.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAqB,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3E,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAgNzH"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTablesForSchemaPostgresSQL = void 0;
|
|
4
|
+
const PubSubManager_1 = require("../PubSubManager/PubSubManager");
|
|
5
|
+
async function getTablesForSchemaPostgresSQL({ db, runSQL }, schema = "public") {
|
|
6
|
+
const query = `
|
|
7
|
+
SELECT
|
|
8
|
+
jsonb_build_object(
|
|
9
|
+
'insert', EXISTS (
|
|
10
|
+
SELECT 1
|
|
11
|
+
FROM information_schema.role_table_grants rg
|
|
12
|
+
WHERE rg.table_name = t.table_name
|
|
13
|
+
AND rg.privilege_type = 'INSERT'
|
|
14
|
+
),
|
|
15
|
+
'select', EXISTS (
|
|
16
|
+
SELECT 1
|
|
17
|
+
FROM information_schema.role_table_grants rg
|
|
18
|
+
WHERE rg.table_name = t.table_name
|
|
19
|
+
AND rg.privilege_type = 'SELECT'
|
|
20
|
+
),
|
|
21
|
+
'update', EXISTS (
|
|
22
|
+
SELECT 1
|
|
23
|
+
FROM information_schema.role_table_grants rg
|
|
24
|
+
WHERE rg.table_name = t.table_name
|
|
25
|
+
AND rg.privilege_type = 'UPDATE'
|
|
26
|
+
),
|
|
27
|
+
'delete', EXISTS (
|
|
28
|
+
SELECT 1
|
|
29
|
+
FROM information_schema.role_table_grants rg
|
|
30
|
+
WHERE rg.table_name = t.table_name
|
|
31
|
+
AND rg.privilege_type = 'DELETE'
|
|
32
|
+
)
|
|
33
|
+
) as privileges
|
|
34
|
+
, t.table_schema as schema, t.table_name as name
|
|
35
|
+
, cc.columns
|
|
36
|
+
, cc.table_oid as oid
|
|
37
|
+
, t.is_view
|
|
38
|
+
, t.view_definition
|
|
39
|
+
, array_to_json(vr.table_names) as parent_tables
|
|
40
|
+
, obj_description(cc.table_oid::regclass) as comment
|
|
41
|
+
FROM (
|
|
42
|
+
SELECT table_name,
|
|
43
|
+
table_schema,
|
|
44
|
+
is_view,
|
|
45
|
+
CASE WHEN is_view THEN pg_get_viewdef(format('%I.%I', table_schema, table_name)::REGCLASS, true) END as view_definition
|
|
46
|
+
FROM (
|
|
47
|
+
SELECT table_name, table_schema, table_type = 'VIEW' as is_view
|
|
48
|
+
FROM information_schema.tables
|
|
49
|
+
/* TODO - add support for materialized views
|
|
50
|
+
UNION ALL
|
|
51
|
+
SELECT table_name, table_schema
|
|
52
|
+
FROM (
|
|
53
|
+
SELECT relname as table_name, nspname as table_schema, true as is_view
|
|
54
|
+
FROM pg_catalog.pg_class AS _c
|
|
55
|
+
JOIN pg_catalog.pg_namespace AS _ns
|
|
56
|
+
ON _c.relnamespace = _ns.oid
|
|
57
|
+
WHERE relkind IN ( 'm' )
|
|
58
|
+
) materialized_views
|
|
59
|
+
*/
|
|
60
|
+
) tables_matviews
|
|
61
|
+
WHERE table_schema = ${(0, PubSubManager_1.asValue)(schema)}
|
|
62
|
+
) t
|
|
63
|
+
INNER join (
|
|
64
|
+
SELECT ccc.table_oid, table_schema, table_name
|
|
65
|
+
, jsonb_agg((SELECT x FROM (
|
|
66
|
+
SELECT ccc.column_name as name,
|
|
67
|
+
ccc.data_type,
|
|
68
|
+
ccc.udt_name,
|
|
69
|
+
ccc.element_type,
|
|
70
|
+
ccc.element_udt_name,
|
|
71
|
+
ccc.is_pkey,
|
|
72
|
+
ccc.comment,
|
|
73
|
+
ccc.ordinal_position,
|
|
74
|
+
ccc.is_nullable = 'YES' as is_nullable,
|
|
75
|
+
ccc.is_updatable,
|
|
76
|
+
ccc.references,
|
|
77
|
+
ccc.has_default,
|
|
78
|
+
ccc.column_default,
|
|
79
|
+
ccc.privileges
|
|
80
|
+
) as x) ORDER BY ccc.ordinal_position ) as columns
|
|
81
|
+
FROM (
|
|
82
|
+
SELECT c.table_schema, c.table_name, c.column_name, c.data_type, c.udt_name
|
|
83
|
+
, e.data_type as element_type
|
|
84
|
+
, e.udt_name as element_udt_name
|
|
85
|
+
, col_description(format('%I.%I', c.table_schema, c.table_name)::regclass::oid, c.ordinal_position) as comment
|
|
86
|
+
--, CASE WHEN fc.ftable IS NOT NULL THEN row_to_json((SELECT t FROM (SELECT fc.ftable, fc.fcols, fc.cols) t)) END as references
|
|
87
|
+
, fc.references
|
|
88
|
+
, c.is_identity = 'YES' OR EXISTS (
|
|
89
|
+
SELECT 1
|
|
90
|
+
FROM information_schema.table_constraints as tc
|
|
91
|
+
JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
|
|
92
|
+
WHERE kcu.table_schema = c.table_schema AND kcu.table_name = c.table_name AND kcu.column_name = c.column_name AND tc.constraint_type IN ('PRIMARY KEY')
|
|
93
|
+
) as is_pkey
|
|
94
|
+
, c.ordinal_position
|
|
95
|
+
, COALESCE(c.column_default IS NOT NULL OR c.identity_generation = 'ALWAYS', false) as has_default
|
|
96
|
+
, c.column_default
|
|
97
|
+
, format('%I.%I', c.table_schema, c.table_name)::regclass::oid AS table_oid
|
|
98
|
+
, c.is_nullable
|
|
99
|
+
/* generated always and view columns cannot be updated */
|
|
100
|
+
, COALESCE(c.is_updatable, 'YES') = 'YES' AND COALESCE(c.is_generated, '') != 'ALWAYS' AND COALESCE(c.identity_generation, '') != 'ALWAYS' as is_updatable
|
|
101
|
+
, cp.privileges
|
|
102
|
+
FROM information_schema.columns c
|
|
103
|
+
LEFT JOIN (SELECT * FROM information_schema.element_types ) e
|
|
104
|
+
ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier)
|
|
105
|
+
= (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.collection_type_identifier)
|
|
106
|
+
)
|
|
107
|
+
LEFT JOIN (
|
|
108
|
+
SELECT table_schema, table_name, column_name, json_agg(row_to_json((SELECT t FROM (SELECT cpp.privilege_type, cpp.is_grantable ) t))) as privileges
|
|
109
|
+
FROM information_schema.column_privileges cpp
|
|
110
|
+
GROUP BY table_schema, table_name, column_name
|
|
111
|
+
) cp
|
|
112
|
+
ON c.table_name = cp.table_name AND c.column_name = cp.column_name
|
|
113
|
+
LEFT JOIN (
|
|
114
|
+
--SELECT *
|
|
115
|
+
SELECT "table", unnest(ft.cols) as col, jsonb_agg(row_to_json((SELECT t FROM (SELECT ftable, fcols, cols) t))) as references
|
|
116
|
+
FROM (
|
|
117
|
+
SELECT
|
|
118
|
+
(SELECT r.relname from pg_class r where r.oid = c.conrelid) as table,
|
|
119
|
+
(SELECT array_agg(attname::text) from pg_attribute
|
|
120
|
+
where attrelid = c.conrelid and ARRAY[attnum] <@ c.conkey) as cols,
|
|
121
|
+
(SELECT array_agg(attname::text) from pg_attribute
|
|
122
|
+
where attrelid = c.confrelid and ARRAY[attnum] <@ c.confkey) as fcols,
|
|
123
|
+
(SELECT r.relname from pg_class r where r.oid = c.confrelid) as ftable
|
|
124
|
+
FROM pg_constraint c
|
|
125
|
+
) ft
|
|
126
|
+
WHERE ft.table IS NOT NULL
|
|
127
|
+
AND ft.ftable IS NOT NULL
|
|
128
|
+
-- c.confrelid = 'users'::regclass::oid
|
|
129
|
+
GROUP BY "table", unnest(cols)
|
|
130
|
+
) fc
|
|
131
|
+
ON fc.table = c.table_name
|
|
132
|
+
AND c.column_name::text = fc.col
|
|
133
|
+
) ccc
|
|
134
|
+
GROUP BY table_oid, table_schema, table_name
|
|
135
|
+
) cc
|
|
136
|
+
ON t.table_name = cc.table_name
|
|
137
|
+
AND t.table_schema = cc.table_schema
|
|
138
|
+
LEFT JOIN (
|
|
139
|
+
SELECT cl_r.relname as view_name, array_agg(DISTINCT cl_d.relname) AS table_names
|
|
140
|
+
FROM pg_rewrite AS r
|
|
141
|
+
JOIN pg_class AS cl_r ON r.ev_class=cl_r.oid
|
|
142
|
+
JOIN pg_depend AS d ON r.oid=d.objid
|
|
143
|
+
JOIN pg_class AS cl_d ON d.refobjid=cl_d.oid
|
|
144
|
+
WHERE cl_d.relkind IN ('r','v')
|
|
145
|
+
AND cl_d.relname <> cl_r.relname
|
|
146
|
+
GROUP BY cl_r.relname
|
|
147
|
+
) vr
|
|
148
|
+
ON t.table_name = vr.view_name
|
|
149
|
+
GROUP BY t.table_schema, t.table_name, t.is_view, t.view_definition, vr.table_names , cc.table_oid, cc.columns
|
|
150
|
+
ORDER BY schema, name
|
|
151
|
+
|
|
152
|
+
`;
|
|
153
|
+
// console.log(pgp.as.format(query, { schema }), schema);
|
|
154
|
+
let result = await db.any(query, { schema });
|
|
155
|
+
result = await Promise.all(result
|
|
156
|
+
.map(async (tbl) => {
|
|
157
|
+
/** Get view reference cols (based on parent table) */
|
|
158
|
+
let viewFCols = [];
|
|
159
|
+
if (tbl.is_view) {
|
|
160
|
+
try {
|
|
161
|
+
const view_definition = tbl.view_definition?.endsWith(";") ? tbl.view_definition.slice(0, -1) : tbl.view_definition;
|
|
162
|
+
const { fields } = await runSQL(`SELECT * FROM \n ( ${view_definition} \n) t LIMIT 0`, {}, {}, undefined);
|
|
163
|
+
const ftables = result.filter(r => fields.some(f => f.tableID === r.oid));
|
|
164
|
+
ftables.forEach(ft => {
|
|
165
|
+
const fFields = fields.filter(f => f.tableID === ft.oid);
|
|
166
|
+
const pkeys = ft.columns.filter(c => c.is_pkey);
|
|
167
|
+
const fFieldPK = fFields.filter(ff => pkeys.some(p => p.name === ff.columnName));
|
|
168
|
+
const refCols = pkeys.length && fFieldPK.length === pkeys.length ? fFieldPK : fFields.filter(ff => !["json", "jsonb", "xml"].includes(ff.udt_name));
|
|
169
|
+
const _fcols = refCols.map(ff => {
|
|
170
|
+
const d = {
|
|
171
|
+
name: ff.columnName,
|
|
172
|
+
references: [{
|
|
173
|
+
ftable: ft.name,
|
|
174
|
+
fcols: [ff.columnName],
|
|
175
|
+
cols: [ff.name]
|
|
176
|
+
}]
|
|
177
|
+
};
|
|
178
|
+
return d;
|
|
179
|
+
});
|
|
180
|
+
viewFCols = [
|
|
181
|
+
...viewFCols,
|
|
182
|
+
..._fcols
|
|
183
|
+
];
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
console.error(err);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
tbl.columns = tbl.columns.map(col => {
|
|
191
|
+
if (col.has_default) {
|
|
192
|
+
/** Hide pkey default value */
|
|
193
|
+
col.column_default = (col.udt_name !== "uuid" && !col.is_pkey && !col.column_default.startsWith("nextval(")) ? col.column_default : null;
|
|
194
|
+
}
|
|
195
|
+
const viewFCol = viewFCols?.find(fc => fc.name === col.name);
|
|
196
|
+
if (viewFCol) {
|
|
197
|
+
col.references = viewFCol.references;
|
|
198
|
+
}
|
|
199
|
+
return col;
|
|
200
|
+
}); //.slice(0).sort((a, b) => a.name.localeCompare(b.name))
|
|
201
|
+
// .sort((a, b) => a.ordinal_position - b.ordinal_position)
|
|
202
|
+
return tbl;
|
|
203
|
+
}));
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
exports.getTablesForSchemaPostgresSQL = getTablesForSchemaPostgresSQL;
|
|
207
|
+
//# sourceMappingURL=getTablesForSchemaPostgresSQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTablesForSchemaPostgresSQL.js","sourceRoot":"","sources":["../../lib/DboBuilder/getTablesForSchemaPostgresSQL.ts"],"names":[],"mappings":"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"}
|
package/dist/DboBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../lib/DboBuilder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,GAAG,QAAQ,iCAAiC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["../lib/DboBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/DboBuilder.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.canEXECUTE = exports.prepareSort = exports.postgresToTsType = exports.is
|
|
|
8
8
|
const Bluebird = require("bluebird");
|
|
9
9
|
const pgPromise = require("pg-promise");
|
|
10
10
|
const runSQL_1 = require("./DboBuilder/runSQL");
|
|
11
|
+
const getTablesForSchemaPostgresSQL_1 = require("./DboBuilder/getTablesForSchemaPostgresSQL");
|
|
11
12
|
const prostgles_types_1 = require("prostgles-types");
|
|
12
13
|
const utils_1 = require("./utils");
|
|
13
14
|
const PubSubManager_1 = require("./PubSubManager/PubSubManager");
|
|
@@ -289,7 +290,7 @@ class DboBuilder {
|
|
|
289
290
|
return runSQL_1.runSQL.bind(this)(query, params, options, localParams);
|
|
290
291
|
};
|
|
291
292
|
async build() {
|
|
292
|
-
this.tablesOrViews = await getTablesForSchemaPostgresSQL(this);
|
|
293
|
+
this.tablesOrViews = await (0, getTablesForSchemaPostgresSQL_1.getTablesForSchemaPostgresSQL)(this);
|
|
293
294
|
this.constraints = await getConstraints(this.db);
|
|
294
295
|
await this.parseJoins();
|
|
295
296
|
this.dbo = {};
|
|
@@ -380,204 +381,6 @@ async function getConstraints(db, schema = "public", filter) {
|
|
|
380
381
|
${!filter ? "" : "AND rel.relname = ${} AND "}
|
|
381
382
|
`);
|
|
382
383
|
}
|
|
383
|
-
async function getTablesForSchemaPostgresSQL({ db, runSQL }, schema = "public") {
|
|
384
|
-
const query = `
|
|
385
|
-
SELECT
|
|
386
|
-
jsonb_build_object(
|
|
387
|
-
'insert', EXISTS (
|
|
388
|
-
SELECT 1
|
|
389
|
-
FROM information_schema.role_table_grants rg
|
|
390
|
-
WHERE rg.table_name = t.table_name
|
|
391
|
-
AND rg.privilege_type = 'INSERT'
|
|
392
|
-
),
|
|
393
|
-
'select', EXISTS (
|
|
394
|
-
SELECT 1
|
|
395
|
-
FROM information_schema.role_table_grants rg
|
|
396
|
-
WHERE rg.table_name = t.table_name
|
|
397
|
-
AND rg.privilege_type = 'SELECT'
|
|
398
|
-
),
|
|
399
|
-
'update', EXISTS (
|
|
400
|
-
SELECT 1
|
|
401
|
-
FROM information_schema.role_table_grants rg
|
|
402
|
-
WHERE rg.table_name = t.table_name
|
|
403
|
-
AND rg.privilege_type = 'UPDATE'
|
|
404
|
-
),
|
|
405
|
-
'delete', EXISTS (
|
|
406
|
-
SELECT 1
|
|
407
|
-
FROM information_schema.role_table_grants rg
|
|
408
|
-
WHERE rg.table_name = t.table_name
|
|
409
|
-
AND rg.privilege_type = 'DELETE'
|
|
410
|
-
)
|
|
411
|
-
) as privileges
|
|
412
|
-
, t.table_schema as schema, t.table_name as name
|
|
413
|
-
, cc.columns
|
|
414
|
-
, cc.table_oid as oid
|
|
415
|
-
, t.is_view
|
|
416
|
-
, t.view_definition
|
|
417
|
-
, array_to_json(vr.table_names) as parent_tables
|
|
418
|
-
, obj_description(cc.table_oid::regclass) as comment
|
|
419
|
-
FROM (
|
|
420
|
-
SELECT table_name,
|
|
421
|
-
table_schema,
|
|
422
|
-
is_view,
|
|
423
|
-
CASE WHEN is_view THEN pg_get_viewdef(format('%I.%I', table_schema, table_name)::REGCLASS, true) END as view_definition
|
|
424
|
-
FROM (
|
|
425
|
-
SELECT table_name, table_schema, table_type = 'VIEW' as is_view
|
|
426
|
-
FROM information_schema.tables
|
|
427
|
-
/* TODO - add support for materialized views
|
|
428
|
-
UNION ALL
|
|
429
|
-
SELECT table_name, table_schema
|
|
430
|
-
FROM (
|
|
431
|
-
SELECT relname as table_name, nspname as table_schema, true as is_view
|
|
432
|
-
FROM pg_catalog.pg_class AS _c
|
|
433
|
-
JOIN pg_catalog.pg_namespace AS _ns
|
|
434
|
-
ON _c.relnamespace = _ns.oid
|
|
435
|
-
WHERE relkind IN ( 'm' )
|
|
436
|
-
) materialized_views
|
|
437
|
-
*/
|
|
438
|
-
) tables_matviews
|
|
439
|
-
WHERE table_schema = ${(0, PubSubManager_1.asValue)(schema)}
|
|
440
|
-
) t
|
|
441
|
-
INNER join (
|
|
442
|
-
SELECT ccc.table_oid, table_schema, table_name
|
|
443
|
-
, jsonb_agg((SELECT x FROM (
|
|
444
|
-
SELECT ccc.column_name as name,
|
|
445
|
-
ccc.data_type,
|
|
446
|
-
ccc.udt_name,
|
|
447
|
-
ccc.element_type,
|
|
448
|
-
ccc.element_udt_name,
|
|
449
|
-
ccc.is_pkey,
|
|
450
|
-
ccc.comment,
|
|
451
|
-
ccc.ordinal_position,
|
|
452
|
-
ccc.is_nullable = 'YES' as is_nullable,
|
|
453
|
-
ccc.references,
|
|
454
|
-
ccc.has_default,
|
|
455
|
-
ccc.column_default,
|
|
456
|
-
ccc.privileges
|
|
457
|
-
) as x) ORDER BY ccc.ordinal_position ) as columns
|
|
458
|
-
FROM (
|
|
459
|
-
SELECT c.table_schema, c.table_name, c.column_name, c.data_type, c.udt_name
|
|
460
|
-
, e.data_type as element_type
|
|
461
|
-
, e.udt_name as element_udt_name
|
|
462
|
-
, col_description(format('%I.%I', c.table_schema, c.table_name)::regclass::oid, c.ordinal_position) as comment
|
|
463
|
-
--, CASE WHEN fc.ftable IS NOT NULL THEN row_to_json((SELECT t FROM (SELECT fc.ftable, fc.fcols, fc.cols) t)) END as references
|
|
464
|
-
, fc.references
|
|
465
|
-
, c.is_identity = 'YES' OR EXISTS (
|
|
466
|
-
SELECT 1
|
|
467
|
-
FROM information_schema.table_constraints as tc
|
|
468
|
-
JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
|
|
469
|
-
WHERE kcu.table_schema = c.table_schema AND kcu.table_name = c.table_name AND kcu.column_name = c.column_name AND tc.constraint_type IN ('PRIMARY KEY')
|
|
470
|
-
) as is_pkey
|
|
471
|
-
, c.ordinal_position
|
|
472
|
-
, COALESCE(c.column_default IS NOT NULL OR c.identity_generation = 'ALWAYS', false) as has_default
|
|
473
|
-
, c.column_default
|
|
474
|
-
, format('%I.%I', c.table_schema, c.table_name)::regclass::oid AS table_oid
|
|
475
|
-
, c.is_nullable
|
|
476
|
-
, cp.privileges
|
|
477
|
-
FROM information_schema.columns c
|
|
478
|
-
LEFT JOIN (SELECT * FROM information_schema.element_types ) e
|
|
479
|
-
ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier)
|
|
480
|
-
= (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.collection_type_identifier)
|
|
481
|
-
)
|
|
482
|
-
LEFT JOIN (
|
|
483
|
-
SELECT table_schema, table_name, column_name, json_agg(row_to_json((SELECT t FROM (SELECT cpp.privilege_type, cpp.is_grantable ) t))) as privileges
|
|
484
|
-
FROM information_schema.column_privileges cpp
|
|
485
|
-
GROUP BY table_schema, table_name, column_name
|
|
486
|
-
) cp
|
|
487
|
-
ON c.table_name = cp.table_name AND c.column_name = cp.column_name
|
|
488
|
-
LEFT JOIN (
|
|
489
|
-
--SELECT *
|
|
490
|
-
SELECT "table", ft.cols, jsonb_agg(row_to_json((SELECT t FROM (SELECT ftable, fcols, cols) t))) as references
|
|
491
|
-
FROM (
|
|
492
|
-
SELECT
|
|
493
|
-
(SELECT r.relname from pg_class r where r.oid = c.conrelid) as table,
|
|
494
|
-
(SELECT array_agg(attname::text) from pg_attribute
|
|
495
|
-
where attrelid = c.conrelid and ARRAY[attnum] <@ c.conkey) as cols,
|
|
496
|
-
(SELECT array_agg(attname::text) from pg_attribute
|
|
497
|
-
where attrelid = c.confrelid and ARRAY[attnum] <@ c.confkey) as fcols,
|
|
498
|
-
(SELECT r.relname from pg_class r where r.oid = c.confrelid) as ftable
|
|
499
|
-
FROM pg_constraint c
|
|
500
|
-
) ft
|
|
501
|
-
WHERE ft.table IS NOT NULL
|
|
502
|
-
AND ft.ftable IS NOT NULL
|
|
503
|
-
-- c.confrelid = 'users'::regclass::oid
|
|
504
|
-
GROUP BY "table", cols
|
|
505
|
-
) fc
|
|
506
|
-
ON fc.table = c.table_name
|
|
507
|
-
AND c.column_name::text = ANY(fc.cols)
|
|
508
|
-
) ccc
|
|
509
|
-
GROUP BY table_oid, table_schema, table_name
|
|
510
|
-
) cc
|
|
511
|
-
ON t.table_name = cc.table_name
|
|
512
|
-
AND t.table_schema = cc.table_schema
|
|
513
|
-
LEFT JOIN (
|
|
514
|
-
SELECT cl_r.relname as view_name, array_agg(DISTINCT cl_d.relname) AS table_names
|
|
515
|
-
FROM pg_rewrite AS r
|
|
516
|
-
JOIN pg_class AS cl_r ON r.ev_class=cl_r.oid
|
|
517
|
-
JOIN pg_depend AS d ON r.oid=d.objid
|
|
518
|
-
JOIN pg_class AS cl_d ON d.refobjid=cl_d.oid
|
|
519
|
-
WHERE cl_d.relkind IN ('r','v')
|
|
520
|
-
AND cl_d.relname <> cl_r.relname
|
|
521
|
-
GROUP BY cl_r.relname
|
|
522
|
-
) vr
|
|
523
|
-
ON t.table_name = vr.view_name
|
|
524
|
-
GROUP BY t.table_schema, t.table_name, t.is_view, t.view_definition, vr.table_names , cc.table_oid, cc.columns
|
|
525
|
-
ORDER BY schema, name
|
|
526
|
-
|
|
527
|
-
`;
|
|
528
|
-
// console.log(pgp.as.format(query, { schema }), schema);
|
|
529
|
-
let result = await db.any(query, { schema });
|
|
530
|
-
result = await Promise.all(result
|
|
531
|
-
.map(async (tbl) => {
|
|
532
|
-
/** Get view reference cols (based on parent table) */
|
|
533
|
-
let viewFCols = [];
|
|
534
|
-
if (tbl.is_view) {
|
|
535
|
-
try {
|
|
536
|
-
const view_definition = tbl.view_definition?.endsWith(";") ? tbl.view_definition.slice(0, -1) : tbl.view_definition;
|
|
537
|
-
const { fields } = await runSQL(`SELECT * FROM \n ( ${view_definition} \n) t LIMIT 0`, {}, {}, undefined);
|
|
538
|
-
const ftables = result.filter(r => fields.some(f => f.tableID === r.oid));
|
|
539
|
-
ftables.forEach(ft => {
|
|
540
|
-
const fFields = fields.filter(f => f.tableID === ft.oid);
|
|
541
|
-
const pkeys = ft.columns.filter(c => c.is_pkey);
|
|
542
|
-
const fFieldPK = fFields.filter(ff => pkeys.some(p => p.name === ff.columnName));
|
|
543
|
-
const refCols = pkeys.length && fFieldPK.length === pkeys.length ? fFieldPK : fFields.filter(ff => !["json", "jsonb", "xml"].includes(ff.udt_name));
|
|
544
|
-
const _fcols = refCols.map(ff => {
|
|
545
|
-
const d = {
|
|
546
|
-
name: ff.columnName,
|
|
547
|
-
references: [{
|
|
548
|
-
ftable: ft.name,
|
|
549
|
-
fcols: [ff.columnName],
|
|
550
|
-
cols: [ff.name]
|
|
551
|
-
}]
|
|
552
|
-
};
|
|
553
|
-
return d;
|
|
554
|
-
});
|
|
555
|
-
viewFCols = [
|
|
556
|
-
...viewFCols,
|
|
557
|
-
..._fcols
|
|
558
|
-
];
|
|
559
|
-
});
|
|
560
|
-
}
|
|
561
|
-
catch (err) {
|
|
562
|
-
console.error(err);
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
tbl.columns = tbl.columns.map(col => {
|
|
566
|
-
if (col.has_default) {
|
|
567
|
-
/** Hide pkey default value */
|
|
568
|
-
col.column_default = (col.udt_name !== "uuid" && !col.is_pkey && !col.column_default.startsWith("nextval(")) ? col.column_default : null;
|
|
569
|
-
}
|
|
570
|
-
const viewFCol = viewFCols?.find(fc => fc.name === col.name);
|
|
571
|
-
if (viewFCol) {
|
|
572
|
-
col.references = viewFCol.references;
|
|
573
|
-
}
|
|
574
|
-
return col;
|
|
575
|
-
}); //.slice(0).sort((a, b) => a.name.localeCompare(b.name))
|
|
576
|
-
// .sort((a, b) => a.ordinal_position - b.ordinal_position)
|
|
577
|
-
return tbl;
|
|
578
|
-
}));
|
|
579
|
-
return result;
|
|
580
|
-
}
|
|
581
384
|
function isPlainObject(o) {
|
|
582
385
|
return Object(o) === o && Object.getPrototypeOf(o) === Object.prototype;
|
|
583
386
|
}
|