From 401dd4ada283b3a7d39bae177affb41b1cf59592 Mon Sep 17 00:00:00 2001 From: Aleksandr Ivanov Date: Tue, 29 Jan 2019 18:35:09 +0200 Subject: [PATCH 1/4] RIHAKB-656 implemented --- ...e_relations_info_to_main_resource_view.sql | 74 +++++++++++++++++++ .../model/readonly/Main_resource_view.java | 11 +++ src/main/resources/liquibase/db.changelog.xml | 9 +++ src/test/resources/liquibase/db.changelog.xml | 9 +++ ...e_relations_info_to_main_resource_view.sql | 74 +++++++++++++++++++ 5 files changed, 177 insertions(+) create mode 100644 sql/update/20190124_add_used_type_relations_info_to_main_resource_view.sql create mode 100644 src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql diff --git a/sql/update/20190124_add_used_type_relations_info_to_main_resource_view.sql b/sql/update/20190124_add_used_type_relations_info_to_main_resource_view.sql new file mode 100644 index 0000000..5c3d59d --- /dev/null +++ b/sql/update/20190124_add_used_type_relations_info_to_main_resource_view.sql @@ -0,0 +1,74 @@ +-- drop view riha.main_resource_view cascade + +CREATE OR REPLACE VIEW riha.main_resource_view AS + + SELECT DISTINCT ON (json_content ->> 'uuid') + main_resource.*, + ((main_resource.json_content #>> + '{meta,creation_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_creation_timestamp, + ((main_resource.json_content #>> + '{meta,update_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_update_timestamp, + last_positive_approval_request.sub_type AS last_positive_approval_request_type, + last_positive_approval_request.modified_date AS last_positive_approval_request_date, + last_positive_establishment_request.modified_date AS last_positive_establishment_request_date, + last_positive_take_into_use_request.modified_date AS last_positive_take_into_use_request_date, + last_positive_finalization_request.modified_date AS last_positive_finalization_request_date + ,COALESCE (has_used_system_types_relations.has_used_system_type_relations, false) AS has_used_system_type_relations + FROM riha.main_resource AS main_resource + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + sub_type, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type IN ('ESTABLISHMENT_REQUEST', + 'TAKE_INTO_USE_REQUEST', + 'FINALIZATION_REQUEST') + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_approval_request + ON (json_content ->> 'uuid') :: UUID = last_positive_approval_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'ESTABLISHMENT_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_establishment_request + ON (json_content ->> 'uuid') :: UUID = last_positive_establishment_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'TAKE_INTO_USE_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_take_into_use_request + ON (json_content ->> 'uuid') :: UUID = last_positive_take_into_use_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'FINALIZATION_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_finalization_request + ON (json_content ->> 'uuid') :: UUID = last_positive_finalization_request.infosystem_uuid + + LEFT JOIN + (select count(*) > 0 as has_used_system_type_relations, infosystem_uuid from riha.main_resource_relation mrr where mrr.type ='USED_SYSTEM' group by infosystem_uuid) + as has_used_system_types_relations + ON (json_content ->> 'uuid') :: UUID = has_used_system_types_relations.infosystem_uuid + + ORDER BY json_content ->> 'uuid', + j_update_timestamp DESC NULLS LAST, + main_resource_id DESC + diff --git a/src/main/java/ee/eesti/riha/rest/model/readonly/Main_resource_view.java b/src/main/java/ee/eesti/riha/rest/model/readonly/Main_resource_view.java index c0b6bb6..9d5cd0b 100644 --- a/src/main/java/ee/eesti/riha/rest/model/readonly/Main_resource_view.java +++ b/src/main/java/ee/eesti/riha/rest/model/readonly/Main_resource_view.java @@ -83,6 +83,9 @@ public class Main_resource_view implements BaseModel { @Temporal(TemporalType.TIMESTAMP) private Date last_positive_finalization_request_date; + @Column(name = "has_used_system_type_relations") + private boolean hasUsedSystemTypeRelations; + public Integer getMain_resource_id() { return main_resource_id; } @@ -167,6 +170,14 @@ public void setKind(String kind) { throw new UnsupportedOperationException(); } + public boolean isHasUsedSystemTypeRelations() { + return hasUsedSystemTypeRelations; + } + + public void setHasUsedSystemTypeRelations(boolean hasUsedSystemTypeRelations) { + this.hasUsedSystemTypeRelations = hasUsedSystemTypeRelations; + } + public String getLast_positive_approval_request_type() { return last_positive_approval_request_type; } diff --git a/src/main/resources/liquibase/db.changelog.xml b/src/main/resources/liquibase/db.changelog.xml index 866001d..2f56c0f 100644 --- a/src/main/resources/liquibase/db.changelog.xml +++ b/src/main/resources/liquibase/db.changelog.xml @@ -50,4 +50,13 @@ /> + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/db.changelog.xml b/src/test/resources/liquibase/db.changelog.xml index 3177bce..1789819 100644 --- a/src/test/resources/liquibase/db.changelog.xml +++ b/src/test/resources/liquibase/db.changelog.xml @@ -30,4 +30,13 @@ relativeToChangelogFile="true"/> + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql b/src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql new file mode 100644 index 0000000..5c3d59d --- /dev/null +++ b/src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql @@ -0,0 +1,74 @@ +-- drop view riha.main_resource_view cascade + +CREATE OR REPLACE VIEW riha.main_resource_view AS + + SELECT DISTINCT ON (json_content ->> 'uuid') + main_resource.*, + ((main_resource.json_content #>> + '{meta,creation_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_creation_timestamp, + ((main_resource.json_content #>> + '{meta,update_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_update_timestamp, + last_positive_approval_request.sub_type AS last_positive_approval_request_type, + last_positive_approval_request.modified_date AS last_positive_approval_request_date, + last_positive_establishment_request.modified_date AS last_positive_establishment_request_date, + last_positive_take_into_use_request.modified_date AS last_positive_take_into_use_request_date, + last_positive_finalization_request.modified_date AS last_positive_finalization_request_date + ,COALESCE (has_used_system_types_relations.has_used_system_type_relations, false) AS has_used_system_type_relations + FROM riha.main_resource AS main_resource + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + sub_type, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type IN ('ESTABLISHMENT_REQUEST', + 'TAKE_INTO_USE_REQUEST', + 'FINALIZATION_REQUEST') + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_approval_request + ON (json_content ->> 'uuid') :: UUID = last_positive_approval_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'ESTABLISHMENT_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_establishment_request + ON (json_content ->> 'uuid') :: UUID = last_positive_establishment_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'TAKE_INTO_USE_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_take_into_use_request + ON (json_content ->> 'uuid') :: UUID = last_positive_take_into_use_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'FINALIZATION_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_finalization_request + ON (json_content ->> 'uuid') :: UUID = last_positive_finalization_request.infosystem_uuid + + LEFT JOIN + (select count(*) > 0 as has_used_system_type_relations, infosystem_uuid from riha.main_resource_relation mrr where mrr.type ='USED_SYSTEM' group by infosystem_uuid) + as has_used_system_types_relations + ON (json_content ->> 'uuid') :: UUID = has_used_system_types_relations.infosystem_uuid + + ORDER BY json_content ->> 'uuid', + j_update_timestamp DESC NULLS LAST, + main_resource_id DESC + From 98b0ae9a3ef76f9ee653df852e63f175d841630b Mon Sep 17 00:00:00 2001 From: Aleksandr Ivanov Date: Tue, 29 Jan 2019 20:12:01 +0200 Subject: [PATCH 2/4] fixing unit tests --- src/test/resources/riharest.project.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/resources/riharest.project.properties b/src/test/resources/riharest.project.properties index 9ddecdd..402df2d 100644 --- a/src/test/resources/riharest.project.properties +++ b/src/test/resources/riharest.project.properties @@ -1,4 +1,4 @@ -riharest.jdbc.url=jdbc:postgresql://localhost:5438/riha?currentSchema=riha +riharest.jdbc.url=jdbc:postgresql://127.0.0.1:5438/riha?currentSchema=riha riharest.jdbc.user=riha riharest.jdbc.password=riha From c1d6a1022821af3c51c35ea32a7db047626527ed Mon Sep 17 00:00:00 2001 From: Aleksandr Ivanov Date: Tue, 29 Jan 2019 20:40:58 +0200 Subject: [PATCH 3/4] fixing unit tests --- ...e_relations_info_to_main_resource_view.sql | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/main/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql diff --git a/src/main/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql b/src/main/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql new file mode 100644 index 0000000..5c3d59d --- /dev/null +++ b/src/main/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql @@ -0,0 +1,74 @@ +-- drop view riha.main_resource_view cascade + +CREATE OR REPLACE VIEW riha.main_resource_view AS + + SELECT DISTINCT ON (json_content ->> 'uuid') + main_resource.*, + ((main_resource.json_content #>> + '{meta,creation_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_creation_timestamp, + ((main_resource.json_content #>> + '{meta,update_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_update_timestamp, + last_positive_approval_request.sub_type AS last_positive_approval_request_type, + last_positive_approval_request.modified_date AS last_positive_approval_request_date, + last_positive_establishment_request.modified_date AS last_positive_establishment_request_date, + last_positive_take_into_use_request.modified_date AS last_positive_take_into_use_request_date, + last_positive_finalization_request.modified_date AS last_positive_finalization_request_date + ,COALESCE (has_used_system_types_relations.has_used_system_type_relations, false) AS has_used_system_type_relations + FROM riha.main_resource AS main_resource + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + sub_type, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type IN ('ESTABLISHMENT_REQUEST', + 'TAKE_INTO_USE_REQUEST', + 'FINALIZATION_REQUEST') + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_approval_request + ON (json_content ->> 'uuid') :: UUID = last_positive_approval_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'ESTABLISHMENT_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_establishment_request + ON (json_content ->> 'uuid') :: UUID = last_positive_establishment_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'TAKE_INTO_USE_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_take_into_use_request + ON (json_content ->> 'uuid') :: UUID = last_positive_take_into_use_request.infosystem_uuid + LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) + infosystem_uuid, + modified_date + FROM riha.comment + WHERE + type = 'ISSUE' + AND sub_type = 'FINALIZATION_REQUEST' + AND status = 'CLOSED' + AND resolution_type = 'POSITIVE' + ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_finalization_request + ON (json_content ->> 'uuid') :: UUID = last_positive_finalization_request.infosystem_uuid + + LEFT JOIN + (select count(*) > 0 as has_used_system_type_relations, infosystem_uuid from riha.main_resource_relation mrr where mrr.type ='USED_SYSTEM' group by infosystem_uuid) + as has_used_system_types_relations + ON (json_content ->> 'uuid') :: UUID = has_used_system_types_relations.infosystem_uuid + + ORDER BY json_content ->> 'uuid', + j_update_timestamp DESC NULLS LAST, + main_resource_id DESC + From f80337195dc991998a5094f2c654bd16c9222c4b Mon Sep 17 00:00:00 2001 From: Aleksandr Ivanov Date: Tue, 29 Jan 2019 21:37:44 +0200 Subject: [PATCH 4/4] code review feedback - deleted duplicated file --- ...e_relations_info_to_main_resource_view.sql | 74 ------------------- 1 file changed, 74 deletions(-) delete mode 100644 src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql diff --git a/src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql b/src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql deleted file mode 100644 index 5c3d59d..0000000 --- a/src/test/resources/liquibase/update/20190124_add_used_type_relations_info_to_main_resource_view.sql +++ /dev/null @@ -1,74 +0,0 @@ --- drop view riha.main_resource_view cascade - -CREATE OR REPLACE VIEW riha.main_resource_view AS - - SELECT DISTINCT ON (json_content ->> 'uuid') - main_resource.*, - ((main_resource.json_content #>> - '{meta,creation_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_creation_timestamp, - ((main_resource.json_content #>> - '{meta,update_timestamp}' :: TEXT [])) :: TIMESTAMP WITH TIME ZONE AS j_update_timestamp, - last_positive_approval_request.sub_type AS last_positive_approval_request_type, - last_positive_approval_request.modified_date AS last_positive_approval_request_date, - last_positive_establishment_request.modified_date AS last_positive_establishment_request_date, - last_positive_take_into_use_request.modified_date AS last_positive_take_into_use_request_date, - last_positive_finalization_request.modified_date AS last_positive_finalization_request_date - ,COALESCE (has_used_system_types_relations.has_used_system_type_relations, false) AS has_used_system_type_relations - FROM riha.main_resource AS main_resource - LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) - infosystem_uuid, - sub_type, - modified_date - FROM riha.comment - WHERE - type = 'ISSUE' - AND sub_type IN ('ESTABLISHMENT_REQUEST', - 'TAKE_INTO_USE_REQUEST', - 'FINALIZATION_REQUEST') - AND status = 'CLOSED' - AND resolution_type = 'POSITIVE' - ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_approval_request - ON (json_content ->> 'uuid') :: UUID = last_positive_approval_request.infosystem_uuid - LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) - infosystem_uuid, - modified_date - FROM riha.comment - WHERE - type = 'ISSUE' - AND sub_type = 'ESTABLISHMENT_REQUEST' - AND status = 'CLOSED' - AND resolution_type = 'POSITIVE' - ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_establishment_request - ON (json_content ->> 'uuid') :: UUID = last_positive_establishment_request.infosystem_uuid - LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) - infosystem_uuid, - modified_date - FROM riha.comment - WHERE - type = 'ISSUE' - AND sub_type = 'TAKE_INTO_USE_REQUEST' - AND status = 'CLOSED' - AND resolution_type = 'POSITIVE' - ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_take_into_use_request - ON (json_content ->> 'uuid') :: UUID = last_positive_take_into_use_request.infosystem_uuid - LEFT JOIN (SELECT DISTINCT ON (infosystem_uuid) - infosystem_uuid, - modified_date - FROM riha.comment - WHERE - type = 'ISSUE' - AND sub_type = 'FINALIZATION_REQUEST' - AND status = 'CLOSED' - AND resolution_type = 'POSITIVE' - ORDER BY infosystem_uuid, modified_date DESC) AS last_positive_finalization_request - ON (json_content ->> 'uuid') :: UUID = last_positive_finalization_request.infosystem_uuid - - LEFT JOIN - (select count(*) > 0 as has_used_system_type_relations, infosystem_uuid from riha.main_resource_relation mrr where mrr.type ='USED_SYSTEM' group by infosystem_uuid) - as has_used_system_types_relations - ON (json_content ->> 'uuid') :: UUID = has_used_system_types_relations.infosystem_uuid - - ORDER BY json_content ->> 'uuid', - j_update_timestamp DESC NULLS LAST, - main_resource_id DESC -