@opengis/fastify-table 1.1.135 → 1.1.137
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/package.json
CHANGED
|
@@ -1,95 +1,134 @@
|
|
|
1
|
-
CREATE
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
ALTER TABLE admin.rules
|
|
5
|
-
ALTER TABLE admin.rules add column if not exists
|
|
6
|
-
|
|
7
|
-
ALTER TABLE admin.rules add column if not exists
|
|
8
|
-
ALTER TABLE admin.rules add column if not exists
|
|
9
|
-
ALTER TABLE admin.rules add column if not exists
|
|
10
|
-
ALTER TABLE admin.rules add column if not exists
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
COMMENT ON
|
|
16
|
-
COMMENT ON COLUMN admin.rules.
|
|
17
|
-
COMMENT ON COLUMN admin.rules.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
ALTER TABLE admin.rules ALTER COLUMN
|
|
25
|
-
ALTER TABLE admin.rules ALTER COLUMN
|
|
26
|
-
ALTER TABLE admin.rules ALTER COLUMN
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
ALTER TABLE admin.
|
|
31
|
-
ALTER TABLE admin.
|
|
32
|
-
ALTER TABLE admin.
|
|
33
|
-
ALTER TABLE admin.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
ALTER TABLE admin.accounts
|
|
40
|
-
ALTER TABLE admin.accounts
|
|
41
|
-
|
|
42
|
-
ALTER TABLE admin.accounts
|
|
43
|
-
ALTER TABLE admin.accounts
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
ALTER TABLE admin.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
ALTER TABLE admin.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
ALTER TABLE admin.
|
|
65
|
-
ALTER TABLE admin.
|
|
66
|
-
|
|
67
|
-
ALTER TABLE admin.
|
|
68
|
-
ALTER TABLE admin.
|
|
69
|
-
ALTER TABLE admin.
|
|
70
|
-
ALTER TABLE admin.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
COMMENT ON COLUMN admin.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
ALTER TABLE admin.account_grants
|
|
92
|
-
ALTER TABLE admin.account_grants
|
|
93
|
-
ALTER TABLE admin.account_grants
|
|
94
|
-
ALTER TABLE admin.account_grants
|
|
95
|
-
|
|
1
|
+
CREATE SCHEMA IF NOT EXISTS admin;
|
|
2
|
+
|
|
3
|
+
CREATE TABLE IF NOT EXISTS admin.rules();
|
|
4
|
+
ALTER TABLE admin.rules DROP CONSTRAINT IF EXISTS admin_rules_pkey cascade;
|
|
5
|
+
ALTER TABLE admin.rules add column if not exists rule_id text NOT NULL DEFAULT next_id();
|
|
6
|
+
|
|
7
|
+
ALTER TABLE admin.rules add column if not exists rule_type text;
|
|
8
|
+
ALTER TABLE admin.rules add column if not exists rule_name text;
|
|
9
|
+
ALTER TABLE admin.rules add column if not exists attr text;
|
|
10
|
+
ALTER TABLE admin.rules add column if not exists routes text[];
|
|
11
|
+
ALTER TABLE admin.rules add column if not exists uid text;
|
|
12
|
+
ALTER TABLE admin.rules add column if not exists cdate timestamp without time zone;
|
|
13
|
+
ALTER TABLE admin.rules add column if not exists rule_query text;
|
|
14
|
+
ALTER TABLE admin.rules add column if not exists cls text;
|
|
15
|
+
COMMENT ON TABLE admin.rules IS 'Повноваження';
|
|
16
|
+
COMMENT ON COLUMN admin.rules.rule_type IS 'Тип повноваження';
|
|
17
|
+
COMMENT ON COLUMN admin.rules.rule_name IS 'Назва';
|
|
18
|
+
COMMENT ON COLUMN admin.rules.attr IS 'Атрибут';
|
|
19
|
+
COMMENT ON COLUMN admin.rules.routes IS 'Роути';
|
|
20
|
+
COMMENT ON COLUMN admin.rules.uid IS 'Хто створив';
|
|
21
|
+
COMMENT ON COLUMN admin.rules.cdate IS 'Дата створення';
|
|
22
|
+
COMMENT ON COLUMN admin.rules.rule_query IS 'Запит';
|
|
23
|
+
COMMENT ON COLUMN admin.rules.cls IS 'Класифікатор';
|
|
24
|
+
ALTER TABLE admin.rules ALTER COLUMN attr DROP NOT NULL;
|
|
25
|
+
ALTER TABLE admin.rules ALTER COLUMN cdate DROP NOT NULL;ALTER TABLE admin.rules ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
26
|
+
ALTER TABLE admin.rules ALTER COLUMN cls DROP NOT NULL;
|
|
27
|
+
ALTER TABLE admin.rules ALTER COLUMN routes DROP NOT NULL;
|
|
28
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_id SET NOT NULL;ALTER TABLE admin.rules ALTER COLUMN rule_id SET DEFAULT next_id();
|
|
29
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_name DROP NOT NULL;
|
|
30
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_query DROP NOT NULL;
|
|
31
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_type DROP NOT NULL;
|
|
32
|
+
ALTER TABLE admin.rules ALTER COLUMN uid DROP NOT NULL;
|
|
33
|
+
ALTER TABLE admin.rules add CONSTRAINT admin_rules_pkey PRIMARY KEY (rule_id);
|
|
34
|
+
|
|
35
|
+
CREATE INDEX if not exists admin_rules_id_idx ON admin.rules USING btree (rule_id COLLATE pg_catalog."default");
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
CREATE TABLE IF NOT EXISTS admin.accounts();
|
|
39
|
+
ALTER TABLE admin.accounts DROP CONSTRAINT IF EXISTS admin_accounts_pkey cascade;
|
|
40
|
+
ALTER TABLE admin.accounts add column if not exists account_id text NOT NULL DEFAULT next_id();
|
|
41
|
+
|
|
42
|
+
ALTER TABLE admin.accounts add column if not exists account_name text;
|
|
43
|
+
ALTER TABLE admin.accounts add column if not exists description text;
|
|
44
|
+
ALTER TABLE admin.accounts add column if not exists uid text;
|
|
45
|
+
ALTER TABLE admin.accounts add column if not exists cdate timestamp without time zone;
|
|
46
|
+
COMMENT ON TABLE admin.accounts IS 'Організації';
|
|
47
|
+
COMMENT ON COLUMN admin.accounts.account_name IS 'Назва';
|
|
48
|
+
COMMENT ON COLUMN admin.accounts.description IS 'Опис';
|
|
49
|
+
COMMENT ON COLUMN admin.accounts.uid IS 'Хто створив';
|
|
50
|
+
COMMENT ON COLUMN admin.accounts.cdate IS 'Дата створення';
|
|
51
|
+
ALTER TABLE admin.accounts ALTER COLUMN account_id SET NOT NULL;ALTER TABLE admin.accounts ALTER COLUMN account_id SET DEFAULT next_id();
|
|
52
|
+
ALTER TABLE admin.accounts ALTER COLUMN account_name DROP NOT NULL;
|
|
53
|
+
ALTER TABLE admin.accounts ALTER COLUMN cdate DROP NOT NULL;ALTER TABLE admin.accounts ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
54
|
+
ALTER TABLE admin.accounts ALTER COLUMN description DROP NOT NULL;
|
|
55
|
+
ALTER TABLE admin.accounts ALTER COLUMN uid DROP NOT NULL;
|
|
56
|
+
ALTER TABLE admin.accounts add CONSTRAINT admin_accounts_pkey PRIMARY KEY (account_id);
|
|
57
|
+
|
|
58
|
+
CREATE INDEX if not exists admin_accounts_id_idx ON admin.accounts USING btree (account_id COLLATE pg_catalog."default");
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
CREATE TABLE IF NOT EXISTS admin.account_users();
|
|
62
|
+
ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_account_users_pkey;
|
|
63
|
+
ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_au_account_fkey;
|
|
64
|
+
ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_au_user_fkey;
|
|
65
|
+
ALTER TABLE admin.account_users add column if not exists au_id text NOT NULL DEFAULT next_id();
|
|
66
|
+
|
|
67
|
+
ALTER TABLE admin.account_users add column if not exists account_id text;
|
|
68
|
+
ALTER TABLE admin.account_users add column if not exists user_uid text;
|
|
69
|
+
ALTER TABLE admin.account_users add column if not exists uid text;
|
|
70
|
+
ALTER TABLE admin.account_users add column if not exists cdate timestamp without time zone;
|
|
71
|
+
COMMENT ON TABLE admin.account_users IS 'Організації - Користувачі';
|
|
72
|
+
COMMENT ON COLUMN admin.account_users.account_id IS 'id Організації';
|
|
73
|
+
COMMENT ON COLUMN admin.account_users.user_uid IS 'id Користувача';
|
|
74
|
+
COMMENT ON COLUMN admin.account_users.uid IS 'Хто створив';
|
|
75
|
+
COMMENT ON COLUMN admin.account_users.cdate IS 'Дата створення';
|
|
76
|
+
ALTER TABLE admin.account_users ALTER COLUMN account_id DROP NOT NULL;
|
|
77
|
+
ALTER TABLE admin.account_users ALTER COLUMN au_id SET NOT NULL;ALTER TABLE admin.account_users ALTER COLUMN au_id SET DEFAULT next_id();
|
|
78
|
+
ALTER TABLE admin.account_users ALTER COLUMN cdate DROP NOT NULL;ALTER TABLE admin.account_users ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
79
|
+
ALTER TABLE admin.account_users ALTER COLUMN uid DROP NOT NULL;
|
|
80
|
+
ALTER TABLE admin.account_users ALTER COLUMN user_uid DROP NOT NULL;
|
|
81
|
+
ALTER TABLE admin.account_users add CONSTRAINT admin_account_users_pkey PRIMARY KEY (au_id);
|
|
82
|
+
ALTER TABLE admin.account_users ADD CONSTRAINT admin_au_account_fkey FOREIGN KEY (account_id) REFERENCES admin.accounts (account_id) MATCH SIMPLE;
|
|
83
|
+
ALTER TABLE admin.account_users ADD CONSTRAINT admin_au_user_fkey FOREIGN KEY (user_uid) REFERENCES admin.users (uid) MATCH SIMPLE;
|
|
84
|
+
|
|
85
|
+
CREATE INDEX if not exists admin_account_users_id_idx ON admin.account_users USING btree (au_id COLLATE pg_catalog."default");
|
|
86
|
+
CREATE INDEX if not exists admin_au_account_id_idx ON admin.account_users USING btree (account_id COLLATE pg_catalog."default");
|
|
87
|
+
CREATE INDEX if not exists admin_au_user_uid_idx ON admin.account_users USING btree (user_uid COLLATE pg_catalog."default");
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
CREATE TABLE IF NOT EXISTS admin.account_grants();
|
|
91
|
+
ALTER TABLE admin.account_grants DROP CONSTRAINT IF EXISTS admin_account_grants_pkey;
|
|
92
|
+
ALTER TABLE admin.account_grants DROP CONSTRAINT IF EXISTS admin_ag_account_fkey;
|
|
93
|
+
ALTER TABLE admin.account_grants DROP CONSTRAINT IF EXISTS admin_ag_user_fkey;
|
|
94
|
+
ALTER TABLE admin.account_grants add column if not exists ag_id text NOT NULL DEFAULT next_id();
|
|
95
|
+
|
|
96
|
+
ALTER TABLE admin.account_grants add column if not exists account_id text;
|
|
97
|
+
ALTER TABLE admin.account_grants add column if not exists rule_id text;
|
|
98
|
+
ALTER TABLE admin.account_grants add column if not exists routes text[];
|
|
99
|
+
ALTER TABLE admin.account_grants add column if not exists rule_values text[];
|
|
100
|
+
ALTER TABLE admin.account_grants add column if not exists grants_doc_id text;
|
|
101
|
+
ALTER TABLE admin.account_grants add column if not exists grant_scan text;
|
|
102
|
+
ALTER TABLE admin.account_grants add column if not exists expire_date date;
|
|
103
|
+
ALTER TABLE admin.account_grants add column if not exists actions text[];
|
|
104
|
+
ALTER TABLE admin.account_grants add column if not exists uid text;
|
|
105
|
+
ALTER TABLE admin.account_grants add column if not exists cdate timestamp without time zone;
|
|
106
|
+
COMMENT ON TABLE admin.account_grants IS 'Організації - Повноваження';
|
|
107
|
+
COMMENT ON COLUMN admin.account_grants.account_id IS 'id Організації';
|
|
108
|
+
COMMENT ON COLUMN admin.account_grants.rule_id IS 'id Правила';
|
|
109
|
+
COMMENT ON COLUMN admin.account_grants.routes IS 'Роути';
|
|
110
|
+
COMMENT ON COLUMN admin.account_grants.rule_values IS 'Значення';
|
|
111
|
+
COMMENT ON COLUMN admin.account_grants.grants_doc_id IS 'id Документу';
|
|
112
|
+
COMMENT ON COLUMN admin.account_grants.grant_scan IS 'id Скану';
|
|
113
|
+
COMMENT ON COLUMN admin.account_grants.expire_date IS 'Дата закінчення дії дозволу';
|
|
114
|
+
COMMENT ON COLUMN admin.account_grants.actions IS 'Дії';
|
|
115
|
+
COMMENT ON COLUMN admin.account_grants.uid IS 'Хто створив';
|
|
116
|
+
COMMENT ON COLUMN admin.account_grants.cdate IS 'Дата створення';
|
|
117
|
+
ALTER TABLE admin.account_grants ALTER COLUMN account_id DROP NOT NULL;
|
|
118
|
+
ALTER TABLE admin.account_grants ALTER COLUMN actions DROP NOT NULL;
|
|
119
|
+
ALTER TABLE admin.account_grants ALTER COLUMN ag_id SET NOT NULL;ALTER TABLE admin.account_grants ALTER COLUMN ag_id SET DEFAULT next_id();
|
|
120
|
+
ALTER TABLE admin.account_grants ALTER COLUMN cdate DROP NOT NULL;ALTER TABLE admin.account_grants ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
121
|
+
ALTER TABLE admin.account_grants ALTER COLUMN expire_date DROP NOT NULL;
|
|
122
|
+
ALTER TABLE admin.account_grants ALTER COLUMN grant_scan DROP NOT NULL;
|
|
123
|
+
ALTER TABLE admin.account_grants ALTER COLUMN grants_doc_id DROP NOT NULL;
|
|
124
|
+
ALTER TABLE admin.account_grants ALTER COLUMN routes DROP NOT NULL;
|
|
125
|
+
ALTER TABLE admin.account_grants ALTER COLUMN rule_id DROP NOT NULL;
|
|
126
|
+
ALTER TABLE admin.account_grants ALTER COLUMN rule_values DROP NOT NULL;
|
|
127
|
+
ALTER TABLE admin.account_grants ALTER COLUMN uid DROP NOT NULL;
|
|
128
|
+
ALTER TABLE admin.account_grants add CONSTRAINT admin_account_grants_pkey PRIMARY KEY (ag_id);
|
|
129
|
+
ALTER TABLE admin.account_grants ADD CONSTRAINT admin_ag_account_fkey FOREIGN KEY (account_id) REFERENCES admin.accounts (account_id) MATCH SIMPLE;
|
|
130
|
+
ALTER TABLE admin.account_grants ADD CONSTRAINT admin_ag_user_fkey FOREIGN KEY (rule_id) REFERENCES admin.rules (rule_id) MATCH SIMPLE;
|
|
131
|
+
|
|
132
|
+
CREATE INDEX if not exists admin_account_users_id_idx ON admin.account_grants USING btree (ag_id COLLATE pg_catalog."default");
|
|
133
|
+
CREATE INDEX if not exists admin_ag_account_id_idx ON admin.account_grants USING btree (account_id COLLATE pg_catalog."default");
|
|
134
|
+
CREATE INDEX if not exists admin_ag_rule_id_idx ON admin.account_grants USING btree (rule_id COLLATE pg_catalog."default");
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import pgClients from '../../pg/pgClients.js';
|
|
2
|
-
import getTemplate from './getTemplate.js';
|
|
3
|
-
|
|
4
|
-
const loadCls = {};
|
|
5
|
-
|
|
6
|
-
const sqls = {
|
|
7
|
-
sql: 'select data from admin.cls where name=$1',
|
|
8
|
-
json:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
import pgClients from '../../pg/pgClients.js';
|
|
2
|
+
import getTemplate from './getTemplate.js';
|
|
3
|
+
|
|
4
|
+
const loadCls = {};
|
|
5
|
+
|
|
6
|
+
const sqls = {
|
|
7
|
+
sql: 'select data from admin.user_cls where name=$1 union all select data from admin.cls where name=$1',
|
|
8
|
+
json: `select json_agg(json_build_object(\'id\', code, \'text\', name, \'icon\', icon, \'color\', color)) as data from admin.user_cls where parent=$1
|
|
9
|
+
union all select json_agg(json_build_object(\'id\', code, \'text\', name, \'icon\', icon, \'color\', color)) as data from admin.cls where parent=$1`,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export default async function getSelect(name, pg = pgClients.client) {
|
|
13
|
+
if (loadCls[name]) return loadCls[name];
|
|
14
|
+
|
|
15
|
+
const clsDataGIT = await getTemplate(['cls', 'select'], name);
|
|
16
|
+
const { type } = !clsDataGIT && pg.pk?.['admin.user_cls'] ? await pg.query('select type from admin.user_cls where parent is null and name=$1 union all select type from admin.cls where parent is null and name=$1 limit 1', [name]).then(el => el.rows?.[0] || {}) : {};
|
|
17
|
+
const q = !clsDataGIT && type && ['sql', 'json'].includes(type) ? sqls[type] : undefined;
|
|
18
|
+
const clsDataDB = q ? await pg.query(q, [name]).then(el => el.rows?.[0]?.data) : undefined;
|
|
19
|
+
const clsData = clsDataGIT || clsDataDB;
|
|
20
|
+
if (!clsData) return null;
|
|
21
|
+
|
|
22
|
+
// console.log(clsData);
|
|
23
|
+
if (clsData && Array.isArray(clsData)) {
|
|
24
|
+
loadCls[name] = { arr: clsData };
|
|
25
|
+
return loadCls[name];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
loadCls[name] = clsData.sql ? clsData : { sql: clsData };
|
|
29
|
+
return loadCls[name];
|
|
30
|
+
}
|
|
@@ -115,11 +115,12 @@ export default async function dataAPI(req) {
|
|
|
115
115
|
|
|
116
116
|
const filterWhere = [fData.q, search, bbox, queryPolyline, interfaceQuery, loadTable.query].filter((el) => el);
|
|
117
117
|
|
|
118
|
-
const
|
|
118
|
+
const aggColumns = columns.filter((el) => el.agg).reduce((acc, curr) => Object.assign(acc, { [curr.name]: curr.agg }), {});
|
|
119
|
+
const aggregates = dbColumns.map((el) => ({ name: el.name, type: pg.pgType[el.dataTypeID] })).filter((el) => ['numeric', 'double precision'].includes(el.type) && aggColumns[el.name]);
|
|
119
120
|
const qCount = `select
|
|
120
121
|
count(*)::int as total,
|
|
121
122
|
count(*) FILTER(WHERE ${filterWhere.join(' and ') || 'true'})::int as filtered
|
|
122
|
-
${aggregates.length ? `,${aggregates.map((el) =>
|
|
123
|
+
${aggregates.length ? `,${aggregates.map((el) => `${aggColumns[el.name]}(${el.name}) FILTER(WHERE ${filterWhere.join(' and ') || 'true'}) as ${el.name}`).join(',')}` : ''}
|
|
123
124
|
from ${table} t ${sqlTable}
|
|
124
125
|
where ${[loadTable.query, accessQuery].filter(el => el).join(' and ') || 'true'} `
|
|
125
126
|
.replace(/{{uid}}/g, uid);
|