Skip to content

Commit 6b728b2

Browse files
authored
Merge pull request #13762 from SORMAS-Foundation/epipulse-lookup-history-tables
epipulse ref table history tables, fix delete versioning triggers
2 parents a6b1a73 + e45c020 commit 6b728b2

3 files changed

Lines changed: 137 additions & 22 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/adverseeventsfollowingimmunization/entity/AefiInvestigation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public class AefiInvestigation extends CoreAdo {
7171
private static final long serialVersionUID = 6128204752074963848L;
7272

7373
public static final String TABLE_NAME = "adverseeventsfollowingimmunizationinvestigation";
74-
public static final String AEFI_INVESTIGATION_VACCINATIONS_TABLE_NAME = "adverseeventsfollowingimmunizationinvestigation_vaccinations";
74+
public static final String AEFI_INVESTIGATION_VACCINATIONS_TABLE_NAME = "aefiinvestigation_vaccinations";
7575

7676
public static final String AEFI_REPORT = "aefiReport";
7777
public static final String AEFI_REPORT_ID = "aefiReportId";

sormas-backend/src/main/resources/sql/sormas_schema.sql

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14917,5 +14917,141 @@ ALTER TABLE externalmessage_history ADD COLUMN tuberculosisbeijinglineage boolea
1491714917

1491814918
INSERT INTO schema_version (version_number, comment) VALUES (600, 'External message tuberculosis additional fields #13727');
1491914919

14920+
-- rename aefi investigation vaccinations to a shorter name to align with history tables test
14921+
alter table adverseeventsfollowingimmunizationinvestigation_vaccinations rename to aefiinvestigation_vaccinations;
14922+
14923+
-- re-create versioning triggers to support delete for epipulse_export, aefi adverseeventsfollowingimmunization_vaccinations and aefiinvestigation_vaccinations
14924+
DROP TRIGGER IF EXISTS versioning_trigger ON epipulse_export;
14925+
CREATE TRIGGER versioning_trigger
14926+
BEFORE INSERT OR UPDATE OR DELETE ON epipulse_export
14927+
FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'epipulse_export_history', true);
14928+
14929+
DROP TRIGGER IF EXISTS versioning_trigger ON adverseeventsfollowingimmunization_vaccinations;
14930+
CREATE TRIGGER versioning_trigger
14931+
BEFORE INSERT OR UPDATE OR DELETE ON adverseeventsfollowingimmunization_vaccinations
14932+
FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'adverseeventsfollowingimmunization_vaccinations_history', true);
14933+
14934+
DROP TRIGGER IF EXISTS versioning_trigger ON aefiinvestigation_vaccinations;
14935+
CREATE TRIGGER versioning_trigger
14936+
BEFORE INSERT OR UPDATE OR DELETE ON aefiinvestigation_vaccinations
14937+
FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'aefiinvestigation_vaccinations_history', true);
14938+
14939+
-- epipulse_subjectcode_configuration
14940+
create table epipulse_subjectcode_configuration
14941+
(
14942+
id bigint not null,
14943+
uuid varchar(36) not null,
14944+
creationdate timestamp(3) not null,
14945+
changedate timestamp(3) not null,
14946+
subjectcode varchar(255) not null,
14947+
name varchar(255) not null,
14948+
disease varchar(255),
14949+
diseasename varchar(255),
14950+
healthtopic varchar(255),
14951+
healthtopicname varchar(255),
14952+
aggregatedreporting boolean not null,
14953+
validfrom date,
14954+
validto date,
14955+
sys_period tstzrange not null,
14956+
change_user_id bigint
14957+
);
14958+
14959+
alter table epipulse_subjectcode_configuration owner to sormas_user;
14960+
alter table epipulse_subjectcode_configuration add primary key (id);
14961+
alter table epipulse_subjectcode_configuration add unique (uuid);
14962+
alter table epipulse_subjectcode_configuration add unique (subjectcode);
14963+
alter table epipulse_subjectcode_configuration add unique (name);
14964+
alter table epipulse_subjectcode_configuration add constraint epipulse_subjectcode_configuration_change_user_fk foreign key (change_user_id) references users;
14965+
14966+
-- epipulse subjectcode configuration history
14967+
CREATE TABLE epipulse_subjectcode_configuration_history (LIKE epipulse_subjectcode_configuration);
14968+
DROP TRIGGER IF EXISTS versioning_trigger ON epipulse_subjectcode_configuration;
14969+
CREATE TRIGGER versioning_trigger
14970+
BEFORE INSERT OR UPDATE OR DELETE ON epipulse_subjectcode_configuration
14971+
FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'epipulse_subjectcode_configuration_history', true);
14972+
DROP TRIGGER IF EXISTS delete_history_trigger ON epipulse_subjectcode_configuration;
14973+
CREATE TRIGGER delete_history_trigger
14974+
AFTER DELETE ON epipulse_subjectcode_configuration
14975+
FOR EACH ROW EXECUTE PROCEDURE delete_history_trigger('epipulse_subjectcode_configuration_history', 'id');
14976+
ALTER TABLE epipulse_subjectcode_configuration_history OWNER TO sormas_user;
14977+
14978+
-- epipulse_datasource_configuration
14979+
create table epipulse_datasource_configuration
14980+
(
14981+
id bigint not null,
14982+
uuid varchar(36) not null,
14983+
creationdate timestamp(3) not null,
14984+
changedate timestamp(3) not null,
14985+
country_iso2_code varchar(2) not null,
14986+
datasource varchar(255) not null,
14987+
name varchar(255) not null,
14988+
description varchar(255) not null,
14989+
subjectcode varchar(255) not null,
14990+
geographicalcoverage integer,
14991+
outermostregions varchar(255),
14992+
surveillancestartdate date,
14993+
surveillanceenddate date,
14994+
validfrom date,
14995+
validto date,
14996+
sys_period tstzrange not null,
14997+
change_user_id bigint
14998+
);
14999+
15000+
alter table epipulse_datasource_configuration owner to sormas_user;
15001+
alter table epipulse_datasource_configuration add primary key (id);
15002+
alter table epipulse_datasource_configuration add unique (uuid);
15003+
alter table epipulse_datasource_configuration add constraint epipulse_datasource_configuration_change_user_fk foreign key (change_user_id) references users;
15004+
15005+
-- epipulse datasource config history
15006+
CREATE TABLE epipulse_datasource_configuration_history (LIKE epipulse_datasource_configuration);
15007+
DROP TRIGGER IF EXISTS versioning_trigger ON epipulse_datasource_configuration;
15008+
CREATE TRIGGER versioning_trigger
15009+
BEFORE INSERT OR UPDATE OR DELETE ON epipulse_datasource_configuration
15010+
FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'epipulse_datasource_configuration_history', true);
15011+
DROP TRIGGER IF EXISTS delete_history_trigger ON epipulse_datasource_configuration;
15012+
CREATE TRIGGER delete_history_trigger
15013+
AFTER DELETE ON epipulse_datasource_configuration
15014+
FOR EACH ROW EXECUTE PROCEDURE delete_history_trigger('epipulse_datasource_configuration_history', 'id');
15015+
ALTER TABLE epipulse_datasource_configuration_history OWNER TO sormas_user;
15016+
15017+
-- epipulse_location_configuration
15018+
create table epipulse_location_configuration
15019+
(
15020+
id bigint not null,
15021+
uuid varchar(36) not null,
15022+
creationdate timestamp(3) not null,
15023+
changedate timestamp(3) not null,
15024+
type varchar(255) not null,
15025+
code varchar(255) not null,
15026+
name varchar(255) not null,
15027+
eu_shortname varchar(255),
15028+
eu_fullname varchar(255),
15029+
administrative_centre varchar(255),
15030+
country_iso2_code varchar(2) not null,
15031+
country_iso3_code varchar(3),
15032+
validfrom date,
15033+
validto date,
15034+
sys_period tstzrange not null,
15035+
change_user_id bigint
15036+
);
15037+
15038+
alter table epipulse_location_configuration owner to sormas_user;
15039+
alter table epipulse_location_configuration add primary key (id);
15040+
alter table epipulse_location_configuration add unique (uuid);
15041+
alter table epipulse_location_configuration add constraint epipulse_location_configuration_change_user_fk foreign key (change_user_id) references users;
15042+
15043+
-- epipulse location config history
15044+
CREATE TABLE epipulse_location_configuration_history (LIKE epipulse_location_configuration);
15045+
DROP TRIGGER IF EXISTS versioning_trigger ON epipulse_location_configuration;
15046+
CREATE TRIGGER versioning_trigger
15047+
BEFORE INSERT OR UPDATE OR DELETE ON epipulse_location_configuration
15048+
FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'epipulse_location_configuration_history', true);
15049+
DROP TRIGGER IF EXISTS delete_history_trigger ON epipulse_location_configuration;
15050+
CREATE TRIGGER delete_history_trigger
15051+
AFTER DELETE ON epipulse_location_configuration
15052+
FOR EACH ROW EXECUTE PROCEDURE delete_history_trigger('epipulse_location_configuration_history', 'id');
15053+
ALTER TABLE epipulse_location_configuration_history OWNER TO sormas_user;
15054+
15055+
INSERT INTO schema_version (version_number, comment) VALUES (601, 'Epipulse reference tables history');
1492015056

