@opengis/fastify-table 1.5.3 → 1.5.5
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/log/info/2025-09-16.log +5 -0
- package/dist/log/init/2025-09-16.log +1 -0
- package/dist/server/migrations/0.sql +84 -0
- package/dist/server/migrations/cls.sql +40 -0
- package/dist/server/migrations/context.sql +135 -0
- package/dist/server/migrations/crm.sql +155 -0
- package/dist/server/migrations/log.sql +87 -0
- package/dist/server/migrations/properties.sql +115 -0
- package/dist/server/migrations/roles.sql +191 -0
- package/dist/server/migrations/template.sql +44 -0
- package/dist/server/migrations/users.sql +176 -0
- package/dist/server.js +52 -0
- package/package.json +5 -2
- package/dist/server/plugins/grpc/utils/server/plugins/grpc/utils/convertp.proto +0 -137
- package/dist/server/plugins/grpc/utils/server/plugins/grpc/utils/office2pdf.proto +0 -14
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{"level":"info","time":"2025-09-16T16:08:48.535Z","pid":18136,"hostname":"Setebos","msg":"Server listening at http://127.0.0.1:3000"}
|
|
2
|
+
{"level":"info","time":"2025-09-16T16:08:48.535Z","pid":18136,"hostname":"Setebos","msg":"Server listening at http://172.30.11.6:3000"}
|
|
3
|
+
{"level":"info","time":"2025-09-16T16:08:48.535Z","pid":18136,"hostname":"Setebos","msg":"Server listening at http://192.168.2.133:3000"}
|
|
4
|
+
{"level":"info","time":"2025-09-16T16:08:54.213Z","pid":18136,"hostname":"Setebos","reqId":"req-1","msg":"Route GET:/ not found"}
|
|
5
|
+
{"level":"info","time":"2025-09-16T16:08:55.755Z","pid":18136,"hostname":"Setebos","reqId":"req-2","msg":"Route GET:/ not found"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"level":"info","time":"2025-09-16T16:08:48.536Z","pid":18136,"hostname":"Setebos","logfolder":"init"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
-- fix error if function exists and return type not text i.e bigint
|
|
2
|
+
|
|
3
|
+
do $$
|
|
4
|
+
|
|
5
|
+
declare
|
|
6
|
+
m record;
|
|
7
|
+
_pk text;
|
|
8
|
+
_tables json;
|
|
9
|
+
_returnType text;
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
|
|
13
|
+
select format_type(p.prorettype, null) as return_type
|
|
14
|
+
from pg_proc p
|
|
15
|
+
where p.proname = 'next_id'
|
|
16
|
+
and p.pronamespace = 'public'::regnamespace into _returnType;
|
|
17
|
+
|
|
18
|
+
if (_returnType != 'text') then
|
|
19
|
+
raise notice 'default reassign start: % -> text', _returnType;
|
|
20
|
+
|
|
21
|
+
CREATE EXTENSION if not exists "uuid-ossp";
|
|
22
|
+
|
|
23
|
+
SELECT json_object_agg(a.attrelid::regclass, a.attname)
|
|
24
|
+
FROM pg_catalog.pg_attribute a
|
|
25
|
+
LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum) = (d.adrelid, d.adnum)
|
|
26
|
+
WHERE NOT a.attisdropped -- no dropped (dead) columns
|
|
27
|
+
AND a.attnum > 0 -- no system columns
|
|
28
|
+
AND pg_get_expr(d.adbin, d.adrelid) = 'next_id()' into _tables;
|
|
29
|
+
|
|
30
|
+
FOR m in (select json_object_keys(_tables) as table) loop
|
|
31
|
+
_pk = _tables->>m.table;
|
|
32
|
+
raise notice 'drop default: %,%', m.table, _pk;
|
|
33
|
+
EXECUTE('alter table '|| m.table || ' alter column ' || _pk || ' set default null;');
|
|
34
|
+
end loop;
|
|
35
|
+
|
|
36
|
+
DROP FUNCTION IF EXISTS next_id();
|
|
37
|
+
|
|
38
|
+
/* CREATE EXTENSION if not exists "uuid-ossp";
|
|
39
|
+
ALTER EXTENSION "uuid-ossp" SET SCHEMA public; */
|
|
40
|
+
|
|
41
|
+
CREATE OR REPLACE FUNCTION next_id()
|
|
42
|
+
RETURNS text AS
|
|
43
|
+
$BODY$
|
|
44
|
+
DECLARE
|
|
45
|
+
|
|
46
|
+
BEGIN
|
|
47
|
+
-- return replace(public.uuid_generate_v4()::text, '-', '');
|
|
48
|
+
-- return replace(gen_random_uuid()::text, '-', ''); -- native from postgres 13 onward
|
|
49
|
+
return encode(public.gen_random_bytes(6), 'hex');
|
|
50
|
+
END;
|
|
51
|
+
$BODY$
|
|
52
|
+
LANGUAGE plpgsql VOLATILE
|
|
53
|
+
COST 100;
|
|
54
|
+
|
|
55
|
+
FOR m in (select json_object_keys(_tables) as table) loop
|
|
56
|
+
_pk = _tables->>m.table;
|
|
57
|
+
raise notice 'reassign default: %, %', m.table, _pk;
|
|
58
|
+
EXECUTE('alter table '|| m.table || ' alter column ' || _pk || ' set default next_id();');
|
|
59
|
+
end loop;
|
|
60
|
+
|
|
61
|
+
raise notice 'reassign default finish: %', _tables;
|
|
62
|
+
|
|
63
|
+
else
|
|
64
|
+
raise notice 'skip default reassign';
|
|
65
|
+
|
|
66
|
+
/* CREATE EXTENSION if not exists "uuid-ossp";
|
|
67
|
+
ALTER EXTENSION "uuid-ossp" SET SCHEMA public; */
|
|
68
|
+
|
|
69
|
+
CREATE OR REPLACE FUNCTION next_id()
|
|
70
|
+
RETURNS text AS
|
|
71
|
+
$BODY$
|
|
72
|
+
DECLARE
|
|
73
|
+
|
|
74
|
+
BEGIN
|
|
75
|
+
-- return replace(public.uuid_generate_v4()::text, '-', '');
|
|
76
|
+
-- return replace(gen_random_uuid()::text, '-', ''); -- native from postgres 13 onward
|
|
77
|
+
return encode(public.gen_random_bytes(6), 'hex');
|
|
78
|
+
END;
|
|
79
|
+
$BODY$
|
|
80
|
+
LANGUAGE plpgsql VOLATILE
|
|
81
|
+
COST 100;
|
|
82
|
+
end if;
|
|
83
|
+
|
|
84
|
+
end $$
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
create schema if not exists admin;
|
|
2
|
+
|
|
3
|
+
CREATE TABLE if not exists admin.cls();
|
|
4
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS clsid text;
|
|
5
|
+
ALTER TABLE admin.cls DROP CONSTRAINT IF EXISTS admin_cls_pkey;
|
|
6
|
+
ALTER TABLE admin.cls DROP CONSTRAINT IF EXISTS admin_cls_unique;
|
|
7
|
+
|
|
8
|
+
ALTER TABLE admin.cls ALTER COLUMN clsid SET NOT NULL;
|
|
9
|
+
ALTER TABLE admin.cls ALTER COLUMN clsid SET DEFAULT next_id();
|
|
10
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS name text;
|
|
11
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS data text;
|
|
12
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS type text;
|
|
13
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS code text;
|
|
14
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS parent text;
|
|
15
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS ua text;
|
|
16
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS en text;
|
|
17
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS module text;
|
|
18
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS files json;
|
|
19
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
20
|
+
ALTER TABLE admin.cls ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
21
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS editor_id text;
|
|
22
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
23
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS uid text;
|
|
24
|
+
ALTER TABLE admin.cls ALTER COLUMN uid SET NOT NULL;
|
|
25
|
+
ALTER TABLE admin.cls ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
26
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS icon text;
|
|
27
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS color text;
|
|
28
|
+
ALTER TABLE admin.cls ADD COLUMN IF NOT EXISTS hash text;
|
|
29
|
+
|
|
30
|
+
ALTER TABLE admin.cls ADD CONSTRAINT admin_cls_pkey PRIMARY KEY (clsid);
|
|
31
|
+
ALTER TABLE admin.cls ADD CONSTRAINT admin_cls_unique UNIQUE (code, parent);
|
|
32
|
+
|
|
33
|
+
COMMENT ON COLUMN admin.cls.name IS 'Назва';
|
|
34
|
+
COMMENT ON COLUMN admin.cls.type IS 'Тип';
|
|
35
|
+
COMMENT ON COLUMN admin.cls.data IS 'SQL';
|
|
36
|
+
COMMENT ON COLUMN admin.cls.code IS 'Код';
|
|
37
|
+
COMMENT ON COLUMN admin.cls.parent IS 'Назва батьківського об''єкту';
|
|
38
|
+
COMMENT ON COLUMN admin.cls.module IS 'Модуль';
|
|
39
|
+
COMMENT ON COLUMN admin.cls.icon IS 'Іконка';
|
|
40
|
+
COMMENT ON COLUMN admin.cls.color IS 'Колір';
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
CREATE SCHEMA IF NOT EXISTS admin;
|
|
2
|
+
|
|
3
|
+
CREATE TABLE IF NOT EXISTS admin.rules();
|
|
4
|
+
CREATE TABLE IF NOT EXISTS admin.users( uid text not null constraint admin_user_uid_pkey PRIMARY KEY DEFAULT next_id() );
|
|
5
|
+
ALTER TABLE admin.rules DROP CONSTRAINT IF EXISTS admin_rules_pkey cascade;
|
|
6
|
+
ALTER TABLE admin.rules add column if not exists rule_id text NOT NULL DEFAULT next_id();
|
|
7
|
+
|
|
8
|
+
ALTER TABLE admin.rules add column if not exists rule_type text;
|
|
9
|
+
ALTER TABLE admin.rules add column if not exists rule_name text;
|
|
10
|
+
ALTER TABLE admin.rules add column if not exists attr text;
|
|
11
|
+
ALTER TABLE admin.rules add column if not exists routes text[];
|
|
12
|
+
ALTER TABLE admin.rules add column if not exists uid text;
|
|
13
|
+
ALTER TABLE admin.rules add column if not exists cdate timestamp without time zone;
|
|
14
|
+
ALTER TABLE admin.rules add column if not exists rule_query text;
|
|
15
|
+
ALTER TABLE admin.rules add column if not exists cls text;
|
|
16
|
+
COMMENT ON TABLE admin.rules IS 'Повноваження';
|
|
17
|
+
COMMENT ON COLUMN admin.rules.rule_type IS 'Тип повноваження';
|
|
18
|
+
COMMENT ON COLUMN admin.rules.rule_name IS 'Назва';
|
|
19
|
+
COMMENT ON COLUMN admin.rules.attr IS 'Атрибут';
|
|
20
|
+
COMMENT ON COLUMN admin.rules.routes IS 'Роути';
|
|
21
|
+
COMMENT ON COLUMN admin.rules.uid IS 'Хто створив';
|
|
22
|
+
COMMENT ON COLUMN admin.rules.cdate IS 'Дата створення';
|
|
23
|
+
COMMENT ON COLUMN admin.rules.rule_query IS 'Запит';
|
|
24
|
+
COMMENT ON COLUMN admin.rules.cls IS 'Класифікатор';
|
|
25
|
+
ALTER TABLE admin.rules ALTER COLUMN attr DROP NOT NULL;
|
|
26
|
+
ALTER TABLE admin.rules ALTER COLUMN cdate DROP NOT NULL;ALTER TABLE admin.rules ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
27
|
+
ALTER TABLE admin.rules ALTER COLUMN cls DROP NOT NULL;
|
|
28
|
+
ALTER TABLE admin.rules ALTER COLUMN routes DROP NOT NULL;
|
|
29
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_id SET NOT NULL;ALTER TABLE admin.rules ALTER COLUMN rule_id SET DEFAULT next_id();
|
|
30
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_name DROP NOT NULL;
|
|
31
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_query DROP NOT NULL;
|
|
32
|
+
ALTER TABLE admin.rules ALTER COLUMN rule_type DROP NOT NULL;
|
|
33
|
+
ALTER TABLE admin.rules ALTER COLUMN uid DROP NOT NULL;
|
|
34
|
+
ALTER TABLE admin.rules add CONSTRAINT admin_rules_pkey PRIMARY KEY (rule_id);
|
|
35
|
+
|
|
36
|
+
CREATE INDEX if not exists admin_rules_id_idx ON admin.rules USING btree (rule_id COLLATE pg_catalog."default");
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS admin.accounts();
|
|
40
|
+
ALTER TABLE admin.accounts DROP CONSTRAINT IF EXISTS admin_accounts_pkey cascade;
|
|
41
|
+
ALTER TABLE admin.accounts add column if not exists account_id text NOT NULL DEFAULT next_id();
|
|
42
|
+
|
|
43
|
+
ALTER TABLE admin.accounts add column if not exists account_name text;
|
|
44
|
+
ALTER TABLE admin.accounts add column if not exists description text;
|
|
45
|
+
ALTER TABLE admin.accounts add column if not exists uid text;
|
|
46
|
+
ALTER TABLE admin.accounts add column if not exists cdate timestamp without time zone;
|
|
47
|
+
COMMENT ON TABLE admin.accounts IS 'Організації';
|
|
48
|
+
COMMENT ON COLUMN admin.accounts.account_name IS 'Назва';
|
|
49
|
+
COMMENT ON COLUMN admin.accounts.description IS 'Опис';
|
|
50
|
+
COMMENT ON COLUMN admin.accounts.uid IS 'Хто створив';
|
|
51
|
+
COMMENT ON COLUMN admin.accounts.cdate IS 'Дата створення';
|
|
52
|
+
ALTER TABLE admin.accounts ALTER COLUMN account_id SET NOT NULL;ALTER TABLE admin.accounts ALTER COLUMN account_id SET DEFAULT next_id();
|
|
53
|
+
ALTER TABLE admin.accounts ALTER COLUMN account_name DROP NOT NULL;
|
|
54
|
+
ALTER TABLE admin.accounts ALTER COLUMN cdate DROP NOT NULL;ALTER TABLE admin.accounts ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
55
|
+
ALTER TABLE admin.accounts ALTER COLUMN description DROP NOT NULL;
|
|
56
|
+
ALTER TABLE admin.accounts ALTER COLUMN uid DROP NOT NULL;
|
|
57
|
+
ALTER TABLE admin.accounts add CONSTRAINT admin_accounts_pkey PRIMARY KEY (account_id);
|
|
58
|
+
|
|
59
|
+
CREATE INDEX if not exists admin_accounts_id_idx ON admin.accounts USING btree (account_id COLLATE pg_catalog."default");
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
CREATE TABLE IF NOT EXISTS admin.account_users();
|
|
63
|
+
ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_account_users_pkey;
|
|
64
|
+
ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_au_account_fkey;
|
|
65
|
+
ALTER TABLE admin.account_users DROP CONSTRAINT IF EXISTS admin_au_user_fkey;
|
|
66
|
+
ALTER TABLE admin.account_users add column if not exists au_id text NOT NULL DEFAULT next_id();
|
|
67
|
+
|
|
68
|
+
ALTER TABLE admin.account_users add column if not exists account_id text;
|
|
69
|
+
ALTER TABLE admin.account_users add column if not exists user_uid text;
|
|
70
|
+
ALTER TABLE admin.account_users add column if not exists uid text;
|
|
71
|
+
ALTER TABLE admin.account_users add column if not exists cdate timestamp without time zone;
|
|
72
|
+
COMMENT ON TABLE admin.account_users IS 'Організації - Користувачі';
|
|
73
|
+
COMMENT ON COLUMN admin.account_users.account_id IS 'id Організації';
|
|
74
|
+
COMMENT ON COLUMN admin.account_users.user_uid IS 'id Користувача';
|
|
75
|
+
COMMENT ON COLUMN admin.account_users.uid IS 'Хто створив';
|
|
76
|
+
COMMENT ON COLUMN admin.account_users.cdate IS 'Дата створення';
|
|
77
|
+
ALTER TABLE admin.account_users ALTER COLUMN account_id DROP NOT NULL;
|
|
78
|
+
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();
|
|
79
|
+
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;
|
|
80
|
+
ALTER TABLE admin.account_users ALTER COLUMN uid DROP NOT NULL;
|
|
81
|
+
ALTER TABLE admin.account_users ALTER COLUMN user_uid DROP NOT NULL;
|
|
82
|
+
ALTER TABLE admin.account_users add CONSTRAINT admin_account_users_pkey PRIMARY KEY (au_id);
|
|
83
|
+
ALTER TABLE admin.account_users ADD CONSTRAINT admin_au_account_fkey FOREIGN KEY (account_id) REFERENCES admin.accounts (account_id) MATCH SIMPLE;
|
|
84
|
+
ALTER TABLE admin.account_users ADD CONSTRAINT admin_au_user_fkey FOREIGN KEY (user_uid) REFERENCES admin.users (uid) MATCH SIMPLE;
|
|
85
|
+
|
|
86
|
+
CREATE INDEX if not exists admin_account_users_id_idx ON admin.account_users USING btree (au_id COLLATE pg_catalog."default");
|
|
87
|
+
CREATE INDEX if not exists admin_au_account_id_idx ON admin.account_users USING btree (account_id COLLATE pg_catalog."default");
|
|
88
|
+
CREATE INDEX if not exists admin_au_user_uid_idx ON admin.account_users USING btree (user_uid COLLATE pg_catalog."default");
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
CREATE TABLE IF NOT EXISTS admin.account_grants();
|
|
92
|
+
ALTER TABLE admin.account_grants DROP CONSTRAINT IF EXISTS admin_account_grants_pkey;
|
|
93
|
+
ALTER TABLE admin.account_grants DROP CONSTRAINT IF EXISTS admin_ag_account_fkey;
|
|
94
|
+
ALTER TABLE admin.account_grants DROP CONSTRAINT IF EXISTS admin_ag_user_fkey;
|
|
95
|
+
ALTER TABLE admin.account_grants add column if not exists ag_id text NOT NULL DEFAULT next_id();
|
|
96
|
+
|
|
97
|
+
ALTER TABLE admin.account_grants add column if not exists account_id text;
|
|
98
|
+
ALTER TABLE admin.account_grants add column if not exists rule_id text;
|
|
99
|
+
ALTER TABLE admin.account_grants add column if not exists routes text[];
|
|
100
|
+
ALTER TABLE admin.account_grants add column if not exists rule_values text[];
|
|
101
|
+
ALTER TABLE admin.account_grants add column if not exists grants_doc_id text;
|
|
102
|
+
ALTER TABLE admin.account_grants add column if not exists grant_scan text;
|
|
103
|
+
ALTER TABLE admin.account_grants add column if not exists expire_date date;
|
|
104
|
+
ALTER TABLE admin.account_grants add column if not exists actions text[];
|
|
105
|
+
ALTER TABLE admin.account_grants add column if not exists uid text;
|
|
106
|
+
ALTER TABLE admin.account_grants add column if not exists cdate timestamp without time zone;
|
|
107
|
+
COMMENT ON TABLE admin.account_grants IS 'Організації - Повноваження';
|
|
108
|
+
COMMENT ON COLUMN admin.account_grants.account_id IS 'id Організації';
|
|
109
|
+
COMMENT ON COLUMN admin.account_grants.rule_id IS 'id Правила';
|
|
110
|
+
COMMENT ON COLUMN admin.account_grants.routes IS 'Роути';
|
|
111
|
+
COMMENT ON COLUMN admin.account_grants.rule_values IS 'Значення';
|
|
112
|
+
COMMENT ON COLUMN admin.account_grants.grants_doc_id IS 'id Документу';
|
|
113
|
+
COMMENT ON COLUMN admin.account_grants.grant_scan IS 'id Скану';
|
|
114
|
+
COMMENT ON COLUMN admin.account_grants.expire_date IS 'Дата закінчення дії дозволу';
|
|
115
|
+
COMMENT ON COLUMN admin.account_grants.actions IS 'Дії';
|
|
116
|
+
COMMENT ON COLUMN admin.account_grants.uid IS 'Хто створив';
|
|
117
|
+
COMMENT ON COLUMN admin.account_grants.cdate IS 'Дата створення';
|
|
118
|
+
ALTER TABLE admin.account_grants ALTER COLUMN account_id DROP NOT NULL;
|
|
119
|
+
ALTER TABLE admin.account_grants ALTER COLUMN actions DROP NOT NULL;
|
|
120
|
+
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();
|
|
121
|
+
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;
|
|
122
|
+
ALTER TABLE admin.account_grants ALTER COLUMN expire_date DROP NOT NULL;
|
|
123
|
+
ALTER TABLE admin.account_grants ALTER COLUMN grant_scan DROP NOT NULL;
|
|
124
|
+
ALTER TABLE admin.account_grants ALTER COLUMN grants_doc_id DROP NOT NULL;
|
|
125
|
+
ALTER TABLE admin.account_grants ALTER COLUMN routes DROP NOT NULL;
|
|
126
|
+
ALTER TABLE admin.account_grants ALTER COLUMN rule_id DROP NOT NULL;
|
|
127
|
+
ALTER TABLE admin.account_grants ALTER COLUMN rule_values DROP NOT NULL;
|
|
128
|
+
ALTER TABLE admin.account_grants ALTER COLUMN uid DROP NOT NULL;
|
|
129
|
+
ALTER TABLE admin.account_grants add CONSTRAINT admin_account_grants_pkey PRIMARY KEY (ag_id);
|
|
130
|
+
ALTER TABLE admin.account_grants ADD CONSTRAINT admin_ag_account_fkey FOREIGN KEY (account_id) REFERENCES admin.accounts (account_id) MATCH SIMPLE;
|
|
131
|
+
ALTER TABLE admin.account_grants ADD CONSTRAINT admin_ag_user_fkey FOREIGN KEY (rule_id) REFERENCES admin.rules (rule_id) MATCH SIMPLE;
|
|
132
|
+
|
|
133
|
+
CREATE INDEX if not exists admin_account_users_id_idx ON admin.account_grants USING btree (ag_id COLLATE pg_catalog."default");
|
|
134
|
+
CREATE INDEX if not exists admin_ag_account_id_idx ON admin.account_grants USING btree (account_id COLLATE pg_catalog."default");
|
|
135
|
+
CREATE INDEX if not exists admin_ag_rule_id_idx ON admin.account_grants USING btree (rule_id COLLATE pg_catalog."default");
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
create schema if not exists crm;
|
|
2
|
+
|
|
3
|
+
-- crm.notifications
|
|
4
|
+
-- DROP TABLE IF EXISTS crm.notifications;
|
|
5
|
+
CREATE TABLE IF NOT EXISTS crm.notifications();
|
|
6
|
+
ALTER TABLE crm.notifications DROP CONSTRAINT IF EXISTS crm_notifications_pkey;
|
|
7
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS notification_id text NOT NULL DEFAULT next_id();
|
|
8
|
+
|
|
9
|
+
-- drop deprecated columns
|
|
10
|
+
ALTER TABLE crm.notifications DROP COLUMN IF EXISTS notification_user_id;
|
|
11
|
+
ALTER TABLE crm.notifications DROP COLUMN IF EXISTS notification_type;
|
|
12
|
+
ALTER TABLE crm.notifications DROP COLUMN IF EXISTS notification_status;
|
|
13
|
+
|
|
14
|
+
-- add actual columns
|
|
15
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS addressee_id text;
|
|
16
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS read boolean;
|
|
17
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS sent boolean;
|
|
18
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS subject text;
|
|
19
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS body text;
|
|
20
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS link text;
|
|
21
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS author_id text;
|
|
22
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS entity_id text;
|
|
23
|
+
|
|
24
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS uid text;
|
|
25
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS files json;
|
|
26
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
27
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS editor_id text;
|
|
28
|
+
ALTER TABLE crm.notifications ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
29
|
+
ALTER TABLE crm.notifications ADD CONSTRAINT crm_notifications_pkey PRIMARY KEY (notification_id);
|
|
30
|
+
|
|
31
|
+
COMMENT ON COLUMN crm.notifications.addressee_id is 'ID користувача отримувача повідомлення';
|
|
32
|
+
COMMENT ON COLUMN crm.notifications.read is 'Чи було повідомлення прочитане';
|
|
33
|
+
COMMENT ON COLUMN crm.notifications.sent is 'Чи було повідомлення відправлене';
|
|
34
|
+
COMMENT ON COLUMN crm.notifications.subject is 'Тема повідомлення';
|
|
35
|
+
COMMENT ON COLUMN crm.notifications.body is 'Зміст повідомлення';
|
|
36
|
+
COMMENT ON COLUMN crm.notifications.link is 'Посилання на об''єкт';
|
|
37
|
+
COMMENT ON COLUMN crm.notifications.author_id is 'ID користувача автора повідомлення';
|
|
38
|
+
COMMENT ON COLUMN crm.notifications.entity_id is 'ID на об''єкту';
|
|
39
|
+
|
|
40
|
+
-- crm.files
|
|
41
|
+
-- DROP TABLE IF EXISTS crm.files;
|
|
42
|
+
CREATE TABLE IF NOT EXISTS crm.files();
|
|
43
|
+
ALTER TABLE crm.files DROP CONSTRAINT IF EXISTS crm_files_pkey;
|
|
44
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS file_id text NOT NULL DEFAULT next_id();
|
|
45
|
+
|
|
46
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS uploaded_name text;
|
|
47
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS entity_id text; -- object_id
|
|
48
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS entity_type text; -- table_name
|
|
49
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS file_type text;
|
|
50
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS file_status numeric;
|
|
51
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS doc_type text;
|
|
52
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS subject text; -- title
|
|
53
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS size numeric;
|
|
54
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS ext text;
|
|
55
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS tags text[];
|
|
56
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS file_path text;
|
|
57
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS ismain boolean default false;
|
|
58
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS isverified boolean default false;
|
|
59
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS resized boolean;
|
|
60
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS uid text;
|
|
61
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS files json;
|
|
62
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
63
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS editor_id text;
|
|
64
|
+
ALTER TABLE crm.files ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
65
|
+
ALTER TABLE crm.files ADD CONSTRAINT crm_files_pkey PRIMARY KEY (file_id);
|
|
66
|
+
|
|
67
|
+
-- crm.communications
|
|
68
|
+
-- DROP TABLE IF EXISTS crm.communications;
|
|
69
|
+
CREATE TABLE IF NOT EXISTS crm.communications();
|
|
70
|
+
ALTER TABLE crm.communications DROP CONSTRAINT IF EXISTS crm_communications_pkey;
|
|
71
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS communication_id text NOT NULL DEFAULT next_id();
|
|
72
|
+
|
|
73
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS entity_id text; -- object_id
|
|
74
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS entity_type text; -- table_name
|
|
75
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS sender text;
|
|
76
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS channel text;
|
|
77
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS participant text;
|
|
78
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS communication_date date;
|
|
79
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS expiration_date date;
|
|
80
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS announcement text;
|
|
81
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS subject text; -- title
|
|
82
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS body text;
|
|
83
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS mark numeric;
|
|
84
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS parent_id text;
|
|
85
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS target_id text[];
|
|
86
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS enabled boolean;
|
|
87
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS uid text;
|
|
88
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS files json;
|
|
89
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
90
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS editor_id text;
|
|
91
|
+
ALTER TABLE crm.communications ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
92
|
+
ALTER TABLE crm.communications ADD CONSTRAINT crm_communications_pkey PRIMARY KEY (communication_id);
|
|
93
|
+
|
|
94
|
+
-- crm.checklists
|
|
95
|
+
-- DROP TABLE IF EXISTS crm.checklists;
|
|
96
|
+
CREATE TABLE IF NOT EXISTS crm.checklists();
|
|
97
|
+
ALTER TABLE crm.checklists DROP CONSTRAINT IF EXISTS crm_checklists_pkey;
|
|
98
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS checklist_id text NOT NULL DEFAULT next_id();
|
|
99
|
+
|
|
100
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS entity_id text; -- object_id
|
|
101
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS entity_type text; -- table_name
|
|
102
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS subject text; -- title
|
|
103
|
+
alter table crm.checklists add column IF NOT EXISTS is_done boolean default false;
|
|
104
|
+
alter table crm.checklists add column IF NOT EXISTS done_date date;
|
|
105
|
+
alter table crm.checklists add column IF NOT EXISTS category text;
|
|
106
|
+
alter table crm.checklists add column IF NOT EXISTS body text;
|
|
107
|
+
alter table crm.checklists add column IF NOT EXISTS parent_id text;
|
|
108
|
+
alter table crm.checklists add column IF NOT EXISTS flag boolean;
|
|
109
|
+
|
|
110
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS uid text;
|
|
111
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS files json;
|
|
112
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
113
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS editor_id text;
|
|
114
|
+
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
115
|
+
ALTER TABLE crm.checklists ADD CONSTRAINT crm_checklists_pkey PRIMARY KEY (checklist_id);
|
|
116
|
+
|
|
117
|
+
-- DROP TABLE crm.properties;
|
|
118
|
+
CREATE TABLE IF NOT EXISTS crm.properties();
|
|
119
|
+
ALTER TABLE crm.properties DROP CONSTRAINT IF EXISTS crm_properties_pkey;
|
|
120
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_id text NOT NULL DEFAULT next_id();
|
|
121
|
+
|
|
122
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS table_name text;
|
|
123
|
+
COMMENT ON COLUMN crm.properties.table_name IS 'Таблиця';
|
|
124
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS object_id text;
|
|
125
|
+
COMMENT ON COLUMN crm.properties.object_id IS 'ID Об''єкту';
|
|
126
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_key text;
|
|
127
|
+
COMMENT ON COLUMN crm.properties.property_key IS 'Назва атрибуту';
|
|
128
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_text text;
|
|
129
|
+
COMMENT ON COLUMN crm.properties.property_text IS 'Текст';
|
|
130
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_int integer;
|
|
131
|
+
COMMENT ON COLUMN crm.properties.property_int IS 'Integer';
|
|
132
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_json json;
|
|
133
|
+
COMMENT ON COLUMN crm.properties.property_json IS 'JSON';
|
|
134
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_date date;
|
|
135
|
+
COMMENT ON COLUMN crm.properties.property_json IS 'Дата';
|
|
136
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS property_type text;
|
|
137
|
+
COMMENT ON COLUMN crm.properties.property_type IS 'Тип даних';
|
|
138
|
+
|
|
139
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS uid text NOT NULL DEFAULT '1'::text;
|
|
140
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS editor_id text;
|
|
141
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
142
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT now();
|
|
143
|
+
ALTER TABLE crm.properties ADD COLUMN IF NOT EXISTS files json;
|
|
144
|
+
|
|
145
|
+
ALTER TABLE crm.properties ADD CONSTRAINT crm_properties_pkey PRIMARY KEY(property_id);
|
|
146
|
+
|
|
147
|
+
-- drop table if exists crm.reactions;
|
|
148
|
+
CREATE TABLE if not exists crm.reactions (
|
|
149
|
+
reaction_id text default next_id() PRIMARY KEY,
|
|
150
|
+
created_by text NOT NULL,
|
|
151
|
+
entity_id text NOT NULL,
|
|
152
|
+
reaction_type text NOT NULL check (reaction_type in ('like', 'love', 'hate', 'wow', 'sad', 'angry')),
|
|
153
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
154
|
+
FOREIGN KEY (created_by) REFERENCES admin.users(uid)
|
|
155
|
+
);
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
create schema if not exists log;
|
|
2
|
+
|
|
3
|
+
-- DROP TABLE IF EXISTS log.table_changes cascade;
|
|
4
|
+
CREATE TABLE IF NOT EXISTS log.table_changes();
|
|
5
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS change_id text NOT NULL DEFAULT next_id();
|
|
6
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS change_type text;
|
|
7
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS change_date date;
|
|
8
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS change_user_id text;
|
|
9
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS entity_type text; -- table_name
|
|
10
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS entity_id text; -- object_id
|
|
11
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS uid text;
|
|
12
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
13
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS editor_id text;
|
|
14
|
+
ALTER TABLE log.table_changes ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
15
|
+
|
|
16
|
+
-- DROP TABLE IF EXISTS log.table_changes_data;
|
|
17
|
+
CREATE TABLE IF NOT EXISTS log.table_changes_data();
|
|
18
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS change_data_id text NOT NULL DEFAULT next_id();
|
|
19
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS change_id text not null;
|
|
20
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS entity_key text; -- column_name
|
|
21
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS value_old text;
|
|
22
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS value_new text;
|
|
23
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS value_hash text;
|
|
24
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS uid text;
|
|
25
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
26
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS editor_id text;
|
|
27
|
+
ALTER TABLE log.table_changes_data ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
28
|
+
|
|
29
|
+
-- DROP TABLE IF EXISTS log.user_auth;
|
|
30
|
+
CREATE TABLE IF NOT EXISTS log.user_auth();
|
|
31
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS user_auth_id text NOT NULL DEFAULT next_id();
|
|
32
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS user_id text;
|
|
33
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS auth_date timestamp without time zone;
|
|
34
|
+
ALTER TABLE log.user_auth ALTER COLUMN auth_date SET DEFAULT (now())::timestamp without time zone;
|
|
35
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS auth_type text;
|
|
36
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS uid text;
|
|
37
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
38
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS editor_id text;
|
|
39
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
40
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS auth_data json;
|
|
41
|
+
ALTER TABLE log.user_auth ADD COLUMN IF NOT EXISTS ip text;
|
|
42
|
+
|
|
43
|
+
COMMENT ON TABLE log.table_changes IS 'Логи подій змін в БД';
|
|
44
|
+
COMMENT ON COLUMN log.table_changes.change_type IS 'Тип події (insert / update / delete)';
|
|
45
|
+
COMMENT ON COLUMN log.table_changes.change_date IS 'Дата внесення змін до БД';
|
|
46
|
+
COMMENT ON COLUMN log.table_changes.entity_type IS 'Таблиця, до якої вносяться зміни';
|
|
47
|
+
COMMENT ON COLUMN log.table_changes.entity_id IS 'ID строки, до якої вносяться зміни';
|
|
48
|
+
COMMENT ON COLUMN log.table_changes.change_user_id IS 'Ініціатор внесення змін';
|
|
49
|
+
|
|
50
|
+
COMMENT ON TABLE log.table_changes_data IS 'Логи змін в таблицях БД';
|
|
51
|
+
COMMENT ON COLUMN log.table_changes_data.change_id IS 'ID події зміни в БД';
|
|
52
|
+
COMMENT ON COLUMN log.table_changes_data.entity_key IS 'Колонка таблиці, до якої вносяться зміни';
|
|
53
|
+
COMMENT ON COLUMN log.table_changes_data.value_old IS 'Старе значення';
|
|
54
|
+
COMMENT ON COLUMN log.table_changes_data.value_new IS 'Нове значення';
|
|
55
|
+
|
|
56
|
+
COMMENT ON TABLE log.user_auth IS 'Логи авторизації';
|
|
57
|
+
COMMENT ON COLUMN log.user_auth.user_id IS 'ID користувача';
|
|
58
|
+
COMMENT ON COLUMN log.user_auth.auth_date IS 'Дата авторизації';
|
|
59
|
+
COMMENT ON COLUMN log.user_auth.auth_type IS 'Тип авторизації';
|
|
60
|
+
COMMENT ON COLUMN log.user_auth.auth_data IS 'Дані про користувача';
|
|
61
|
+
COMMENT ON COLUMN log.user_auth.ip IS 'IP адреса користувача';
|
|
62
|
+
|
|
63
|
+
ALTER TABLE log.table_changes DROP CONSTRAINT IF EXISTS log_table_changes_pkey cascade;
|
|
64
|
+
ALTER TABLE log.table_changes_data DROP CONSTRAINT IF EXISTS log_table_changes_data_pkey;
|
|
65
|
+
ALTER TABLE log.table_changes_data DROP CONSTRAINT IF EXISTS log_table_changes_data_change_id_fkey;
|
|
66
|
+
ALTER TABLE log.user_auth DROP CONSTRAINT IF EXISTS log_user_auth_pkey;
|
|
67
|
+
ALTER TABLE log.user_auth DROP CONSTRAINT IF EXISTS log_user_auth_user_id_fkey;
|
|
68
|
+
|
|
69
|
+
ALTER TABLE log.table_changes ADD CONSTRAINT log_table_changes_pkey PRIMARY KEY (change_id);
|
|
70
|
+
ALTER TABLE log.table_changes_data ADD CONSTRAINT log_table_changes_data_pkey PRIMARY KEY (change_data_id);
|
|
71
|
+
ALTER TABLE log.table_changes_data ADD CONSTRAINT log_table_changes_data_change_id_fkey FOREIGN KEY (change_id)
|
|
72
|
+
REFERENCES log.table_changes (change_id);
|
|
73
|
+
ALTER TABLE log.user_auth ADD CONSTRAINT log_user_auth_pkey PRIMARY KEY (user_auth_id);
|
|
74
|
+
-- ALTER TABLE log.user_auth ADD CONSTRAINT log_user_auth_user_id_fkey FOREIGN KEY (user_id) REFERENCES admin.users (uid) MATCH SIMPLE;
|
|
75
|
+
|
|
76
|
+
/* drop old columns */
|
|
77
|
+
alter table log.table_changes drop column if exists date_new;
|
|
78
|
+
alter table log.table_changes drop column if exists date_old;
|
|
79
|
+
alter table log.table_changes drop column if exists number_new;
|
|
80
|
+
alter table log.table_changes drop column if exists number_old;
|
|
81
|
+
alter table log.table_changes drop column if exists json_new;
|
|
82
|
+
alter table log.table_changes drop column if exists json_old;
|
|
83
|
+
alter table log.table_changes drop column if exists text_new;
|
|
84
|
+
alter table log.table_changes drop column if exists text_old;
|
|
85
|
+
alter table log.table_changes drop column if exists bool_new;
|
|
86
|
+
alter table log.table_changes drop column if exists bool_old;
|
|
87
|
+
alter table log.table_changes drop column if exists table_change_id;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
create schema if not exists admin;
|
|
2
|
+
create schema if not exists crm;
|
|
3
|
+
|
|
4
|
+
CREATE EXTENSION if not exists pg_trgm SCHEMA public VERSION "1.5";
|
|
5
|
+
|
|
6
|
+
-- drop old
|
|
7
|
+
DROP TABLE IF EXISTS admin.user_properties;
|
|
8
|
+
DROP TABLE IF EXISTS admin.table_properties;
|
|
9
|
+
DROP SCHEMA IF EXISTS setting cascade;
|
|
10
|
+
|
|
11
|
+
CREATE TABLE IF NOT EXISTS admin.properties();
|
|
12
|
+
ALTER TABLE admin.properties DROP CONSTRAINT IF EXISTS admin_properties_property_id_pkey;
|
|
13
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_id text NOT NULL DEFAULT next_id();
|
|
14
|
+
|
|
15
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_entity text;
|
|
16
|
+
COMMENT ON COLUMN admin.properties.property_entity IS 'Сутність';
|
|
17
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_key text;
|
|
18
|
+
COMMENT ON COLUMN admin.properties.property_key IS 'Ключ';
|
|
19
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_text text;
|
|
20
|
+
COMMENT ON COLUMN admin.properties.property_text IS 'Текстове значення налаштування';
|
|
21
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_int integer;
|
|
22
|
+
COMMENT ON COLUMN admin.properties.property_int IS 'Цілочислове значения';
|
|
23
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_json json;
|
|
24
|
+
COMMENT ON COLUMN admin.properties.property_json IS 'Значення налаштування';
|
|
25
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS level text;
|
|
26
|
+
COMMENT ON COLUMN admin.properties.level IS 'Рівень (user/system)';
|
|
27
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS object_id text;
|
|
28
|
+
COMMENT ON COLUMN admin.properties.object_id IS 'ID Об''єкту';
|
|
29
|
+
|
|
30
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS uid text NOT NULL DEFAULT '1'::text;
|
|
31
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS editor_id text;
|
|
32
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
33
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT now();
|
|
34
|
+
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS files json;
|
|
35
|
+
|
|
36
|
+
ALTER TABLE admin.properties ADD CONSTRAINT admin_properties_property_id_pkey PRIMARY KEY(property_id);
|
|
37
|
+
|
|
38
|
+
COMMENT ON TABLE admin.properties IS 'Налаштування';
|
|
39
|
+
|
|
40
|
+
CREATE TABLE IF NOT EXISTS admin.custom_column();
|
|
41
|
+
ALTER TABLE admin.custom_column DROP CONSTRAINT IF EXISTS admin_custom_column_column_id_pkey cascade;
|
|
42
|
+
alter table admin.custom_column drop constraint if exists admin_custom_column_name_entity_uid_unique;
|
|
43
|
+
|
|
44
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS column_id text;
|
|
45
|
+
ALTER TABLE admin.custom_column ALTER COLUMN column_id SET NOT NULL;
|
|
46
|
+
ALTER TABLE admin.custom_column ALTER COLUMN column_id SET DEFAULT next_id();
|
|
47
|
+
|
|
48
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS name text;
|
|
49
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS entity text;
|
|
50
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS title text;
|
|
51
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS format text;
|
|
52
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS data text;
|
|
53
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS filter boolean;
|
|
54
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS _table boolean;
|
|
55
|
+
|
|
56
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS uid text NOT NULL DEFAULT '1'::text;
|
|
57
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS editor_id text;
|
|
58
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
59
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT now();
|
|
60
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS files json;
|
|
61
|
+
|
|
62
|
+
ALTER TABLE admin.custom_column ADD CONSTRAINT admin_custom_column_column_id_pkey PRIMARY KEY(column_id);
|
|
63
|
+
ALTER TABLE admin.custom_column ADD CONSTRAINT admin_custom_column_name_entity_uid_unique UNIQUE (name,entity,uid);
|
|
64
|
+
|
|
65
|
+
COMMENT ON TABLE admin.custom_column IS 'Налаштування таблиць користувача';
|
|
66
|
+
COMMENT ON COLUMN admin.custom_column.name IS 'Ключ';
|
|
67
|
+
COMMENT ON COLUMN admin.custom_column.entity IS 'Таблиця';
|
|
68
|
+
COMMENT ON COLUMN admin.custom_column.title IS 'Підпис';
|
|
69
|
+
COMMENT ON COLUMN admin.custom_column.format IS 'Формат';
|
|
70
|
+
COMMENT ON COLUMN admin.custom_column.data IS 'Класифікатор';
|
|
71
|
+
COMMENT ON COLUMN admin.custom_column.filter IS 'Виводити у фільтрах';
|
|
72
|
+
COMMENT ON COLUMN admin.custom_column._table IS 'Відображати у таблиці';
|
|
73
|
+
|
|
74
|
+
CREATE TABLE if not exists crm.extra_data();
|
|
75
|
+
ALTER TABLE crm.extra_data DROP CONSTRAINT IF EXISTS crm_extra_data_pkey;
|
|
76
|
+
ALTER TABLE crm.extra_data DROP CONSTRAINT IF EXISTS crm_extra_data_property_id_fkey;
|
|
77
|
+
ALTER TABLE crm.extra_data DROP CONSTRAINT IF EXISTS crm_extra_data_property_key_object_id_entity_unique;
|
|
78
|
+
|
|
79
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS extra_data_id text;
|
|
80
|
+
ALTER TABLE crm.extra_data ALTER COLUMN extra_data_id SET NOT NULL;
|
|
81
|
+
ALTER TABLE crm.extra_data ALTER COLUMN extra_data_id SET DEFAULT next_id();
|
|
82
|
+
|
|
83
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS property_id text;
|
|
84
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS property_key text;
|
|
85
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS property_entity text;
|
|
86
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS object_id text;
|
|
87
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS value_text text;
|
|
88
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS value_date timestamp without time zone;
|
|
89
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS value_array text[];
|
|
90
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS uid text;
|
|
91
|
+
ALTER TABLE crm.extra_data ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
92
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
93
|
+
ALTER TABLE crm.extra_data ALTER COLUMN cdate SET DEFAULT date_trunc('seconds'::text, now());
|
|
94
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS editor_id text;
|
|
95
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
96
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS files json;
|
|
97
|
+
|
|
98
|
+
ALTER TABLE crm.extra_data ADD CONSTRAINT crm_extra_data_pkey PRIMARY KEY (extra_data_id);
|
|
99
|
+
-- delete from crm.extra_data where property_id not in (select column_id from admin.custom_column);
|
|
100
|
+
ALTER TABLE crm.extra_data ADD CONSTRAINT crm_extra_data_property_id_fkey FOREIGN KEY (property_id) REFERENCES admin.custom_column (column_id) MATCH SIMPLE;
|
|
101
|
+
ALTER TABLE crm.extra_data ADD CONSTRAINT crm_extra_data_property_key_object_id_entity_unique UNIQUE (property_key, object_id, property_entity);
|
|
102
|
+
|
|
103
|
+
COMMENT ON TABLE crm.extra_data IS 'Значення користувацьких полів';
|
|
104
|
+
COMMENT ON COLUMN crm.extra_data.property_id IS 'ID поля користувача';
|
|
105
|
+
COMMENT ON COLUMN crm.extra_data.property_key IS 'Назва колонки';
|
|
106
|
+
COMMENT ON COLUMN crm.extra_data.property_entity IS 'Таблиця';
|
|
107
|
+
COMMENT ON COLUMN crm.extra_data.object_id IS 'Ідентифікатор об''єкту';
|
|
108
|
+
COMMENT ON COLUMN crm.extra_data.value_text IS 'Значення';
|
|
109
|
+
COMMENT ON COLUMN crm.extra_data.value_date IS 'Дата';
|
|
110
|
+
COMMENT ON COLUMN crm.extra_data.uid IS 'ID користувача';
|
|
111
|
+
|
|
112
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_cdate_btree_idx ON crm.extra_data USING btree (cdate);
|
|
113
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_property_id_btree_idx ON crm.extra_data USING btree (property_id COLLATE pg_catalog."default");
|
|
114
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_property_entity_btree_idx ON crm.extra_data USING btree (property_entity COLLATE pg_catalog."default");
|
|
115
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_object_id_btree_idx ON crm.extra_data USING btree (object_id COLLATE pg_catalog."default");
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
create schema if not exists admin;
|
|
2
|
+
create schema if not exists public;
|
|
3
|
+
CREATE EXTENSION if not exists pg_trgm SCHEMA public VERSION "1.5";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
-- Admin Menu
|
|
7
|
+
-- DROP TABLE if exists admin.menu;
|
|
8
|
+
CREATE TABLE if not exists admin.menu();
|
|
9
|
+
alter table admin.menu DROP CONSTRAINT if exists admin_menu_id_pkey cascade;
|
|
10
|
+
alter table admin.menu DROP CONSTRAINT if exists admin_menu_name_unique;
|
|
11
|
+
|
|
12
|
+
alter table admin.menu add column if not exists menu_id text NOT NULL default next_id();
|
|
13
|
+
alter table admin.menu add column if not exists name text;
|
|
14
|
+
alter table admin.menu add column if not exists ord numeric;
|
|
15
|
+
alter table admin.menu add column if not exists enabled boolean NOT NULL DEFAULT true;
|
|
16
|
+
alter table admin.menu add column if not exists uid text;
|
|
17
|
+
alter table admin.menu add column if not exists editor_id text;
|
|
18
|
+
alter table admin.menu add column if not exists editor_date timestamp without time zone;
|
|
19
|
+
alter table admin.menu add column if not exists cdate timestamp without time zone DEFAULT now();
|
|
20
|
+
alter table admin.menu add CONSTRAINT admin_menu_id_pkey PRIMARY KEY (menu_id);
|
|
21
|
+
alter table admin.menu add CONSTRAINT admin_menu_name_unique UNIQUE (name);
|
|
22
|
+
|
|
23
|
+
COMMENT ON TABLE admin.menu IS 'Пункти меню';
|
|
24
|
+
COMMENT ON COLUMN admin.menu.menu_id IS 'Ідентифікатор пункту меню';
|
|
25
|
+
COMMENT ON COLUMN admin.menu.name IS 'Назва пункту меню';
|
|
26
|
+
COMMENT ON COLUMN admin.menu.ord IS 'Порядковий номер';
|
|
27
|
+
COMMENT ON COLUMN admin.menu.enabled IS 'On / Off';
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
-- Role (Group)
|
|
33
|
+
-- drop table if exists admin.roles;
|
|
34
|
+
CREATE TABLE if not exists admin.roles();
|
|
35
|
+
alter table admin.roles DROP CONSTRAINT if exists admin_roles_id_pkey cascade;
|
|
36
|
+
|
|
37
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists role_id text NOT NULL DEFAULT next_id();
|
|
38
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists name text;
|
|
39
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists enabled boolean;
|
|
40
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists info text;
|
|
41
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists cdate timestamp without time zone DEFAULT date_trunc('seconds'::text, now());
|
|
42
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists uid text;
|
|
43
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists editor_id text;
|
|
44
|
+
ALTER TABLE admin.roles ADD COLUMN if not exists editor_date timestamp without time zone;
|
|
45
|
+
|
|
46
|
+
ALTER TABLE admin.roles ADD CONSTRAINT admin_roles_id_pkey PRIMARY KEY(role_id);
|
|
47
|
+
|
|
48
|
+
COMMENT ON TABLE admin.roles IS 'Групи';
|
|
49
|
+
COMMENT ON COLUMN admin.roles.role_id IS 'ID';
|
|
50
|
+
COMMENT ON COLUMN admin.roles.name IS 'Назва групи';
|
|
51
|
+
COMMENT ON COLUMN admin.roles.enabled IS 'On / Off';
|
|
52
|
+
COMMENT ON COLUMN admin.roles.info IS 'Опис групи';
|
|
53
|
+
COMMENT ON COLUMN admin.roles.cdate IS 'Дата створення';
|
|
54
|
+
COMMENT ON COLUMN admin.roles.uid IS 'Хто створив';
|
|
55
|
+
COMMENT ON COLUMN admin.roles.editor_id IS 'Останній редагувач';
|
|
56
|
+
COMMENT ON COLUMN admin.roles.editor_date IS 'Дата останнього редагування';
|
|
57
|
+
|
|
58
|
+
-- Routes (Interfaces)
|
|
59
|
+
-- DROP TABLE if exists admin.routes;
|
|
60
|
+
CREATE TABLE if not exists admin.routes();
|
|
61
|
+
alter table admin.routes DROP CONSTRAINT if exists admin_route_id_pkey cascade;
|
|
62
|
+
alter table admin.routes DROP constraint if exists admin_route_menu_id_fkey cascade;
|
|
63
|
+
alter table admin.routes DROP constraint if exists admin_route_alias_query_unique cascade;
|
|
64
|
+
|
|
65
|
+
alter table admin.routes add column if not exists route_id text;
|
|
66
|
+
alter table admin.routes alter column route_id set not null;
|
|
67
|
+
alter table admin.routes alter column route_id set default next_id();
|
|
68
|
+
alter table admin.routes add column if not exists alias text;
|
|
69
|
+
alter table admin.routes alter column alias drop not null;
|
|
70
|
+
-- alter table admin.routes alter column alias set not null;
|
|
71
|
+
alter table admin.routes add column if not exists table_name text;
|
|
72
|
+
alter table admin.routes alter column table_name drop not null;
|
|
73
|
+
-- alter table admin.routes alter column table_name set not null;
|
|
74
|
+
alter table admin.routes add column if not exists query text;
|
|
75
|
+
alter table admin.routes add column if not exists actions text[];
|
|
76
|
+
alter table admin.routes add column if not exists access text;
|
|
77
|
+
alter table admin.routes add column if not exists title text;
|
|
78
|
+
alter table admin.routes add column if not exists public boolean;
|
|
79
|
+
alter table admin.routes add column if not exists menu_id text;
|
|
80
|
+
alter table admin.routes add column if not exists uid text;
|
|
81
|
+
alter table admin.routes add column if not exists editor_id text;
|
|
82
|
+
alter table admin.routes add column if not exists editor_date timestamp without time zone;
|
|
83
|
+
alter table admin.routes add column if not exists cdate timestamp without time zone DEFAULT now();
|
|
84
|
+
alter table admin.routes alter column cdate set DEFAULT now();
|
|
85
|
+
alter table admin.routes add column if not exists enabled boolean;
|
|
86
|
+
alter table admin.routes alter column enabled set NOT NULL;
|
|
87
|
+
alter table admin.routes alter column enabled set DEFAULT true;
|
|
88
|
+
|
|
89
|
+
alter table admin.routes add CONSTRAINT admin_route_id_pkey PRIMARY KEY (route_id);
|
|
90
|
+
alter table admin.routes add constraint admin_route_menu_id_fkey FOREIGN KEY (menu_id) REFERENCES admin.menu(menu_id);
|
|
91
|
+
|
|
92
|
+
-- alter table admin.routes add CONSTRAINT admin_route_alias_query_unique UNIQUE (alias, query);
|
|
93
|
+
|
|
94
|
+
COMMENT ON TABLE admin.routes IS 'Список інтерфейсів';
|
|
95
|
+
COMMENT ON COLUMN admin.routes.route_id IS 'Ідентифікатор інтерфейса';
|
|
96
|
+
COMMENT ON COLUMN admin.routes.alias IS 'Назва файлу інтерфейса';
|
|
97
|
+
|
|
98
|
+
COMMENT ON COLUMN admin.routes.table_name IS 'Таблиця в БД';
|
|
99
|
+
comment on column admin.routes.query is 'Запит до таблиці';
|
|
100
|
+
COMMENT ON COLUMN admin.routes.actions IS 'Дії';
|
|
101
|
+
COMMENT ON COLUMN admin.routes.access IS 'Рівень доступу';
|
|
102
|
+
COMMENT ON COLUMN admin.routes.title IS 'Назва інтерфейсу українською';
|
|
103
|
+
COMMENT ON COLUMN admin.routes.public IS 'Ознака чи для всіх показується';
|
|
104
|
+
COMMENT ON COLUMN admin.routes.enabled IS 'On / Off';
|
|
105
|
+
COMMENT ON COLUMN admin.routes.menu_id IS 'Пункт меню (для collapse)';
|
|
106
|
+
|
|
107
|
+
-- User <> Role (Group)
|
|
108
|
+
-- DROP TABLE if exists admin.user_roles;
|
|
109
|
+
|
|
110
|
+
CREATE TABLE if not exists admin.user_roles();
|
|
111
|
+
ALTER TABLE admin.user_roles DROP CONSTRAINT IF EXISTS admin_user_roles_role_id_pkey;
|
|
112
|
+
ALTER TABLE admin.user_roles DROP CONSTRAINT IF EXISTS admin_user_roles_pkey;
|
|
113
|
+
ALTER TABLE admin.user_roles DROP CONSTRAINT IF EXISTS admin_user_roles_role_id_fkey;
|
|
114
|
+
ALTER TABLE admin.user_roles DROP CONSTRAINT IF EXISTS admin_user_roles_user_uid_fkey;
|
|
115
|
+
ALTER TABLE admin.user_roles DROP CONSTRAINT IF EXISTS admin_user_roles_user_uid_role_id_key;
|
|
116
|
+
|
|
117
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS ugr_id text NOT NULL DEFAULT next_id();
|
|
118
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS user_uid text NOT NULL;
|
|
119
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS role_id text NOT NULL;
|
|
120
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT date_trunc('seconds'::text, now());
|
|
121
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS uid text;
|
|
122
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS editor_id text;
|
|
123
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
124
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS expiration date;
|
|
125
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS access_granted text;
|
|
126
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS access_granted_time timestamp without time zone;
|
|
127
|
+
ALTER TABLE admin.user_roles ADD COLUMN IF NOT EXISTS actions text [];
|
|
128
|
+
|
|
129
|
+
ALTER TABLE admin.user_roles ADD CONSTRAINT admin_user_roles_pkey PRIMARY KEY (ugr_id);
|
|
130
|
+
ALTER TABLE admin.user_roles ADD CONSTRAINT admin_user_roles_user_uid_role_id_key UNIQUE (user_uid, role_id);
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
COMMENT ON TABLE admin.user_roles IS 'Відношення користувачів до груп';
|
|
134
|
+
COMMENT ON COLUMN admin.user_roles.user_uid IS 'ID користувача';
|
|
135
|
+
COMMENT ON COLUMN admin.user_roles.role_id IS 'ID групи';
|
|
136
|
+
COMMENT ON COLUMN admin.user_roles.uid IS 'Користувач, який створив запис в БД';
|
|
137
|
+
COMMENT ON COLUMN admin.user_roles.expiration IS 'закінчення терміну дії доступу до групи';
|
|
138
|
+
COMMENT ON COLUMN admin.user_roles.access_granted IS 'Ідентифікатор користувача який надав доступ';
|
|
139
|
+
COMMENT ON COLUMN admin.user_roles.access_granted_time IS 'Час коли надали доступ';
|
|
140
|
+
COMMENT ON COLUMN admin.user_roles.actions IS 'Рівень доступу користувача в межах групи';
|
|
141
|
+
|
|
142
|
+
CREATE INDEX IF NOT EXISTS admin_user_roles_access_user_uid_idx ON admin.user_roles USING btree (user_uid COLLATE pg_catalog."default");
|
|
143
|
+
CREATE INDEX IF NOT EXISTS admin_user_roles_cdate_btree_idx ON admin.user_roles USING btree (cdate);
|
|
144
|
+
CREATE INDEX IF NOT EXISTS admin_user_roles_editor_date_btree_idx ON admin.user_roles USING btree (editor_date);
|
|
145
|
+
CREATE INDEX IF NOT EXISTS admin_user_roles_user_uid_gin_idx ON admin.user_roles USING gin (user_uid COLLATE pg_catalog."default" gin_trgm_ops);
|
|
146
|
+
CREATE INDEX IF NOT EXISTS admin_user_roles_role_id_idx ON admin.user_roles USING btree (role_id COLLATE pg_catalog."default");
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
-- Route (Interface) <> User / Role (Group)
|
|
150
|
+
-- drop table if exists admin.role_access;
|
|
151
|
+
drop table if exists admin.access;
|
|
152
|
+
|
|
153
|
+
CREATE TABLE if not exists admin.role_access();
|
|
154
|
+
alter table admin.role_access DROP CONSTRAINT if exists admin_access_id_pkey;
|
|
155
|
+
alter table admin.role_access DROP CONSTRAINT if exists admin_role_access_id_pkey;
|
|
156
|
+
alter table admin.role_access DROP CONSTRAINT if exists admin_access_role_id_fkey;
|
|
157
|
+
alter table admin.role_access DROP CONSTRAINT if exists admin_access_route_id_uid_unique;
|
|
158
|
+
alter table admin.role_access DROP CONSTRAINT if exists admin_access_route_id_fkey;
|
|
159
|
+
|
|
160
|
+
alter table admin.role_access add column if not exists access_id text NOT NULL DEFAULT next_id();
|
|
161
|
+
alter table admin.role_access add column if not exists route_id text NOT NULL;
|
|
162
|
+
alter table admin.role_access add column if not exists role_id text;
|
|
163
|
+
alter table admin.role_access add column if not exists user_uid text;
|
|
164
|
+
alter table admin.role_access add column if not exists scope text;
|
|
165
|
+
alter table admin.role_access add column if not exists actions text[];
|
|
166
|
+
ALTER TABLE admin.role_access ADD COLUMN IF NOT EXISTS access_granted text;
|
|
167
|
+
ALTER TABLE admin.role_access ADD COLUMN IF NOT EXISTS access_granted_time timestamp without time zone;
|
|
168
|
+
alter table admin.role_access add column if not exists cdate timestamp without time zone NOT NULL DEFAULT date_trunc('seconds'::text, now());
|
|
169
|
+
alter table admin.role_access add column if not exists uid text;
|
|
170
|
+
alter table admin.role_access add column if not exists editor_id text;
|
|
171
|
+
alter table admin.role_access add column if not exists editor_date timestamp without time zone;
|
|
172
|
+
|
|
173
|
+
alter table admin.role_access add CONSTRAINT admin_role_access_id_pkey PRIMARY KEY (access_id);
|
|
174
|
+
alter table admin.role_access add CONSTRAINT admin_access_role_id_fkey FOREIGN KEY (role_id) REFERENCES admin.roles (role_id);
|
|
175
|
+
alter table admin.role_access add CONSTRAINT admin_access_route_id_uid_unique UNIQUE (route_id, user_uid, role_id);
|
|
176
|
+
alter table admin.role_access add constraint admin_access_route_id_fkey FOREIGN KEY (route_id) REFERENCES admin.routes(route_id);
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
COMMENT ON TABLE admin.role_access IS 'Налаштування прав. Відношення груп / окремих користувачів до шаблонів';
|
|
180
|
+
COMMENT ON COLUMN admin.role_access.route_id IS 'ID шаблона';
|
|
181
|
+
COMMENT ON COLUMN admin.role_access.role_id IS 'ID групи';
|
|
182
|
+
COMMENT ON COLUMN admin.role_access.user_uid IS 'ID користувача';
|
|
183
|
+
COMMENT ON COLUMN admin.role_access.scope IS 'Обмеження виведення (власні, відповідальний, всі)';
|
|
184
|
+
COMMENT ON COLUMN admin.role_access.actions IS 'Доступні дії';
|
|
185
|
+
COMMENT ON COLUMN admin.role_access.access_granted IS 'Ідентифікатор користувача який надав доступ';
|
|
186
|
+
COMMENT ON COLUMN admin.role_access.access_granted_time IS 'Час коли надали доступ';
|
|
187
|
+
|
|
188
|
+
CREATE INDEX if not exists admin_access_route_id_idx ON admin.role_access USING btree (route_id COLLATE pg_catalog."default");
|
|
189
|
+
CREATE INDEX if not exists admin_access_role_id_idx ON admin.role_access USING btree (role_id COLLATE pg_catalog."default");
|
|
190
|
+
|
|
191
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
create schema if not exists admin;
|
|
2
|
+
|
|
3
|
+
-- DROP TABLE is exists admin.templates;
|
|
4
|
+
CREATE TABLE if not exists admin.templates();
|
|
5
|
+
ALTER TABLE admin.templates add column if not exists template_id text NOT NULL DEFAULT next_id();
|
|
6
|
+
ALTER TABLE admin.templates DROP CONSTRAINT if exists admin_templates_template_id_pkey cascade;
|
|
7
|
+
ALTER TABLE admin.templates DROP CONSTRAINT if exists admin_templates_name_type_unique;
|
|
8
|
+
|
|
9
|
+
ALTER TABLE admin.templates add column if not exists name text;
|
|
10
|
+
ALTER TABLE admin.templates add column if not exists title text;
|
|
11
|
+
ALTER TABLE admin.templates add column if not exists type text;
|
|
12
|
+
ALTER TABLE admin.templates add column if not exists category text;
|
|
13
|
+
ALTER TABLE admin.templates add column if not exists route_id text;
|
|
14
|
+
ALTER TABLE admin.templates add column if not exists is_active boolean;
|
|
15
|
+
ALTER TABLE admin.templates alter column is_active set default true;
|
|
16
|
+
ALTER TABLE admin.templates add column if not exists body text;
|
|
17
|
+
ALTER TABLE admin.templates add column if not exists description text;
|
|
18
|
+
ALTER TABLE admin.templates add column if not exists placeholders json;
|
|
19
|
+
ALTER TABLE admin.templates add column if not exists version numeric;
|
|
20
|
+
|
|
21
|
+
ALTER TABLE admin.templates add column if not exists created_by text;
|
|
22
|
+
ALTER TABLE admin.templates add column if not exists created_at timestamp without time zone;
|
|
23
|
+
ALTER TABLE admin.templates alter column created_at set DEFAULT date_trunc('seconds'::text, now());
|
|
24
|
+
ALTER TABLE admin.templates add column if not exists updated_by text;
|
|
25
|
+
ALTER TABLE admin.templates add column if not exists updated_at timestamp without time zone;
|
|
26
|
+
ALTER TABLE admin.templates alter column updated_at set DEFAULT date_trunc('seconds'::text, now());
|
|
27
|
+
|
|
28
|
+
ALTER TABLE admin.templates add CONSTRAINT admin_templates_template_id_pkey PRIMARY KEY (template_id);
|
|
29
|
+
ALTER TABLE admin.templates add CONSTRAINT admin_templates_name_type_unique UNIQUE (name, type);
|
|
30
|
+
|
|
31
|
+
COMMENT ON TABLE admin.templates IS 'Шаблони для друку';
|
|
32
|
+
|
|
33
|
+
COMMENT ON COLUMN admin.templates.created_by IS 'ID користувача';
|
|
34
|
+
|
|
35
|
+
COMMENT ON COLUMN admin.templates.name IS 'Систамна назва шаблону';
|
|
36
|
+
COMMENT ON COLUMN admin.templates.title IS 'Назва шаблону українською';
|
|
37
|
+
COMMENT ON COLUMN admin.templates.type IS 'Тип вихідних даних шаблону (demo/user)';
|
|
38
|
+
COMMENT ON COLUMN admin.templates.category IS 'Категорія або тип документа';
|
|
39
|
+
COMMENT ON COLUMN admin.templates.route_id IS 'ID інтерфейсу';
|
|
40
|
+
COMMENT ON COLUMN admin.templates.is_active IS 'Чи доступний шаблон для використання';
|
|
41
|
+
COMMENT ON COLUMN admin.templates.body IS 'Body HTML';
|
|
42
|
+
COMMENT ON COLUMN admin.templates.description IS 'Короткий опис шаблону';
|
|
43
|
+
COMMENT ON COLUMN admin.templates.placeholders IS 'Список змінних, які можна вставляти';
|
|
44
|
+
COMMENT ON COLUMN admin.templates.version IS 'Версія шаблону';
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
create schema if not exists admin;
|
|
2
|
+
|
|
3
|
+
-- DROP TABLE is exists admin.users;
|
|
4
|
+
CREATE TABLE if not exists admin.users();
|
|
5
|
+
ALTER TABLE admin.users add column if not exists uid text NOT NULL DEFAULT next_id();
|
|
6
|
+
ALTER TABLE admin.users DROP CONSTRAINT if exists admin_user_uid_pkey cascade;
|
|
7
|
+
ALTER TABLE admin.users DROP CONSTRAINT if exists user_pk cascade;
|
|
8
|
+
ALTER TABLE admin.users DROP CONSTRAINT if exists admin_user_user_rnokpp;
|
|
9
|
+
|
|
10
|
+
ALTER TABLE admin.users add column if not exists login text;
|
|
11
|
+
ALTER TABLE admin.users add column if not exists password text NOT NULL DEFAULT ''::text;
|
|
12
|
+
ALTER TABLE admin.users add column if not exists user_name text;
|
|
13
|
+
ALTER TABLE admin.users add column if not exists sur_name text;
|
|
14
|
+
ALTER TABLE admin.users add column if not exists father_name text;
|
|
15
|
+
ALTER TABLE admin.users add column if not exists email text;
|
|
16
|
+
ALTER TABLE admin.users add column if not exists phone text;
|
|
17
|
+
ALTER TABLE admin.users add column if not exists avatar text;
|
|
18
|
+
ALTER TABLE admin.users add column if not exists enabled boolean;
|
|
19
|
+
ALTER TABLE admin.users add column if not exists user_personal_code text;
|
|
20
|
+
ALTER TABLE admin.users add column if not exists last_activity_date timestamp without time zone;
|
|
21
|
+
ALTER TABLE admin.users add column if not exists user_type text DEFAULT 'regular'::text;
|
|
22
|
+
ALTER TABLE admin.users add column if not exists user_rnokpp text;
|
|
23
|
+
ALTER TABLE admin.users alter column user_rnokpp drop not null;
|
|
24
|
+
ALTER TABLE admin.users add column if not exists social_auth_id text;
|
|
25
|
+
ALTER TABLE admin.users add column if not exists social_auth_type text;
|
|
26
|
+
ALTER TABLE admin.users add column if not exists salt text;
|
|
27
|
+
ALTER TABLE admin.users add column if not exists cdate timestamp without time zone DEFAULT date_trunc('seconds'::text, now());
|
|
28
|
+
ALTER TABLE admin.users add column if not exists editor_id text;
|
|
29
|
+
ALTER TABLE admin.users add column if not exists editor_date timestamp without time zone;
|
|
30
|
+
|
|
31
|
+
ALTER TABLE admin.users add CONSTRAINT admin_user_uid_pkey PRIMARY KEY (uid);
|
|
32
|
+
ALTER TABLE admin.users add CONSTRAINT admin_user_user_rnokpp UNIQUE (user_rnokpp);
|
|
33
|
+
|
|
34
|
+
COMMENT ON TABLE admin.users IS 'Користувачі';
|
|
35
|
+
|
|
36
|
+
COMMENT ON COLUMN admin.users.uid IS 'ID користувача';
|
|
37
|
+
COMMENT ON COLUMN admin.users.login IS 'Логін користувача';
|
|
38
|
+
COMMENT ON COLUMN admin.users.password IS 'Пароль користувача';
|
|
39
|
+
COMMENT ON COLUMN admin.users.user_name IS 'Ім''я користувача';
|
|
40
|
+
COMMENT ON COLUMN admin.users.sur_name IS 'Прізвище користувача';
|
|
41
|
+
COMMENT ON COLUMN admin.users.father_name IS 'По-батькові користувача';
|
|
42
|
+
COMMENT ON COLUMN admin.users.email IS 'Ел. пошта користувача';
|
|
43
|
+
COMMENT ON COLUMN admin.users.phone IS 'Номер телефону користувача';
|
|
44
|
+
COMMENT ON COLUMN admin.users.avatar IS 'Аватар';
|
|
45
|
+
COMMENT ON COLUMN admin.users.enabled IS 'On / Off';
|
|
46
|
+
COMMENT ON COLUMN admin.users.last_activity_date IS 'Дата останньої активності';
|
|
47
|
+
COMMENT ON COLUMN admin.users.user_type IS 'Тип користувача';
|
|
48
|
+
COMMENT ON COLUMN admin.users.salt IS 'Сіль';
|
|
49
|
+
|
|
50
|
+
CREATE EXTENSION if not exists pgcrypto SCHEMA public VERSION "1.3";
|
|
51
|
+
CREATE OR REPLACE FUNCTION admin.crypt(text, text) RETURNS text AS '$libdir/pgcrypto', 'pg_crypt' LANGUAGE c IMMUTABLE STRICT COST 1;
|
|
52
|
+
|
|
53
|
+
-- DROP FUNCTION admin.insert_update_user_before();
|
|
54
|
+
CREATE OR REPLACE FUNCTION admin.insert_update_user_before()
|
|
55
|
+
RETURNS trigger AS
|
|
56
|
+
|
|
57
|
+
$BODY$
|
|
58
|
+
DECLARE
|
|
59
|
+
|
|
60
|
+
iterations int;
|
|
61
|
+
hash character varying;
|
|
62
|
+
|
|
63
|
+
BEGIN
|
|
64
|
+
|
|
65
|
+
if(TG_OP='INSERT' or (TG_OP='UPDATE' and new.password<>old.password)) then
|
|
66
|
+
if(char_length(new.password) <> 0 and char_length(new.password) < 8) then
|
|
67
|
+
--raise exception 'password must be longer than 8 characters';
|
|
68
|
+
end if;
|
|
69
|
+
new.salt=md5(now()::text);
|
|
70
|
+
--raise exception '%','change pass';
|
|
71
|
+
if(new.salt ='') then
|
|
72
|
+
new.salt=gen_salt('md5');
|
|
73
|
+
end if;
|
|
74
|
+
iterations = 10;
|
|
75
|
+
hash='';
|
|
76
|
+
|
|
77
|
+
loop
|
|
78
|
+
if iterations=0 then
|
|
79
|
+
exit;
|
|
80
|
+
end if;
|
|
81
|
+
hash = md5(new.password||hash||new.salt);
|
|
82
|
+
iterations=iterations-1;
|
|
83
|
+
end loop;
|
|
84
|
+
new.password=admin.crypt(hash,new.salt);
|
|
85
|
+
|
|
86
|
+
end if;
|
|
87
|
+
RETURN new;
|
|
88
|
+
END
|
|
89
|
+
$BODY$
|
|
90
|
+
|
|
91
|
+
LANGUAGE plpgsql VOLATILE COST 100;
|
|
92
|
+
|
|
93
|
+
DROP TRIGGER if exists insert_update_user_before on admin.users;
|
|
94
|
+
CREATE TRIGGER insert_update_user_before BEFORE INSERT OR UPDATE ON admin.users FOR EACH ROW
|
|
95
|
+
EXECUTE PROCEDURE admin.insert_update_user_before();
|
|
96
|
+
|
|
97
|
+
-- DROP TABLE is exists admin.users_social_auth;
|
|
98
|
+
CREATE TABLE if not exists admin.users_social_auth();
|
|
99
|
+
ALTER TABLE admin.users_social_auth add column if not exists users_social_auth_id text NOT NULL DEFAULT next_id();
|
|
100
|
+
ALTER TABLE admin.users_social_auth alter column users_social_auth_id set DEFAULT next_id();
|
|
101
|
+
ALTER TABLE admin.users_social_auth DROP CONSTRAINT if exists users_social_auth_pk cascade;
|
|
102
|
+
ALTER TABLE admin.users_social_auth DROP CONSTRAINT if exists users_social_auth_users_fk cascade;
|
|
103
|
+
ALTER TABLE admin.users_social_auth DROP CONSTRAINT if exists users_social_auth_social_id_email_unique;
|
|
104
|
+
|
|
105
|
+
ALTER TABLE admin.users_social_auth add column if not exists uid text not null;
|
|
106
|
+
ALTER TABLE admin.users_social_auth add column if not exists user_name text;
|
|
107
|
+
ALTER TABLE admin.users_social_auth add column if not exists sur_name text;
|
|
108
|
+
ALTER TABLE admin.users_social_auth add column if not exists email text;
|
|
109
|
+
ALTER TABLE admin.users_social_auth add column if not exists city text;
|
|
110
|
+
ALTER TABLE admin.users_social_auth add column if not exists phone text;
|
|
111
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_id text;
|
|
112
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_type text;
|
|
113
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_code text;
|
|
114
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_obj json;
|
|
115
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_date timestamp without time zone;
|
|
116
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_softpro_code text;
|
|
117
|
+
ALTER TABLE admin.users_social_auth add column if not exists enabled boolean;
|
|
118
|
+
ALTER TABLE admin.users_social_auth add column if not exists cdate timestamp without time zone;
|
|
119
|
+
ALTER TABLE admin.users_social_auth alter column cdate SET DEFAULT date_trunc('seconds'::text, now());
|
|
120
|
+
|
|
121
|
+
ALTER TABLE admin.users_social_auth add column if not exists editor_id text;
|
|
122
|
+
ALTER TABLE admin.users_social_auth add column if not exists lang text;
|
|
123
|
+
ALTER TABLE admin.users_social_auth add column if not exists editor_date timestamp without time zone;
|
|
124
|
+
ALTER TABLE admin.users_social_auth add column if not exists social_auth_url text;
|
|
125
|
+
ALTER TABLE admin.users_social_auth add CONSTRAINT users_social_auth_pk PRIMARY KEY (users_social_auth_id);
|
|
126
|
+
ALTER TABLE admin.users_social_auth add CONSTRAINT users_social_auth_users_fk FOREIGN KEY (uid) REFERENCES admin.users (uid) MATCH SIMPLE on delete cascade;
|
|
127
|
+
ALTER TABLE admin.users_social_auth add CONSTRAINT users_social_auth_social_id_email_unique UNIQUE (social_auth_id,email);
|
|
128
|
+
|
|
129
|
+
COMMENT ON COLUMN admin.users_social_auth.uid IS 'id пользователя';
|
|
130
|
+
COMMENT ON COLUMN admin.users_social_auth.user_name IS 'Имя пользователя';
|
|
131
|
+
COMMENT ON COLUMN admin.users_social_auth.sur_name IS 'Фамилия';
|
|
132
|
+
COMMENT ON COLUMN admin.users_social_auth.email IS 'email пользователя';
|
|
133
|
+
COMMENT ON COLUMN admin.users_social_auth.city IS 'Місто';
|
|
134
|
+
COMMENT ON COLUMN admin.users_social_auth.phone IS 'Телефон';
|
|
135
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_id IS 'ID в соцсети';
|
|
136
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_type IS 'тип соцсети';
|
|
137
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_code IS 'код обьекта соцсети, используеться соцсетью';
|
|
138
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_obj IS 'обьект соцсети';
|
|
139
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_date IS 'время получение последнего обьекта соцсети';
|
|
140
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_softpro_code IS 'код обьекта соцсети, создаваемый и используемый сервером авторизации';
|
|
141
|
+
COMMENT ON COLUMN admin.users_social_auth.enabled IS 'Выключатель';
|
|
142
|
+
COMMENT ON COLUMN admin.users_social_auth.social_auth_url IS 'URL для QR code';
|
|
143
|
+
|
|
144
|
+
CREATE TABLE IF NOT EXISTS admin.user_cls();
|
|
145
|
+
ALTER TABLE admin.user_cls DROP CONSTRAINT IF EXISTS admin_user_cls_pkey;
|
|
146
|
+
ALTER TABLE admin.user_cls DROP CONSTRAINT IF EXISTS admin_user_unique;
|
|
147
|
+
|
|
148
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS user_clsid text;
|
|
149
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS code text;
|
|
150
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS parent text;
|
|
151
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS name text;
|
|
152
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS icon text;
|
|
153
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS data text;
|
|
154
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS type text;
|
|
155
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS files json;
|
|
156
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
157
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS editor_id text;
|
|
158
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
159
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS uid text;
|
|
160
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS color text;
|
|
161
|
+
|
|
162
|
+
ALTER TABLE admin.user_cls ALTER COLUMN user_clsid SET NOT NULL;
|
|
163
|
+
ALTER TABLE admin.user_cls ALTER COLUMN user_clsid SET DEFAULT next_id();
|
|
164
|
+
ALTER TABLE admin.user_cls ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
165
|
+
ALTER TABLE admin.user_cls ALTER COLUMN uid SET NOT NULL;
|
|
166
|
+
ALTER TABLE admin.user_cls ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
167
|
+
|
|
168
|
+
ALTER TABLE admin.user_cls ADD CONSTRAINT admin_user_cls_pkey PRIMARY KEY(user_clsid);
|
|
169
|
+
ALTER TABLE admin.user_cls ADD CONSTRAINT admin_user_unique UNIQUE(code, parent);
|
|
170
|
+
|
|
171
|
+
COMMENT ON TABLE admin.user_cls IS 'Користувацькі класифікатори';
|
|
172
|
+
COMMENT ON COLUMN admin.user_cls.user_clsid IS 'ID';
|
|
173
|
+
COMMENT ON COLUMN admin.user_cls.code IS 'Код';
|
|
174
|
+
COMMENT ON COLUMN admin.user_cls.name IS 'Назва';
|
|
175
|
+
COMMENT ON COLUMN admin.user_cls.icon IS 'Іконка';
|
|
176
|
+
COMMENT ON COLUMN admin.user_cls.color IS 'Колір';
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* eslint-disable no-return-assign */
|
|
2
|
+
// This file contains code that we reuse
|
|
3
|
+
// between our tests.
|
|
4
|
+
import Fastify from 'fastify';
|
|
5
|
+
|
|
6
|
+
import config from './config.js';
|
|
7
|
+
import plugin from './index.js';
|
|
8
|
+
|
|
9
|
+
import loggerTest from './server/routes/logger/controllers/logger.test.api.js';
|
|
10
|
+
import { logger, addTemplateDir } from './utils.js';
|
|
11
|
+
|
|
12
|
+
const cwd = process.cwd();
|
|
13
|
+
|
|
14
|
+
const app = Fastify({ loggerInstance: logger });
|
|
15
|
+
await app.register(plugin, config);
|
|
16
|
+
addTemplateDir(`${cwd}/module/test`);
|
|
17
|
+
|
|
18
|
+
app.get('/logger-test', { schema: {} }, loggerTest);
|
|
19
|
+
app.get('/err', { schema: {} }, () => {
|
|
20
|
+
throw new Error('test error code 500');
|
|
21
|
+
});
|
|
22
|
+
app.get('/health', {
|
|
23
|
+
config: {
|
|
24
|
+
policy: 'L0', // L0, L1, L2
|
|
25
|
+
auth: 'user-jwt', // none, user-jwt, creds
|
|
26
|
+
role: 'admin', // role
|
|
27
|
+
scope: 'logger', // logger, admin, gis, bi
|
|
28
|
+
rateLimit: { max: 100, timeWindow: '1 minute', hook: 'preHandler' },
|
|
29
|
+
cors: { origins: ['https://app.example.com'] },
|
|
30
|
+
ipAllowlist: ['1.2.3.4'], // skip
|
|
31
|
+
rbac: { resource: 'id', action: 'add' }, //
|
|
32
|
+
maxPayloadBytes: 1_000_000, // chat gpt
|
|
33
|
+
}
|
|
34
|
+
}, async () => ({ ok: true }))
|
|
35
|
+
|
|
36
|
+
/* addCron(async function testCron() {
|
|
37
|
+
return (config.local || true) ? null : { message: 'Done', status: 200 };
|
|
38
|
+
}, 60 * 1); */
|
|
39
|
+
|
|
40
|
+
const user = { user_type: config.auth?.type || 'admin', uid: config.auth?.uid || '2' };
|
|
41
|
+
app.addHook('onRequest', async (req) => {
|
|
42
|
+
req.user = user;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
app.listen({ host: config.host || '0.0.0.0', port: config.port || process.env.PORT || 3000 }, (err) => {
|
|
46
|
+
console.log(`Server started via port: ${config.port || process.env.PORT || 3000}`);
|
|
47
|
+
if (err) {
|
|
48
|
+
console.error(err.toString());
|
|
49
|
+
app.log.error(err);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengis/fastify-table",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "core-plugins",
|
|
6
6
|
"keywords": [
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"main": "dist/index.js",
|
|
14
14
|
"exports": {
|
|
15
15
|
".": "./dist/index.js",
|
|
16
|
+
"./index.js": "./dist/index.js",
|
|
16
17
|
"./utils.js": "./dist/utils.js"
|
|
17
18
|
},
|
|
18
19
|
"files": [
|
|
@@ -20,7 +21,9 @@
|
|
|
20
21
|
],
|
|
21
22
|
"scripts": {
|
|
22
23
|
"prepublishOnly": "npm run build",
|
|
23
|
-
"
|
|
24
|
+
"clean": "tsc -b --clean",
|
|
25
|
+
"build": "tsc -b --clean && tsc && copyfiles server/plugins/grpc/utils/*.proto dist && copyfiles server/migrations/*.sql dist",
|
|
26
|
+
"prod": "NODE_ENV=production bun dist/server",
|
|
24
27
|
"patch": "npm version patch && git push && npm publish",
|
|
25
28
|
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
26
29
|
"test": "node --test",
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
syntax = "proto3";
|
|
2
|
-
|
|
3
|
-
service Convert {
|
|
4
|
-
rpc csvToXls(csvToXlsParams) returns (FileBase64) {}
|
|
5
|
-
rpc jsonToXls(jsonToXlsParams) returns (FileBase64) {}
|
|
6
|
-
rpc pdfMerge(pdfMergeParams) returns (FileBase64) {}
|
|
7
|
-
rpc htmlToPdf(htmlToPdfParams) returns (FileBase64) {}
|
|
8
|
-
rpc excelToJson(excelToJsonParams) returns (FileBase64) {}
|
|
9
|
-
rpc xmlToJson(xmlToJsonParams) returns (FileBase64) {}
|
|
10
|
-
rpc htmlToDoc(htmlToDocParams) returns (FileBase64) {}
|
|
11
|
-
rpc htmlToImage(htmlToImageParams) returns (FileBase64) {}
|
|
12
|
-
rpc geojsonToShp(geojsonToShpParams) returns (FileBase64) {}
|
|
13
|
-
rpc shpToGeojson(shpToGeojsonParams) returns (FileBase64) {}
|
|
14
|
-
rpc docToPDF(docToPDFParams) returns (FileBase64) {}
|
|
15
|
-
rpc mergeImages(mergeImagesIn) returns (FileBase64) {}
|
|
16
|
-
rpc resizeImage(resizeImageIn) returns (FileBase64) {}
|
|
17
|
-
rpc jsonToYaml(jsonToYamlIn) returns (FileBase64) {}
|
|
18
|
-
rpc yamlToJson(yamlToJsonIn) returns (FileBase64) {}
|
|
19
|
-
rpc log(log_in) returns (log_out) {}
|
|
20
|
-
rpc geojsonToGpkg(geojsonToShpParams) returns (FileBase64) {}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
message jsonToYamlIn {
|
|
24
|
-
string json = 1;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
message yamlToJsonIn {
|
|
28
|
-
string yaml = 1;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
message resizeImageIn {
|
|
32
|
-
string base64 = 1;
|
|
33
|
-
uint64 width = 2;
|
|
34
|
-
uint64 height = 3;
|
|
35
|
-
uint32 quality = 4;
|
|
36
|
-
uint32 subsampling = 5;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
message pdfToImgIn {
|
|
40
|
-
string pdfPath = 1;
|
|
41
|
-
string imgPath = 2;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
message pdfToImgOut {
|
|
45
|
-
string imgPath = 1;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
message log_in {
|
|
49
|
-
uint32 rows = 1;
|
|
50
|
-
string level = 2;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
message log_out {
|
|
54
|
-
repeated string logs = 1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
enum mergeImageFormat {
|
|
58
|
-
VERTICAL = 0;
|
|
59
|
-
HORIZONTAL = 1;
|
|
60
|
-
OVERLAY = 2;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
message imageMeta {
|
|
64
|
-
string base64 = 1;
|
|
65
|
-
mergeImageFormat mergeFormat = 2;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
message mergeImagesIn {
|
|
69
|
-
repeated string images = 1;
|
|
70
|
-
repeated imageMeta imagesMeta = 2;
|
|
71
|
-
string background = 3;
|
|
72
|
-
string mergeFormat = 4;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
message docToPDFParams {
|
|
76
|
-
string base64 = 1;
|
|
77
|
-
string to = 2;
|
|
78
|
-
string ext = 3;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
message shpToGeojsonParams {
|
|
82
|
-
string base64 = 1;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
message geojsonToShpParams {
|
|
86
|
-
string geojson = 1;
|
|
87
|
-
string proj = 2;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
message xmlToJsonParams {
|
|
91
|
-
string xml = 1;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
message jsonToXlsParams {
|
|
95
|
-
string json = 1;
|
|
96
|
-
string header = 2;
|
|
97
|
-
string subheader = 3;
|
|
98
|
-
string colmodel = 4;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
message csvToXlsParams {
|
|
102
|
-
string csv = 1;
|
|
103
|
-
string header = 2;
|
|
104
|
-
string subheader = 3;
|
|
105
|
-
string separator = 4;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
message excelToJsonParams {
|
|
109
|
-
string base64 = 1;
|
|
110
|
-
string type = 2;
|
|
111
|
-
string delimiter = 3;
|
|
112
|
-
string encoding = 4;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
message htmlToPdfParams {
|
|
116
|
-
string html = 1;
|
|
117
|
-
string pdfPageConfig = 2;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
message pdfMergeParams {
|
|
121
|
-
repeated string mergeFiles = 1;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
message htmlToImageParams {
|
|
125
|
-
string html = 1;
|
|
126
|
-
string format = 2;
|
|
127
|
-
uint64 width = 3;
|
|
128
|
-
uint64 height = 4;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
message htmlToDocParams {
|
|
132
|
-
string html = 1;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
message FileBase64 {
|
|
136
|
-
string result = 1;
|
|
137
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
syntax = "proto3";
|
|
2
|
-
|
|
3
|
-
service OfficeConverterService {
|
|
4
|
-
rpc OfficeToPdf(OfficeToPdfRequest) returns (OfficeToPdfResponse) {}
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
message OfficeToPdfRequest {
|
|
8
|
-
string file = 1;
|
|
9
|
-
string ext = 2;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
message OfficeToPdfResponse {
|
|
13
|
-
string file = 1;
|
|
14
|
-
}
|