spec/etc/db/spec.sql
2025-06-14 12:32:09 +03:00

414 lines
23 KiB
SQL

/*Ñïåöèôèêàöèè ñ âåðñèîííîñòüþ
*/
-- ìîæíî äîáàâèòü áàçîâûå åäèíèöû è ïåðåñ÷åò
drop table if exists measure CASCADE;
create table measure (
measure_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL
,measure varchar(255) NOT NULL
,measure_short varchar(9) NOT NULL
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
);
insert into measure (measure, measure_short) values ('øòóêà','øò.');
insert into measure (measure, measure_short) values ('êèëîâàòò','êÂò');
insert into measure (measure, measure_short) values ('êèëîâàòò-÷àñ','êÂò-÷');
insert into measure (measure, measure_short) values ('ãèãàãåðö','ÃÃö');
insert into measure (measure, measure_short) values ('ãèãàáàéò','ÃÁàéò');
insert into measure (measure, measure_short) values ('10000 øò.','10òûñ.øò.');
drop table if exists contragent CASCADE;
create table contragent (
contragent_id int GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY
,contragent varchar(255) NULL
,descr text NULL -- comments
,is_provider bool NOT NULL DEFAULT false
,external_uid uuid NULL
,external_code varchar(255) NULL --WZ
,dt_created timestamptz NOT NULL default CURRENT_TIMESTAMP -- âðåìÿ çàïèñè ïî ÷àñàì ñåðâåðà ÁÄ
,creator_id int NULL -- èäåíòèôèêàòîð ïîëüçîâàòåëÿ, ñîçäàâøåãî çàïèñü
,dt_updated timestamptz NOT NULL default CURRENT_TIMESTAMP
,updater_id int NULL -- èäåíòèôèêàòîð ïîëüçîâàòåëÿ, îáíîâèâøåãî çàïèñü
);
ALTER TABLE contragent OWNER TO dbo;
-- äàííûå äëÿ òåñòèðîâàíèÿ
insert into contragent (contragent, is_provider) values ('NUBES', true); -- ïðåäïîëàãàåòñÿ, ÷òî ïðîâàéäåð òîëüêî îäèí, íî ýòî íå ïîääåðæèâàåòñÿ îãðàíè÷åíèÿìè
insert into contragent (contragent) values
('Ðîãà è Êîïûòà ÎÎÎ')
,('Ëþòèê ÇÀÎ')
;
drop table if exists contract CASCADE;
create table contract (
contract_id int GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY
,contragent_id int NOT NULL
,contract varchar(255) NULL -- íîìåð êîíòðàêòà
,dt_contract timestamptz NOT NULL
,is_closed bool NOT NULL default false
,dt_closed timestamptz NULL -- äàòà çàâåðøåíèÿ êîíòðàêòà
,descr text NULL -- comments
,dt_created timestamptz NOT NULL default CURRENT_TIMESTAMP --
,creator_id int NULL -- èäåíòèôèêàòîð ïîëüçîâàòåëÿ, ñîçäàâøåãî çàïèñü
,dt_updated timestamptz NOT NULL default CURRENT_TIMESTAMP --
,updater_id int NULL -- èäåíòèôèêàòîð ïîëüçîâàòåëÿ, îáíîâèâøåãî çàïèñü
);
ALTER TABLE contract OWNER TO dbo;
insert into contract (contragent_id,contract,dt_contract) values (2,'test',CURRENT_TIMESTAMP);
-- ñîãëàøåíèå îáåñïå÷èâàåò ÿâíóþ ïðèêëàäíóþ âåðñèîííîñòü
drop table if exists agreement CASCADE;
create table agreement (
contract_id int NOT NULL
,agreement_version int NOT NULL -- èìåíîâàíèå ïîñòðîåíî íå òàê, êàê äëÿ âåðñèè ñòðîêè ñïåöèôèêàöèè
,agreement varchar(255) NULL -- íàçâàíèå ñîãëàøåíèÿ
,dt_agreement timestamptz NOT NULL -- ôîðìàëüíàÿ äàòà, íå ñâÿçàíà ñ âåðñèîííîñòüþ (ìîæåò áûòü, ïîðÿäîê)
,is_actual boolean NOT NULL -- ñ÷èòàåì, ÷òî íà äîãîâîð 1 äåéñòâóþùåå ñîãëàøåíèå - êîòîðûå äî íåãî, òå óñòàðåëè, êîòîðûå ïîñëå, òå â ïðîåêòå
,deal_uid uuid NOT NULL DEFAULT gen_random_uuid() -- ýòî ìîã áûòü ïåðâè÷íûé êëþ÷, ïîêà îí íå èñïîëüçóåòñÿ - òîëüêî èìèòèðóåò êëþ÷ ñäåëêè
,descr text NULL
,dt_created timestamptz NOT NULL default CURRENT_TIMESTAMP --
,creator_id int NULL -- èäåíòèôèêàòîð ïîëüçîâàòåëÿ, ñîçäàâøåãî çàïèñü
,dt_updated timestamptz NOT NULL default CURRENT_TIMESTAMP --
,updater_id int NULL -- èäåíòèôèêàòîð ïîëüçîâàòåëÿ, îáíîâèâøåãî çàïèñü
,CONSTRAINT PK_agreement PRIMARY KEY (contract_id, agreement_version)
);
ALTER TABLE agreement OWNER TO dbo;
insert into agreement (contract_id,agreement_version,dt_agreement,is_actual) values (1,0,CURRENT_TIMESTAMP,true);
-- alter table agreement add deal_uid uuid NOT NULL DEFAULT gen_random_uuid();
CREATE INDEX IF NOT EXISTS UX_deal_uid ON agreement(deal_uid);
-- øàïêà ñïåöèôèêàöèè, íå âåðñèîííàÿ (íå òåìïîðàëüíàÿ)
drop table if exists specification CASCADE;
create table specification (
specification_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL
,specification varchar(255) NOT NULL
,contract_id int NOT NULL
,descr text NULL
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
);
ALTER TABLE specification OWNER TO dbo;
insert into specification (specification,contract_id) values ('first spec',1);
-- íà ñîãëàøåíèå äîëæíà áûòü îäíà àêòóàëüíàÿ âåðñèÿ ñïåöèôèêàöèè
-- ìîæåò, îíà íå î÷åíü-òî è íóæíà, ó íåå ïîëåé-òî òîëüêî îïèñàíèå, à îíî íå î÷åíü íóæíî, à êëþ÷ ñîñòàâíîé è ðàñïðîñòðàíÿåòñÿ äàëüøå
-- è ïðàâäà, îíà ïðîñòî íå èñïîëüçóåòñÿ
drop table if exists specification_version CASCADE;
/*
create table specification_version (
specification_id int
,agreement_version int NOT NULL -- FK agreement
,descr text NULL
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
,CONSTRAINT PK_specification_version PRIMARY KEY (specification_id, agreement_version)
);
ALTER TABLE specification_version OWNER TO dbo;
*/
-- ñòðîêà ñïåöèôèêàöèè
drop table if exists specification_item CASCADE;
create table specification_item (
specification_item_uid uuid NOT NULL PRIMARY KEY DEFAULT gen_random_uuid() -- êëþ÷ ñòðîêè
,specification_id int NOT NULL --FK
,svc_id int NOT NULL --immutable
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
);
ALTER TABLE specification_item OWNER TO dbo;
-- âåðñèÿ ñòðîêè ñïåöèôèêàöèè (âåðñèîííîñòü áåðåòñÿ îò ñïåêè)
drop table if exists specification_item_version CASCADE;
create table specification_item_version (
specification_item_uid uuid NOT NULL -- êëþ÷ ñòðîêè
,agreement_version int NOT NULL -- ÂÀÆÍÎ: åñëè ñòðîêà íå ðåäàêòèðîâàëàñü - âåðñèÿ áóäåò ñòàðîé (ýêîíîìèì âåðñèé, *** íî ìîæíî ñäåëàòü òàáëèöó, ñîáèðàþùóþ âåðñèè ñòðîê)
,dt_from timestamptz NULL
,dt_to timestamptz NULL
,specification_item_version varchar(1023) NOT NULL -- èìÿ äëÿ ïå÷àòè
,quantity decimal(15,4) NULL
,price decimal(15,4) NULL
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
,CONSTRAINT PK_specification_item_version PRIMARY KEY (specification_item_uid, agreement_version)
);
ALTER TABLE specification_item OWNER TO dbo;
-- ïàðàìåòð (êîìïîíåíò) ñîáñòâåííîé âåðñèîííîñòè íå èìååò, ïðè ñîçäàíèè íîâîé âåðñèè ñòðîêè êëîíèðóåòñÿ
drop table if exists specification_item_param CASCADE;
create table specification_item_param (
specification_item_param_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY NOT NULL
,specification_item_uid uuid NOT NULL
,agreement_version int NOT NULL
,service_param_id int NOT NULL
,quantity decimal(15,4) NULL
,price decimal(15,4) NULL
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
);
ALTER TABLE specification_item_param OWNER TO dbo;
drop table if exists svc CASCADE;
CREATE TABLE svc (
svc_id integer NOT NULL,
svc character varying(255),
descr text,
dt_created timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
creator_id integer,
dt_updated timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
updater_id integer,
is_production_ready boolean DEFAULT false NOT NULL,
code character varying(255),
man text,
svc_short character varying(255),
resource_realm_type_id integer,
version character varying(255),
orchestrator_name character varying(255),
sort integer
);
ALTER TABLE svc OWNER TO dbo;
INSERT INTO svc VALUES (92, 'k8s_mongodb', '', '2024-09-09 12:53:00.022+03', 3, '2024-09-09 12:53:00.022+03', 3, false, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (95, 'NodeJS - ñåðâåð ïðèëîæåíèé', 'Îáðàç: node:16', '2024-12-10 17:57:41.06+03', 3, '2025-03-07 18:12:53.508+03', 3, true, '', 'Îáðàç: node:16', 'nodejs', 3, '0.0.6', 'Node', NULL);
INSERT INTO svc VALUES (50, 'Nextcloud - ïëàòôîðìà ñîâìåñòíîé ðàáîòû', 'Ðåñóðñíàÿ ïëàòôîðìà: k8s. Àâòîìàòèçàöèÿ: helm chart', '2024-09-09 12:51:27.551+03', 3, '2025-02-28 18:11:26.017+03', 3, true, '', 'Ðåñóðñíàÿ ïëàòôîðìà: k8s. Àâòîìàòèçàöèÿ: helm chart', 'nextcloud', 3, '0.0.3', 'Nextcloud', NULL);
INSERT INTO svc VALUES (21, 'Âèðòóàëüíûé ÄÖ äëÿ VM (vc_vdc)', 'Âèðòóàëüíûé ÄÖ â Cloud Director. Òðåáóåò íàëè÷èå Îðãàíèçàöèè', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-12 15:42:07.821+03', 10, false, '', 'Âèðòóàëüíûé ÄÖ â Cloud Director. Òðåáóåò íàëè÷èå Îðãàíèçàöèè', '', NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (26, 'vApp äëÿ VM (vc_vapp)', 'Ïàïêà â êëàóä äèðåêòîðå. Äëÿ óñòàíîâêè íóæåí vc_nsxt', '2024-12-23 14:54:46.277+03', 3, '2025-02-12 15:42:46.017+03', 10, false, '', 'Ïàïêà â êëàóä äèðåêòîðå. Äëÿ óñòàíîâêè íóæåí vc_nsxt', '', NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (111, 'DNS-çàïèñü', '', '2024-09-17 14:22:05.028+03', 11, '2025-02-28 16:45:10.351+03', 3, true, '', '', 'dnsrecord', 4, '0.0.4', 'Records', NULL);
INSERT INTO svc VALUES (13, 'S3 áàêåò (s3_bucket)', 'Òðåáóåò íàëè÷èÿ ó÷åòíîé çàïèñì S3<br/>Ðåñóðñíàÿ ïëàòôîðìà: Ceph', '2024-12-11 23:19:43.469+03', 3, '2025-02-28 16:43:49.758+03', 3, true, '', 'Òðåáóåò íàëè÷èÿ ó÷åòíîé çàïèñì S3<br/>Ðåñóðñíàÿ ïëàòôîðìà: Ceph', 's3bucket', 1, '0.0.3', 'Bucket', NULL);
INSERT INTO svc VALUES (20, 'Îðãàíèçàöèÿ äëÿ VM â Cloud Director (vc_organization)', 'Îðãàíèçàöèÿ â êëàóä äèðåêòîðå', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-12 15:41:57.046+03', 10, false, '', 'Îðãàíèçàöèÿ â êëàóä äèðåêòîðå', '', NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (12, 'S3 - ó÷åòíàÿ çàïèñü', 'S3 account, ðåñóðñíàÿ ïëàòôîðìà CEPH (S3 CEPH). Íàñòðîåí ñáîð ìåòðèê, àâòîìàòèçàöèÿ áèëëèíãà â ðàçðàáîòêå', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-28 16:42:41.829+03', 3, true, '', 'S3 account, ðåñóðñíàÿ ïëàòôîðìà CEPH (S3 CEPH). Íàñòðîåí ñáîð ìåòðèê, àâòîìàòèçàöèÿ áèëëèíãà â ðàçðàáîòêå', 's3', 1, '1.0.0', 'Ceph', NULL);
INSERT INTO svc VALUES (32, 'PostgreSQL íà ÂÌ (vc_vm_postgresql_std)', 'Ñåðâèñ íàñòðîéêè PostgreSQL äëÿ âèðòóàëüíîé ìàøèíû.<br/>Òðåáóåò íàëè÷èÿ ÂÌ<br/><br/>Âåðñèÿ Postgre - 17', '2024-08-05 12:47:46.275+03', 3, '2025-02-12 15:42:55.441+03', 10, false, '', 'Ñåðâèñ íàñòðîéêè PostgreSQL äëÿ âèðòóàëüíîé ìàøèíû.<br/>Òðåáóåò íàëè÷èÿ ÂÌ<br/><br/>Âåðñèÿ Postgre - 17', '', NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (100, 'tenantOpenwhisk', 'Äîáàâëåíèå è óäàëåíèÿ ïîëüçîâàòåëÿ äëÿ ðàáîòû ñ Openwhisk', '2024-09-12 13:43:55.166+03', 3, '2024-12-26 13:06:02.166+03', 3, false, '', 'Äîáàâëåíèå è óäàëåíèÿ ïîëüçîâàòåëÿ äëÿ ðàáîòû ñ Openwhisk', NULL, NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (25, 'Âíåøíèé IP àäðåñ äëÿ VM (vc_external_ip)', 'Ñîçäàíèå external Ip â Cloud Director. <br/>Òðåáóåò íàëè÷èå óñëóãè', '2024-12-12 16:32:45.488+03', 3, '2025-02-28 16:47:42.541+03', 3, true, '', 'Ñîçäàíèå external Ip â Cloud Director. <br/>Òðåáóåò íàëè÷èå óñëóãè', 'vcexternalip', 2, '0.0.2', 'Ip', NULL);
INSERT INTO svc VALUES (96, 'pgAdmin - êîíñîëü äëÿ PostgreSQL', '', '2024-12-10 18:28:43.874+03', 3, '2025-02-28 17:48:10.242+03', 3, true, '', '', 'pgadmin', 3, '0.0.2', 'Pgadmin', NULL);
INSERT INTO svc VALUES (110, 'DNS-çîíà', '', '2024-09-16 18:52:52.357+03', 11, '2025-02-28 16:45:17.753+03', 3, true, '', '', 'dnszone', 4, '0.0.3', 'Zones', NULL);
INSERT INTO svc VALUES (99, 'k8s_gitea', '', '2025-02-28 17:18:32.548+03', 3, '2025-02-28 17:43:41.652+03', 3, true, '', '', '', 3, '0.0.1', 'Gitea', NULL);
INSERT INTO svc VALUES (82, 'Harbor Registry (registry_k8s)', 'Harbor Registry. Ðåñóðñíàÿ ïëàòôîðìà: k8s. Àâòîìàòèçàöèÿ: helm chart. Àâòîðèçàöèÿ: keycloak', '2024-09-09 12:52:04.345+03', 3, '2025-02-28 18:09:50.071+03', 3, true, '', 'Harbor Registry. Ðåñóðñíàÿ ïëàòôîðìà: k8s. Àâòîìàòèçàöèÿ: helm chart. Àâòîðèçàöèÿ: keycloak', 'harbor', 3, '0.0.2', 'Registry', NULL);
INSERT INTO svc VALUES (2, 'k8sTemplate', '', '2025-02-28 17:06:21.371+03', 3, '2025-02-28 17:06:48.617+03', 3, false, '', '', '', 3, '0.0.1', 'Template', NULL);
INSERT INTO svc VALUES (23, 'VM â Cloud Director (vc_vm)', 'Âèðòóàëüíàÿ ìàøèíà áåç êàêèõ-ëèáî îñîáåííîñòåé. <br/>Äàííàÿ óñëóãà çàïóñêàåò vc_ip äëÿ âûäà÷è áåëîãî àäðåñà è ïîäêëþ÷åíèÿ ê ÂÌ', '2024-08-02 12:53:13.869+03', 3, '2025-02-12 15:42:20.771+03', 10, false, '', 'Âèðòóàëüíàÿ ìàøèíà áåç êàêèõ-ëèáî îñîáåííîñòåé. <br/>Äàííàÿ óñëóãà çàïóñêàåò vc_ip äëÿ âûäà÷è áåëîãî àäðåñà è ïîäêëþ÷åíèÿ ê ÂÌ', '', NULL, NULL, NULL, NULL);
INSERT INTO svc VALUES (91, 'Redis In-Memory DB Cluster on k8s', 'Redis êëàñòåð. Ïîä êåøè. <br/>Ðåñóðñíàÿ ïëàòôîðìà: k8s. <br/>Àâòîìàòèçàöèÿ: k8s operator<br/>port 6379', '2024-09-09 12:52:49.473+03', 3, '2025-03-07 11:39:36.69+03', 3, true, '', '', 'redis', 3, '0.0.3', 'Redis', NULL);
INSERT INTO svc VALUES (81, 'Apache Superset - àíàëèòè÷åñêèé ñåðâåð (superset_k8s)', 'Apache Superset êàê ñåðâèñ. <br/>Ðåñóðñíàÿ ïëàòôîðìà: k8s. <br/>Àâòîìàòèçàöèÿ: k8s operator.<br/>Àâòîðèçàöèÿ: 2FA keycloak (äëÿ äîìåííîãî ëîãèíà @mgmt.nubes.ru)', '2024-09-09 12:51:49.122+03', 3, '2025-02-28 18:09:54.127+03', 3, true, '', 'Apache Superset êàê ñåðâèñ. <br/>Ðåñóðñíàÿ ïëàòôîðìà: k8s. <br/>Àâòîìàòèçàöèÿ: k8s operator.<br/>Àâòîðèçàöèÿ: 2FA keycloak (äëÿ äîìåííîãî ëîãèíà @mgmt.nubes.ru)', 'superset', 3, '0.0.1', 'Superset', NULL);
INSERT INTO svc VALUES (22, 'Ñåòåâûå àäàïòåðû äëÿ VM (vc_nsxt)', '', '2024-04-08 10:59:07.350806+03', NULL, '2025-02-28 17:19:33.266+03', 3, false, '', '', '', NULL, '', '', NULL);
INSERT INTO svc VALUES (93, 'RabbitMQ - ñåðâåð î÷åðåäåé (rabbitmq_k8s)', 'RabbitMQ', '2024-09-09 12:53:09.059+03', 3, '2025-03-07 11:39:29.483+03', 3, true, '', '', 'rabbitmq', 3, '0.0.3', 'Rabbitmq', NULL);
INSERT INTO svc VALUES (90, 'PostgreSQL RDBMS Cluster', 'PostgreSQL êëàñòåð. Ðåñóðñíàÿ ïëàòôîðìà: k8s. Àâòîìàòèçàöèÿ: k8s operator.<br/>Àâòîìàòè÷åñêîå ðåçåðâíîå êîïèðîâàíèå, ðó÷íîå âîññòàíîâëåíèå.', '2024-09-09 12:52:34.457+03', 3, '2025-03-12 10:36:06.529+03', 3, true, '', 'PostgreSQL êëàñòåð. Ðåñóðñíàÿ ïëàòôîðìà: k8s. Àâòîìàòèçàöèÿ: k8s operator.<br/>Àâòîìàòè÷åñêîå ðåçåðâíîå êîïèðîâàíèå, ðó÷íîå âîññòàíîâëåíèå.', 'postgres', 3, '0.0.5', 'Pgsql', NULL);
INSERT INTO svc VALUES (98, 'k8s_simple_http_container', '', '2025-02-28 17:18:40.813+03', 3, '2025-02-28 17:43:48.248+03', 3, true, '', '', 'http', 3, '0.0.3', 'SimpleHttpContainer', NULL);
INSERT INTO svc VALUES (94, 'Lucee - ñåðâåð ïðèëîæåíèé', 'Îáðàç: lucee/lucee:latest', '2024-12-10 16:53:24.068+03', 3, '2025-03-10 10:13:04.713+03', 3, true, '', 'Îáðàç: lucee/lucee:latest', 'lucee', 3, '0.0.9', 'Lucee', NULL);
INSERT INTO svc VALUES (1, 'dummy service', 'Áîëâàíêà äëÿ òåñòîâ', '2024-04-19 19:10:30.206+03', 3, '2025-04-30 19:00:08.473+03', 10, true, '', '', 'dummy', 7, '', 'dummy', NULL);
INSERT INTO svc VALUES (112, 'grafana_tenant', '', '2025-03-12 12:30:15.669+03', 3, '2025-04-28 18:40:23.781+03', 10, false, '', '', 'tenant', 6, '0.0.2', 'Tenant', NULL);
ALTER TABLE ONLY svc
ADD CONSTRAINT PK_svc PRIMARY KEY (svc_id);
-------------------------------------------------------------------------
-- IAM
-------------------------------------------------------------------------
-- usr is normally shared view
drop table if exists usr;
create table usr(
usr_id int GENERATED BY DEFAULT AS IDENTITY(START WITH 11) PRIMARY KEY NOT NULL
,firstname varchar(255) NULL
,middlename varchar(255) NULL
,lastname varchar(255) NOT NULL
,login varchar(255) NOT NULL
,password varchar(255) NULL -- changed from varbinary for postgre and Argon2
,email varchar(255) NOT NULL
,phone_cell varchar(50) NULL
,descr text NULL
,settings text NULL
,locked boolean NOT NULL CONSTRAINT DF_usr_locked DEFAULT(false)
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
,fullname varchar GENERATED ALWAYS AS ((lastname||rtrim(' '||coalesce(firstname,'')))||rtrim(' '||coalesce(middlename,''))) STORED
,shortname varchar GENERATED ALWAYS AS (replace((lastname||rtrim(' '||coalesce(left(firstname,(1))||'.','')))||rtrim(' '||coalesce(left(middlename,(1))||'.','')),' .','')) STORED
);
create unique index UX_login on usr(login);
insert into usr (usr_id,firstname,middlename,lastname,login,password,email,phone_cell)
values (2,'','','Àíîíèìíûé ïîëüçîâàòåëü','anonymous',null,'',null);
insert into usr (usr_id,firstname,middlename,lastname,login,password,email,phone_cell)
values (10,'Ñåðãåé','Þðüåâè÷','Ìèùóê','smishchuk','$argon2id$v=19$m=500,t=3,p=4$d37RBdizC3rwQfINGSoQmg$Bwvr1f+RQf9hpXwV58sgUYzYpupp7iUzfUBACGApT80','msyu@mail.ru',null);
------------------------------
drop table if exists obj;
create table obj ( --
obj varchar(63) NOT NULL PRIMARY KEY
,descr text NULL -- ïðèìå÷àíèÿ
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
);
drop table if exists role;
create table role ( --
role_id int /*identity*/ NOT NULL PRIMARY KEY
,role varchar(255) NOT NULL
,descr text NULL -- ïðèìå÷àíèÿ
,creator_id int NULL
,updater_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_updated timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
);
insert into role (role_id,role) values (1,'Àäìèíèñòðàòîð');
insert into role (role_id,role) values (2,'×èòàòåëü'); -- òîëüêî ÷òåíèå îãðàíè÷åííîãî ñïèñêà ýêðàíîâ
drop table if exists usr_role;
create table usr_role ( --
role_id int NOT NULL
,usr_id int NOT NULL
,CONSTRAINT PK_usr_role primary key (usr_id, role_id)
,creator_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
);
insert into usr_role (role_id,usr_id) values (2,2);
insert into usr_role (role_id,usr_id) values (1,10);
drop table if exists acl;
create table acl(
obj varchar(63) NOT NULL
,role_id int NOT NULL
,permission int NOT NULL -- 1=READ 2=WRITE
,creator_id int NULL
,modifier_id int NULL
,dt_created timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà çàïèñè
,dt_modified timestamp NOT NULL default CURRENT_TIMESTAMP -- äàòà ïîñëåäíåé ìîäèôèêàöèè
,CONSTRAINT PK_acl PRIMARY KEY (obj, role_id)
);
/* insert into obj (obj,descr) values ('abstract_service','Àáñòðàêòíàÿ óñëóãà êàòàëîãà');
insert into obj (obj,descr) values ('price','Ïðàéñ-ëèñò áàçîâûé');
insert into obj (obj,descr) values ('service','Óñëóãà (ðàçâåðíóòûé êàòàëîã)');
insert into obj (obj,descr) values ('abstract_service_rpt','Êàòàëîã');
insert into obj (obj,descr) values ('price_rpt','Ïðàéñ-ëèñò: óñëóãà ñ ïàðàìåòðîì');
insert into obj (obj,descr) values ('export','Îò÷åòû ýêñïîðòà');
insert into obj (obj,descr) values ('modifier_class','Êëàññ õàðàêòåðèñòèêè');
insert into obj (obj,descr) values ('modifier','Õàðàêòåðèñòèêà');
insert into obj (obj,descr) values ('param_class','Êëàññ ïàðàìåòðà');
insert into obj (obj,descr) values ('param','Ïàðàìåòð');
insert into obj (obj,descr) values ('measure','Åäèíèöà èçìåðåíèÿ');
insert into obj (obj,descr) values ('site','Òàðèôíàÿ çîíà');
insert into obj (obj,descr) values ('provider','Ïîñòàâùèê (ÄÇÎ)');
insert into obj (obj,descr) values ('area','Ãðóïïà êàòàëîãà');
insert into obj (obj,descr) values ('service_param','Ïàðàìåòð êîíêðåòíîé óñëóãè');
insert into obj (obj,descr) values ('specification','Ñïåöèôèêàöèÿ');
insert into obj (obj,descr) values ('specification_item','Ñòðîêà ñïåöèôèêàöèè');
insert into obj (obj,descr) values ('specification_item_param','Ðåñóðñ ñòðîêè ñïåöèôèêàöèè (ýêçåìïëÿðà óñëóãè)');
insert into obj (obj,descr) values ('usr','Ïîëüçîâàòåëü');
insert into obj (obj,descr) values ('acl','Ïðàâà äîñòóïà');
insert into obj (obj,descr) values ('service_param_price','Öåíà êîìïîíåíòà');
insert into obj (obj,descr) values ('service_price','Öåíà óñëóãè');
insert into obj (obj,descr) values ('abstract_service_complementary','Äîïîëíèòåëüíàÿ óñëóãà'); */
/* --÷èòàòåëü
insert into acl(obj,role_id,permission) values ('abstract_service',2,1);
insert into acl(obj,role_id,permission) values ('price',2,1);
insert into acl(obj,role_id,permission) values ('service',2,1);
insert into acl(obj,role_id,permission) values ('abstract_service_rpt',2,1);
insert into acl(obj,role_id,permission) values ('abstract_service_doc',2,1);
insert into acl(obj,role_id,permission) values ('price_rpt',2,1);
insert into acl(obj,role_id,permission) values ('modifier_class',2,1);
insert into acl(obj,role_id,permission) values ('modifier',2,1);
insert into acl(obj,role_id,permission) values ('param_class',2,1);
insert into acl(obj,role_id,permission) values ('param',2,1);
insert into acl(obj,role_id,permission) values ('measure',2,1);
insert into acl(obj,role_id,permission) values ('site',2,1);
insert into acl(obj,role_id,permission) values ('provider',2,1);
insert into acl(obj,role_id,permission) values ('area',2,1);
insert into acl(obj,role_id,permission) values ('specification',2,1);
insert into acl(obj,role_id,permission) values ('specification_item',2,1);
insert into acl(obj,role_id,permission) values ('specification_item_param',2,1);
insert into acl(obj,role_id,permission) values ('service_param',2,1);
insert into acl(obj,role_id,permission) values ('abstract_service_param_class',2,1);
insert into acl(obj,role_id,permission) values ('service_param_price',2,1);
insert into acl(obj,role_id,permission) values ('service_price',2,1);
insert into acl(obj,role_id,permission) values ('abstract_service_complementary',2,1);
--àäìèí
insert into acl(obj,role_id,permission) values ('abstract_service',1,2);
insert into acl(obj,role_id,permission) values ('price',1,2);
insert into acl(obj,role_id,permission) values ('service',1,2);
insert into acl(obj,role_id,permission) values ('abstract_service_rpt',1,2);
insert into acl(obj,role_id,permission) values ('abstract_service_doc',1,2);
insert into acl(obj,role_id,permission) values ('price_rpt',1,2);
insert into acl(obj,role_id,permission) values ('export',1,2);
insert into acl(obj,role_id,permission) values ('modifier_class',1,2);
insert into acl(obj,role_id,permission) values ('modifier',1,2);
insert into acl(obj,role_id,permission) values ('param_class',1,2);
insert into acl(obj,role_id,permission) values ('param',1,2);
insert into acl(obj,role_id,permission) values ('measure',1,2);
insert into acl(obj,role_id,permission) values ('site',1,2);
insert into acl(obj,role_id,permission) values ('provider',1,2);
insert into acl(obj,role_id,permission) values ('area',1,2);
insert into acl(obj,role_id,permission) values ('specification',1,2);
insert into acl(obj,role_id,permission) values ('specification_item',1,2);
insert into acl(obj,role_id,permission) values ('specification_item_param',1,2);
insert into acl(obj,role_id,permission) values ('usr',1,2);
insert into acl(obj,role_id,permission) values ('acl',1,2);
insert into acl(obj,role_id,permission) values ('service_param',1,2);
insert into acl(obj,role_id,permission) values ('abstract_service_param_class',1,2);
insert into acl(obj,role_id,permission) values ('service_param_price',1,2);
insert into acl(obj,role_id,permission) values ('service_price',1,2);
insert into acl(obj,role_id,permission) values ('abstract_service_complementary',1,2); */