1492115057
-- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. ***

sormas-backend/src/test/java/de/symeda/sormas/backend/common/HistoryTablesTest.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,10 @@
1212
import java.nio.file.Paths;
1313
import java.time.Duration;
1414
import java.util.Arrays;
15-
import java.util.Collections;
1615
import java.util.HashMap;
17-
import java.util.HashSet;
1816
import java.util.List;
1917
import java.util.Map;
2018
import java.util.Objects;
21-
import java.util.Set;
22-
import java.util.stream.Collectors;
2319

2420
import javax.persistence.EntityManager;
2521
import javax.persistence.EntityManagerFactory;
@@ -34,26 +30,10 @@
3430

3531
import de.hilling.junit.cdi.CdiTestJunitExtension;
3632
import de.hilling.junit.cdi.annotations.BypassTestInterceptor;
37-
import de.symeda.sormas.backend.adverseeventsfollowingimmunization.entity.Aefi;
38-
import de.symeda.sormas.backend.adverseeventsfollowingimmunization.entity.AefiInvestigation;
39-
import de.symeda.sormas.backend.epipulse.EpipulseDatasourceConfiguration;
40-
import de.symeda.sormas.backend.epipulse.EpipulseExport;
41-
import de.symeda.sormas.backend.epipulse.EpipulseLocationConfiguration;
42-
import de.symeda.sormas.backend.epipulse.EpipulseSubjectcodeConfiguration;
4333

