diff --git a/please.sql b/please.sql new file mode 100644 index 0000000..23ac9d8 --- /dev/null +++ b/please.sql @@ -0,0 +1,575 @@ +-- SQL Manager for PostgreSQL 6.4.1.56163 +-- --------------------------------------- +-- Host : eci-db1-dev.eci.local +-- Database : cscd +-- Version : PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (AstraLinuxSE 8.3.0-6) 8.3.0, 64-bit + + + +CREATE SCHEMA pls AUTHORIZATION d79276; +SET check_function_bodies = false; +-- +-- Structure for table entity : +-- +SET search_path = pls, pg_catalog; +CREATE TABLE pls.entity ( + entity_id integer DEFAULT nextval('entity_ent_id_seq'::regclass) NOT NULL, + rentity_type_id integer, + ts_deleted timestamp without time zone, + user_deleted varchar(50), + chatroom_uuid uuid +) +WITH (oids = false); +-- +-- Structure for table ref_entity_type : +-- +CREATE TABLE pls.ref_entity_type ( + rentity_type_id integer DEFAULT nextval('entity_types_ent_type_id_seq'::regclass) NOT NULL, + rentity_type_name varchar(255), + rentity_type_label varchar(255), + rroute_id integer +) +WITH (oids = false); +-- +-- Definition for type attr_type : +-- +CREATE TYPE pls.attr_type AS ENUM ( + 'string', 'date', 'number', 'dict', 'outer', 'longstring', 'bool', 'file' +); +-- +-- Structure for table ref_attr : +-- +CREATE TABLE pls.ref_attr ( + rattr_id serial NOT NULL, + rattr_name varchar(255), + rattr_type attr_type, + rattr_label varchar(255), + rattr_required boolean, + rattr_system boolean, + rattr_group_id integer, + rattr_no smallint, + rattr_view boolean, + rattr_multilple boolean +) +WITH (oids = false); +-- +-- Structure for table entity_attr : +-- +CREATE TABLE pls.entity_attr ( + entity_attr_id integer DEFAULT nextval('entity_attr_ent_attr_id_seq'::regclass) NOT NULL, + rattr_id integer, + entity_id integer, + entity_attr_value varchar +) +WITH (oids = false); +-- +-- Structure for table ref_attr_group : +-- +CREATE TABLE pls.ref_attr_group ( + rattr_group_id integer DEFAULT nextval('ref_attr_group_rag_id_seq'::regclass) NOT NULL, + rattr_group_name varchar(255), + rattr_group_label varchar(255), + rattr_group_no smallint, + rentity_type_id integer +) +WITH (oids = false); +-- +-- Structure for table entity_stage : +-- +CREATE TABLE pls.entity_stage ( + entity_stage_id serial NOT NULL, + rstage_id integer, + entity_id integer +) +WITH (oids = false); +-- +-- Structure for table ref_stage : +-- +CREATE TABLE pls.ref_stage ( + rstage_id serial NOT NULL, + rstage_name varchar(255), + rstage_label varchar(255), + rentity_type_id integer, + rstage_wait_others boolean, + rroute_id integer NOT NULL +) +WITH (oids = false); +-- +-- Structure for table ref_actor : +-- +CREATE TABLE pls.ref_actor ( + ractor_id serial NOT NULL, + ractor_auth_group_name varchar(255), + ractor_label varchar(255) +) +WITH (oids = false); +-- +-- Structure for table ref_stage_action : +-- +CREATE TABLE pls.ref_stage_action ( + rstage_action_id integer DEFAULT nextval('ref_stage_actor_ref_stage_actor_id_seq'::regclass) NOT NULL, + rstage_id integer, + raction_id integer +) +WITH (oids = false); +-- +-- Structure for table ref_attr_dict : +-- +CREATE TABLE pls.ref_attr_dict ( + rattr_dict_id serial NOT NULL, + rattr_id integer, + rattr_dict_no smallint, + rattr_dict_name varchar(255), + rattr_dict_label varchar(255) +) +WITH (oids = false); +-- +-- Structure for table ref_attr_outer : +-- +CREATE TABLE pls.ref_attr_outer ( + rattr_outer_id serial NOT NULL, + rattr_id integer, + rattr_outer_name varchar(255), + rattr_outer_label varchar(255), + rattr_outer_fields varchar(255), + rattr_outer_path varchar(255), + rattr_outer_key varchar(255), + rattr_outer_sort varchar(255) +) +WITH (oids = false); +-- +-- Structure for table ref_action : +-- +CREATE TABLE pls.ref_action ( + raction_id integer DEFAULT nextval(('pls.ref_action_raction_id_seq'::text)::regclass) NOT NULL, + raction_name varchar(255), + raction_label varchar(255) +) +WITH (oids = false); +-- +-- Definition for sequence ref_action_raction_id_seq : +-- +CREATE SEQUENCE pls.ref_action_raction_id_seq + START WITH 1 + INCREMENT BY 1 + MAXVALUE 2147483647 + NO MINVALUE + CACHE 1; +-- +-- Structure for table ref_attr_actor : +-- +CREATE TABLE pls.ref_attr_actor ( + rattr_actor_id serial NOT NULL, + rattr_id integer, + ractor_id integer, + rstage_id integer +) +WITH (oids = false); +-- +-- Definition for foreign data wrapper postgres_fdw : +-- +CREATE FOREIGN DATA WRAPPER postgres_fdw + HANDLER public.postgres_fdw_handler + VALIDATOR public.postgres_fdw_validator; +-- +-- Definition for foreign server test4_tsup_ecp : +-- +CREATE SERVER test4_tsup_ecp + FOREIGN DATA WRAPPER postgres_fdw + OPTIONS ( + host 'test4.tsup.ecp', + dbname 'tsup', + port '5432', + use_remote_estimate 'true', + updatable 'false', + truncatable 'false'); +-- +-- Definition for view entity_view_list : +-- +CREATE VIEW pls.entity_view_list +AS +SELECT s.entity_id, + string_agg((s.rattr_label)::text, ';'::text) AS attr_list, + string_agg((s.entity_attr_value)::text, ';'::text) AS label_list +FROM ( + SELECT ent.entity_id, + ea.entity_attr_value, + ra.rattr_label + FROM (((entity ent + LEFT JOIN ref_entity_type ret ON ((ret.rentity_type_id = + ent.rentity_type_id))) + LEFT JOIN entity_attr ea ON ((ea.entity_id = ent.entity_id))) + LEFT JOIN ref_attr ra ON ((ra.rattr_id = ea.rattr_id))) + WHERE (ra.rattr_view = true) + ORDER BY ent.entity_id, ra.rattr_no + ) s +GROUP BY s.entity_id; + +-- +-- Definition for view request_view_list : +-- +CREATE VIEW pls.request_view_list +AS +SELECT s.entity_id, + string_agg((s.rattr_label)::text, ';'::text) AS label_list, + string_agg((s.entity_attr_value)::text, ';'::text) AS attr_list +FROM ( + SELECT ent.entity_id, + ea.entity_attr_value, + ra.rattr_label + FROM (((entity ent + LEFT JOIN ref_entity_type ret ON ((ret.rentity_type_id = + ent.rentity_type_id))) + LEFT JOIN entity_attr ea ON ((ea.entity_id = ent.entity_id))) + LEFT JOIN ref_attr ra ON ((ra.rattr_id = ea.rattr_id))) + WHERE (((ret.rentity_type_name)::text = 'request'::text) AND + (ra.rattr_view = true)) + ORDER BY ent.entity_id, ra.rattr_no + ) s +GROUP BY s.entity_id; + +-- +-- Definition for view candidate_view_list : +-- +CREATE VIEW pls.candidate_view_list +AS +SELECT s.entity_id, + string_agg((s.rattr_label)::text, ';'::text) AS label_list, + string_agg((s.entity_attr_value)::text, ';'::text) AS attr_list +FROM ( + SELECT ent.entity_id, + ea.entity_attr_value, + ra.rattr_label + FROM (((entity ent + LEFT JOIN ref_entity_type ret ON ((ret.rentity_type_id = + ent.rentity_type_id))) + LEFT JOIN entity_attr ea ON ((ea.entity_id = ent.entity_id))) + LEFT JOIN ref_attr ra ON ((ra.rattr_id = ea.rattr_id))) + WHERE (((ret.rentity_type_name)::text = 'candidate'::text) AND + (ra.rattr_view = true)) + ORDER BY ent.entity_id, ra.rattr_no + ) s +GROUP BY s.entity_id; + +-- +-- Structure for table entity_entity : +-- +CREATE TABLE pls.entity_entity ( + ent_ent_id serial NOT NULL, + entity_id integer, + entity_id_link integer, + ts_created timestamp without time zone, + ts_deleted timestamp without time zone +) +WITH (oids = false); +-- +-- Definition for view entity_group : +-- +CREATE VIEW pls.entity_group +AS +SELECT ea.entity_attr_value AS entity_id, + count(*) AS vacancy, + 1 AS vacancy_move, + 1 AS vacancy_out +FROM ((ref_entity_type ret + LEFT JOIN entity e ON ((e.rentity_type_id = ret.rentity_type_id))) + LEFT JOIN entity_attr ea ON (((ea.entity_id = e.entity_id) AND + (ea.rattr_id = 11)))) +GROUP BY ea.entity_attr_value; + +-- +-- Structure for table ref_stage_action_actor : +-- +CREATE TABLE pls.ref_stage_action_actor ( + rstage_action_actor_id integer DEFAULT nextval('ref_stage_action_actor_ref_stage_action_actor_id_seq'::regclass) NOT NULL, + rstage_action_id integer, + ractor_id integer +) +WITH (oids = false); +-- +-- Structure for table ref_stage_action_stage : +-- +CREATE TABLE pls.ref_stage_action_stage ( + rstage_action_stage_id integer DEFAULT nextval('ref_stage_actor_stage_rstage_action_stage_id_seq'::regclass) NOT NULL, + rstage_action_id integer, + rstage_id integer +) +WITH (oids = false); +-- +-- Structure for table ref_route : +-- +CREATE TABLE pls.ref_route ( + rroute_id serial NOT NULL, + rroute_name varchar(255), + rroute_label varchar(255), + rstage_id_start integer +) +WITH (oids = false); +ALTER TABLE ONLY pls.ref_route ALTER COLUMN rroute_id SET STATISTICS 0; +-- +-- Structure for table ref_attr_group_actor : +-- +CREATE TABLE pls.ref_attr_group_actor ( + rattr_group_actor_id serial NOT NULL, + rattr_group_id integer, + ractor_id integer, + can_edit boolean DEFAULT false, + can_read boolean DEFAULT true +) +WITH (oids = false); +-- +-- Structure for table entity_attr_log : +-- +CREATE TABLE pls.entity_attr_log ( + entity_attr_log_id serial NOT NULL, + rattr_id integer, + entity_id integer, + entity_attr_value varchar, + ts_change timestamp without time zone, + user_change varchar(50) +) +WITH (oids = false); +-- +-- Definition for index entity_pkey : +-- +ALTER TABLE ONLY pls.entity + ADD CONSTRAINT entity_pkey + PRIMARY KEY (entity_id); +-- +-- Definition for index entity_types_pkey : +-- +ALTER TABLE ONLY pls.ref_entity_type + ADD CONSTRAINT entity_types_pkey + PRIMARY KEY (rentity_type_id); +-- +-- Definition for index ref_attr_pkey : +-- +ALTER TABLE ONLY pls.ref_attr + ADD CONSTRAINT ref_attr_pkey + PRIMARY KEY (rattr_id); +-- +-- Definition for index entity_attr_pkey : +-- +ALTER TABLE ONLY pls.entity_attr + ADD CONSTRAINT entity_attr_pkey + PRIMARY KEY (entity_attr_id); +-- +-- Definition for index ref_attr_group_pkey : +-- +ALTER TABLE ONLY pls.ref_attr_group + ADD CONSTRAINT ref_attr_group_pkey + PRIMARY KEY (rattr_group_id); +-- +-- Definition for index entity_stage_pkey : +-- +ALTER TABLE ONLY pls.entity_stage + ADD CONSTRAINT entity_stage_pkey + PRIMARY KEY (entity_stage_id); +-- +-- Definition for index ref_stage_pkey : +-- +ALTER TABLE ONLY pls.ref_stage + ADD CONSTRAINT ref_stage_pkey + PRIMARY KEY (rstage_id); +-- +-- Definition for index ref_actor_pkey : +-- +ALTER TABLE ONLY pls.ref_actor + ADD CONSTRAINT ref_actor_pkey + PRIMARY KEY (ractor_id); +-- +-- Definition for index ref_stage_actor_pkey : +-- +ALTER TABLE ONLY pls.ref_stage_action + ADD CONSTRAINT ref_stage_actor_pkey + PRIMARY KEY (rstage_action_id); +-- +-- Definition for index ref_attr_dict_pkey : +-- +ALTER TABLE ONLY pls.ref_attr_dict + ADD CONSTRAINT ref_attr_dict_pkey + PRIMARY KEY (rattr_dict_id); +-- +-- Definition for index ref_attr_outer_pkey : +-- +ALTER TABLE ONLY pls.ref_attr_outer + ADD CONSTRAINT ref_attr_outer_pkey + PRIMARY KEY (rattr_outer_id); +-- +-- Definition for index ref_action_pkey : +-- +ALTER TABLE ONLY pls.ref_action + ADD CONSTRAINT ref_action_pkey + PRIMARY KEY (raction_id); +-- +-- Definition for index ref_attr_actor_pkey : +-- +ALTER TABLE ONLY pls.ref_attr_actor + ADD CONSTRAINT ref_attr_actor_pkey + PRIMARY KEY (rattr_actor_id); +-- +-- Definition for index entity_attr_fk : +-- +ALTER TABLE ONLY pls.entity_attr + ADD CONSTRAINT entity_attr_fk + FOREIGN KEY (entity_id) REFERENCES entity(entity_id); +-- +-- Definition for index entity_attr_fk1 : +-- +ALTER TABLE ONLY pls.entity_attr + ADD CONSTRAINT entity_attr_fk1 + FOREIGN KEY (rattr_id) REFERENCES ref_attr(rattr_id); +-- +-- Definition for index entity_fk : +-- +ALTER TABLE ONLY pls.entity + ADD CONSTRAINT entity_fk + FOREIGN KEY (rentity_type_id) REFERENCES ref_entity_type(rentity_type_id); +-- +-- Definition for index ref_attr_fk : +-- +ALTER TABLE ONLY pls.ref_attr + ADD CONSTRAINT ref_attr_fk + FOREIGN KEY (rattr_group_id) REFERENCES ref_attr_group(rattr_group_id); +-- +-- Definition for index entity_entity_pkey : +-- +ALTER TABLE ONLY pls.entity_entity + ADD CONSTRAINT entity_entity_pkey + PRIMARY KEY (ent_ent_id); +-- +-- Definition for index entity_entity_idx : +-- +ALTER TABLE ONLY pls.entity_entity + ADD CONSTRAINT entity_entity_idx + UNIQUE (entity_id, entity_id_link); +-- +-- Definition for index entity_entity_fk : +-- +ALTER TABLE ONLY pls.entity_entity + ADD CONSTRAINT entity_entity_fk + FOREIGN KEY (entity_id) REFERENCES entity(entity_id); +-- +-- Definition for index entity_entity_fk1 : +-- +ALTER TABLE ONLY pls.entity_entity + ADD CONSTRAINT entity_entity_fk1 + FOREIGN KEY (entity_id_link) REFERENCES entity(entity_id); +-- +-- Definition for index ref_stage_action_actor_pkey : +-- +ALTER TABLE ONLY pls.ref_stage_action_actor + ADD CONSTRAINT ref_stage_action_actor_pkey + PRIMARY KEY (rstage_action_actor_id); +-- +-- Definition for index ref_stage_actor_stage_pkey : +-- +ALTER TABLE ONLY pls.ref_stage_action_stage + ADD CONSTRAINT ref_stage_actor_stage_pkey + PRIMARY KEY (rstage_action_stage_id); +-- +-- Definition for index ref_route_pkey : +-- +ALTER TABLE ONLY pls.ref_route + ADD CONSTRAINT ref_route_pkey + PRIMARY KEY (rroute_id); +-- +-- Definition for index ref_route_fk : +-- +ALTER TABLE ONLY pls.ref_route + ADD CONSTRAINT ref_route_fk + FOREIGN KEY (rstage_id_start) REFERENCES ref_stage(rstage_id) DEFERRABLE; +-- +-- Definition for index ref_stage_fk : +-- +ALTER TABLE ONLY pls.ref_stage + ADD CONSTRAINT ref_stage_fk + FOREIGN KEY (rroute_id) REFERENCES ref_route(rroute_id) DEFERRABLE; +-- +-- Definition for index ref_attr_group_actor_pkey : +-- +ALTER TABLE ONLY pls.ref_attr_group_actor + ADD CONSTRAINT ref_attr_group_actor_pkey + PRIMARY KEY (rattr_group_actor_id); +-- +-- Definition for index ref_attr_group_actor_fk : +-- +ALTER TABLE ONLY pls.ref_attr_group_actor + ADD CONSTRAINT ref_attr_group_actor_fk + FOREIGN KEY (ractor_id) REFERENCES ref_actor(ractor_id) DEFERRABLE; +-- +-- Definition for index ref_attr_group_actor_fk1 : +-- +ALTER TABLE ONLY pls.ref_attr_group_actor + ADD CONSTRAINT ref_attr_group_actor_fk1 + FOREIGN KEY (rattr_group_id) REFERENCES ref_attr_group(rattr_group_id) DEFERRABLE; +-- +-- Definition for index entity_attr_log_pkey : +-- +ALTER TABLE ONLY pls.entity_attr_log + ADD CONSTRAINT entity_attr_log_pkey + PRIMARY KEY (entity_attr_log_id); +-- +-- Definition for index entity_attr_log_fk : +-- +ALTER TABLE ONLY pls.entity_attr_log + ADD CONSTRAINT entity_attr_log_fk + FOREIGN KEY (entity_id) REFERENCES entity(entity_id); +-- +-- Definition for index entity_attr_log_fk1 : +-- +ALTER TABLE ONLY pls.entity_attr_log + ADD CONSTRAINT entity_attr_log_fk1 + FOREIGN KEY (rattr_id) REFERENCES ref_attr(rattr_id); +-- +-- Comments +-- +COMMENT ON COLUMN pls.entity.rentity_type_id IS 'ref_entity_type'; +COMMENT ON COLUMN pls.entity.ts_deleted IS 'пометка, что сущность удалена в корзину'; +COMMENT ON COLUMN pls.entity.chatroom_uuid IS 'ссылка на чат в мессенджере'; +COMMENT ON COLUMN pls.ref_entity_type.rroute_id IS 'указатель маршрута, там будет с какого этапа начинается'; +COMMENT ON COLUMN pls.ref_attr.rattr_label IS 'отображаемое имя'; +COMMENT ON COLUMN pls.ref_attr.rattr_required IS 'обязательный'; +COMMENT ON COLUMN pls.ref_attr.rattr_system IS 'служебный'; +COMMENT ON COLUMN pls.ref_attr.rattr_group_id IS 'группа атрибутов'; +COMMENT ON COLUMN pls.ref_attr.rattr_no IS 'порядковый номер'; +COMMENT ON COLUMN pls.ref_attr.rattr_view IS 'это атрибут используется для отображения и идентификации сущности'; +COMMENT ON COLUMN pls.ref_attr.rattr_multilple IS 'сущность может иметь несколько значений (копий) этого атрибута. Например, у укандидата несколько образований.'; +COMMENT ON COLUMN pls.ref_attr_group.rattr_group_no IS 'порядковый номер для отображения'; +COMMENT ON COLUMN pls.ref_attr_group.rentity_type_id IS 'указатель какой тип сущности обладает этой группа атрибутов'; +COMMENT ON COLUMN pls.entity_stage.rstage_id IS 'из справочника этапов'; +COMMENT ON COLUMN pls.entity_stage.entity_id IS 'какая сущность соединена с этим этапом'; +COMMENT ON COLUMN pls.ref_stage.rentity_type_id IS 'какой тип сущности создавать при создании этого этапа'; +COMMENT ON COLUMN pls.ref_stage.rstage_wait_others IS 'когда этап переходит на этот, если True, то всегда проверяет, есть ли потенциальные другие этапы, которые в этот переходят. Если такие есть - ждет. Если таких нет (или они закончились и перешли в этот), то включает этот этап.'; +COMMENT ON COLUMN pls.ref_stage.rroute_id IS 'маршрут, который объединяет все этапы'; +COMMENT ON COLUMN pls.ref_actor.ractor_auth_group_name IS 'соответствие auth.auth_groups.name'; +COMMENT ON TABLE pls.ref_stage_action IS 'на этапе можно совершить разные действия разным акторам'; +COMMENT ON COLUMN pls.ref_stage_action.rstage_id IS 'на каком этапе'; +COMMENT ON COLUMN pls.ref_stage_action.raction_id IS 'какое действие может выполнить'; +COMMENT ON COLUMN pls.ref_attr_dict.rattr_dict_no IS 'порядковый номер при отображении'; +COMMENT ON COLUMN pls.ref_attr_dict.rattr_dict_name IS '!! После использования нельзя редактировать. Именно это поле записывается в значения атрибутов'; +COMMENT ON COLUMN pls.ref_attr_dict.rattr_dict_label IS 'Отображаемый текст варианта выбора'; +COMMENT ON COLUMN pls.ref_attr_outer.rattr_outer_fields IS 'какие поля показывать при выборе из справочника'; +COMMENT ON COLUMN pls.ref_attr_outer.rattr_outer_path IS 'где находится этот справочник'; +COMMENT ON COLUMN pls.ref_attr_outer.rattr_outer_key IS 'какое поле записывается в значение атрибута'; +COMMENT ON COLUMN pls.ref_attr_outer.rattr_outer_sort IS 'по каким полям сортируется при отображении справочника'; +COMMENT ON TABLE pls.ref_attr_actor IS 'Какой атрибут на каком этапе может редактирвоать'; +COMMENT ON COLUMN pls.ref_attr_actor.rattr_id IS 'какой атрибут'; +COMMENT ON COLUMN pls.ref_attr_actor.ractor_id IS 'какой актор'; +COMMENT ON COLUMN pls.ref_attr_actor.rstage_id IS 'на каком конкретном этапе (NULL=на всех)'; +COMMENT ON SERVER test4_tsup_ecp IS 'Используется для внешних таблиц в схеме egt'; +COMMENT ON TABLE pls.entity_entity IS 'Связь двух сущностей'; +COMMENT ON COLUMN pls.entity_entity.ent_ent_id IS 'уникальный ключ связки'; +COMMENT ON COLUMN pls.entity_entity.entity_id IS 'сущность_родитель'; +COMMENT ON COLUMN pls.entity_entity.entity_id_link IS 'сущность_дитя'; +COMMENT ON TABLE pls.ref_stage_action_actor IS 'какое действие на каком этапе может выполнить какой актор'; +COMMENT ON COLUMN pls.ref_stage_action_actor.rstage_action_id IS 'указатель на этап и действие'; +COMMENT ON COLUMN pls.ref_stage_action_actor.ractor_id IS 'указатель на актора'; +COMMENT ON COLUMN pls.ref_stage_action_stage.rstage_action_id IS 'после какого действия другого этапа'; +COMMENT ON COLUMN pls.ref_stage_action_stage.rstage_id IS 'какие новые этапы начинаются (возможна развилка и распаллеливание)'; +COMMENT ON TABLE pls.ref_route IS 'Маршрут, который объединяет несколько этапов'; +COMMENT ON COLUMN pls.ref_route.rstage_id_start IS 'Этап, с которого начинается этот маршрут'; +COMMENT ON COLUMN pls.ref_attr_group_actor.rattr_group_id IS 'в какой группе атрибутов'; +COMMENT ON COLUMN pls.ref_attr_group_actor.ractor_id IS 'какой актор (роль)'; +COMMENT ON COLUMN pls.ref_attr_group_actor.can_edit IS 'может редактировать все атрибуты в этой группе (по умолчанию нет)'; +COMMENT ON COLUMN pls.ref_attr_group_actor.can_read IS 'может видеть атрибуты в этой группе (по умолчанию да)';