4434
@ExtendWith(CdiTestJunitExtension.class)
4535
public class HistoryTablesTest {
4636

47-
private static final Set<String> NO_HISTORY_REQUIRED_TABLES = Collections.unmodifiableSet(
48-
new HashSet<>(
49-
Arrays.asList(
50-
Aefi.AEFI_VACCINATIONS_TABLE_NAME,
51-
AefiInvestigation.AEFI_INVESTIGATION_VACCINATIONS_TABLE_NAME,
52-
EpipulseSubjectcodeConfiguration.TABLE_NAME,
53-
EpipulseDatasourceConfiguration.TABLE_NAME,
54-
EpipulseLocationConfiguration.TABLE_NAME,
55-
EpipulseExport.TABLE_NAME)));
56-
5737
/**
5838
* Test that the *_history tables have the same columns as the corresponding production tables
5939
*
@@ -91,7 +71,6 @@ public void testHistoryTablesMatch() throws IOException, URISyntaxException {
9171
Files.readAllBytes(Paths.get(Objects.requireNonNull(getClass().getClassLoader().getResource("checkHistoryTables.sql")).toURI())));
9272
@SuppressWarnings("unchecked")
9373
List<Object[]> results = (List<Object[]>) em.createNativeQuery(checkHistoryTablesSql).getResultList();
94-
results = results.stream().filter(objects -> !NO_HISTORY_REQUIRED_TABLES.contains(objects[1].toString())).collect(Collectors.toList());
9574
StringBuilder result = new StringBuilder();
9675
results.forEach(objects -> {
9776
result.append("\n");

0 commit comments

Comments
 (0)