diff --git a/database/src/migrations/20210225205948_biohub_release.ts b/database/src/migrations/20210225205948_biohub_release.ts index b5014027db..2d3e5cbefe 100644 --- a/database/src/migrations/20210225205948_biohub_release.ts +++ b/database/src/migrations/20210225205948_biohub_release.ts @@ -5,6 +5,8 @@ import path from 'path'; const DB_USER_API_PASS = process.env.DB_USER_API_PASS; const DB_USER_API = process.env.DB_USER_API; +const DB_RELEASE = 'release.0.17'; + /** * Apply biohub release changes. * @@ -13,62 +15,54 @@ const DB_USER_API = process.env.DB_USER_API; * @return {*} {Promise} */ export async function up(knex: Knex): Promise { - const create_spatial_extensions = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'create_spatial_extensions.psql') - ); - const biohub_ddl = fs.readFileSync(path.join(__dirname, 'release.0.16', 'biohub.sql')); + const create_spatial_extensions = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'create_spatial_extensions.psql')); + const biohub_ddl = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'biohub.sql')); const populate_user_identity_source = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_user_identity_source.sql') - ); - const api_set_context = fs.readFileSync(path.join(__dirname, 'release.0.16', 'api_set_context.sql')); - const tr_audit_trigger = fs.readFileSync(path.join(__dirname, 'release.0.16', 'tr_audit_trigger.sql')); - const project_audit_triggers = fs.readFileSync(path.join(__dirname, 'release.0.16', 'project_audit_triggers.sql')); - const api_get_context_user_id = fs.readFileSync(path.join(__dirname, 'release.0.16', 'api_get_context_user_id.sql')); - const tr_journal_trigger = fs.readFileSync(path.join(__dirname, 'release.0.16', 'tr_journal_trigger.sql')); - const project_journal_triggers = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'project_journal_triggers.sql') + path.join(__dirname, DB_RELEASE, 'populate_user_identity_source.sql') ); - const tr_project_funding_source = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'tr_project_funding_source.sql') - ); - const api_delete_project = fs.readFileSync(path.join(__dirname, 'release.0.16', 'api_delete_project.sql')); + const api_set_context = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'api_set_context.sql')); + const tr_audit_trigger = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_audit_trigger.sql')); + const project_audit_triggers = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'project_audit_triggers.sql')); + const api_get_context_user_id = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'api_get_context_user_id.sql')); + const tr_journal_trigger = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_journal_trigger.sql')); + const project_journal_triggers = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'project_journal_triggers.sql')); + const tr_project_funding_source = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_project_funding_source.sql')); + const api_delete_project = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'api_delete_project.sql')); - const populate_first_nations = fs.readFileSync(path.join(__dirname, 'release.0.16', 'populate_first_nations.sql')); + const populate_first_nations = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_first_nations.sql')); const populate_climate_change_initiatives = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_climate_change_initiatives.sql') + path.join(__dirname, DB_RELEASE, 'populate_climate_change_initiatives.sql') ); const populate_management_action_type = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_management_action_type.sql') + path.join(__dirname, DB_RELEASE, 'populate_management_action_type.sql') ); - const populate_funding_source = fs.readFileSync(path.join(__dirname, 'release.0.16', 'populate_funding_source.sql')); + const populate_funding_source = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_funding_source.sql')); const populate_investment_action_category = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_investment_action_category.sql') + path.join(__dirname, DB_RELEASE, 'populate_investment_action_category.sql') ); - const populate_project_type = fs.readFileSync(path.join(__dirname, 'release.0.16', 'populate_project_type.sql')); - const populate_activity = fs.readFileSync(path.join(__dirname, 'release.0.16', 'populate_activity.sql')); + const populate_project_type = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_project_type.sql')); + const populate_activity = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_activity.sql')); const populate_iucn_classifications = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_iucn_classifications.sql') + path.join(__dirname, DB_RELEASE, 'populate_iucn_classifications.sql') ); - const populate_project_role = fs.readFileSync(path.join(__dirname, 'release.0.16', 'populate_project_role.sql')); - const populate_system_role = fs.readFileSync(path.join(__dirname, 'release.0.16', 'populate_system_role.sql')); + const populate_project_role = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_project_role.sql')); + const populate_system_role = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_system_role.sql')); const populate_administrative_activity_type = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_administrative_activity_type.sql') + path.join(__dirname, DB_RELEASE, 'populate_administrative_activity_type.sql') ); const populate_administrative_activity_status_type = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_administrative_activity_status_type.sql') - ); - const populate_proprietor_type = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_proprietor_type.sql') + path.join(__dirname, DB_RELEASE, 'populate_administrative_activity_status_type.sql') ); + const populate_proprietor_type = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'populate_proprietor_type.sql')); const populate_wldtaxonomic_units = fs.readFileSync( - path.join(__dirname, 'release.0.16', 'populate_wldtaxonomic_units.sql') + path.join(__dirname, DB_RELEASE, 'populate_wldtaxonomic_units.sql') ); - const tr_survey_proprietor = fs.readFileSync(path.join(__dirname, 'release.0.16', 'tr_survey_proprietor.sql')); - const tr_project = fs.readFileSync(path.join(__dirname, 'release.0.16', 'tr_project.sql')); - const tr_survey = fs.readFileSync(path.join(__dirname, 'release.0.16', 'tr_survey.sql')); - const tr_permit = fs.readFileSync(path.join(__dirname, 'release.0.16', 'tr_permit.sql')); + const tr_survey_proprietor = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_survey_proprietor.sql')); + const tr_project = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_project.sql')); + const tr_survey = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_survey.sql')); + const tr_permit = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'tr_permit.sql')); - const project_dapi_views = fs.readFileSync(path.join(__dirname, 'release.0.16', 'project_dapi_views.sql')); + const project_dapi_views = fs.readFileSync(path.join(__dirname, DB_RELEASE, 'project_dapi_views.sql')); await knex.raw(` -- set up spatial extensions diff --git a/database/src/migrations/release.0.16/api_delete_project.sql b/database/src/migrations/release.0.17/api_delete_project.sql similarity index 84% rename from database/src/migrations/release.0.16/api_delete_project.sql rename to database/src/migrations/release.0.17/api_delete_project.sql index 1d12f04de5..061756610b 100644 --- a/database/src/migrations/release.0.16/api_delete_project.sql +++ b/database/src/migrations/release.0.17/api_delete_project.sql @@ -17,8 +17,13 @@ $$ -- 2021-04-19 initial release -- ******************************************************************* declare - + __count integer := 0; begin + select count(*) into __count from survey_publish_history where s_id in (select id from survey where p_id = __project_id); + if (__count > 0) then + raise exception 'Project cannot be deleted as associated published data exists.'; + end if; + delete from survey_proprietor where s_id in (select id from survey where p_id = __project_id); delete from survey_attachment where s_id in (select id from survey where p_id = __project_id); delete from study_species where s_id in (select id from survey where p_id = __project_id); @@ -35,6 +40,9 @@ begin delete from project_first_nation where p_id = __project_id; delete from project_participation where p_id = __project_id; delete from project where id = __project_id; - + +exception + when others THEN + raise; end; $$; diff --git a/database/src/migrations/release.0.16/api_get_context_user_id.sql b/database/src/migrations/release.0.17/api_get_context_user_id.sql similarity index 100% rename from database/src/migrations/release.0.16/api_get_context_user_id.sql rename to database/src/migrations/release.0.17/api_get_context_user_id.sql diff --git a/database/src/migrations/release.0.16/api_set_context.sql b/database/src/migrations/release.0.17/api_set_context.sql similarity index 100% rename from database/src/migrations/release.0.16/api_set_context.sql rename to database/src/migrations/release.0.17/api_set_context.sql diff --git a/database/src/migrations/release.0.16/biohub.sql b/database/src/migrations/release.0.17/biohub.sql similarity index 94% rename from database/src/migrations/release.0.16/biohub.sql rename to database/src/migrations/release.0.17/biohub.sql index 850026be64..857bff2753 100644 --- a/database/src/migrations/release.0.16/biohub.sql +++ b/database/src/migrations/release.0.17/biohub.sql @@ -2,7 +2,7 @@ -- ER/Studio Data Architect SQL Code Generation -- Project : BioHub.DM1 -- --- Date Created : Tuesday, May 18, 2021 10:47:16 +-- Date Created : Thursday, June 03, 2021 12:01:34 -- Target DBMS : PostgreSQL 10.x-12.x -- @@ -652,7 +652,15 @@ COMMENT ON COLUMN permit.update_user IS 'The id of the user who updated the reco ; COMMENT ON COLUMN permit.revision_count IS 'Revision count used for concurrency control.' ; -COMMENT ON TABLE permit IS 'Provides a record of scientific permits.' +COMMENT ON TABLE permit IS 'Provides a record of scientific permits. Note that permits are first class objects in the data model and do not require an association to either a project or survey. Additionally: +- Association to a survey or project implies that sampling was conducted related to the permit +- No association to a survey or project implies that sampling was not conducted related to the permit +- Permits that are associated with a project should eventually be related to a survey +- Permits can be associated with one or zero projects +- Permits can only be associated with one survey +- Permits that have no association with a project or survey require values for coordinator first name, last name, email address and agency name + +NOTE: there are conceptual problems with associating permits to projects early instead of at the survey level and these should be addressed in subsequent versions of the application.' ; -- @@ -783,7 +791,7 @@ CREATE TABLE project_attachment( file_name varchar(300), title varchar(300), description varchar(250), - key varchar(300) NOT NULL, + key varchar(1000) NOT NULL, file_size integer, create_date timestamptz(6) DEFAULT now() NOT NULL, create_user integer NOT NULL, @@ -1318,7 +1326,7 @@ COMMENT ON COLUMN study_species.update_user IS 'The id of the user who updated t ; COMMENT ON COLUMN study_species.revision_count IS 'Revision count used for concurrency control.' ; -COMMENT ON TABLE study_species IS 'The study species for the project and survey.' +COMMENT ON TABLE study_species IS 'The study species for the survey.' ; -- @@ -1397,7 +1405,7 @@ CREATE TABLE survey_attachment( file_name varchar(300), title varchar(300), description varchar(250), - key varchar(300) NOT NULL, + key varchar(1000) NOT NULL, file_size integer, create_date timestamptz(6) DEFAULT now() NOT NULL, create_user integer NOT NULL, @@ -1475,6 +1483,56 @@ COMMENT ON COLUMN survey_funding_source.revision_count IS 'Revision count used f COMMENT ON TABLE survey_funding_source IS 'A associative entity that joins surveys and funding source details.' ; +-- +-- TABLE: survey_occurrence +-- + +CREATE TABLE survey_occurrence( + id integer GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1), + s_id integer NOT NULL, + associatedtaxa varchar(3000) NOT NULL, + lifestage varchar(3000) NOT NULL, + data json, + geometry geometry(geometry, 3005), + geography geography(geometry), + create_date timestamptz(6) DEFAULT now() NOT NULL, + create_user integer NOT NULL, + update_date timestamptz(6), + update_user integer, + revision_count integer DEFAULT 0 NOT NULL, + CONSTRAINT "PK169" PRIMARY KEY (id) +) +; + + + +COMMENT ON COLUMN survey_occurrence.id IS 'System generated surrogate primary key identifier.' +; +COMMENT ON COLUMN survey_occurrence.s_id IS 'System generated surrogate primary key identifier.' +; +COMMENT ON COLUMN survey_occurrence.associatedtaxa IS 'A string representation of the value provided for the given Darwin Core term.' +; +COMMENT ON COLUMN survey_occurrence.lifestage IS 'A string representation of the value provided for the given Darwin Core term.' +; +COMMENT ON COLUMN survey_occurrence.data IS 'The json data associated with the record.' +; +COMMENT ON COLUMN survey_occurrence.geometry IS 'The containing geometry of the record.' +; +COMMENT ON COLUMN survey_occurrence.geography IS 'The containing geography of the record.' +; +COMMENT ON COLUMN survey_occurrence.create_date IS 'The datetime the record was created.' +; +COMMENT ON COLUMN survey_occurrence.create_user IS 'The id of the user who created the record as identified in the system user table.' +; +COMMENT ON COLUMN survey_occurrence.update_date IS 'The datetime the record was updated.' +; +COMMENT ON COLUMN survey_occurrence.update_user IS 'The id of the user who updated the record as identified in the system user table.' +; +COMMENT ON COLUMN survey_occurrence.revision_count IS 'Revision count used for concurrency control.' +; +COMMENT ON TABLE survey_occurrence IS 'Occurrence records associated with a survey.' +; + -- -- TABLE: survey_proprietor -- @@ -1525,6 +1583,47 @@ COMMENT ON COLUMN survey_proprietor.revision_count IS 'Revision count used for c COMMENT ON TABLE survey_proprietor IS 'Intersection table associating surveys to proprietary types and associated meta data.' ; +-- +-- TABLE: survey_publish_history +-- + +CREATE TABLE survey_publish_history( + id integer GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1), + s_id integer NOT NULL, + publish_date date NOT NULL, + key varchar(1000), + create_date timestamptz(6) DEFAULT now() NOT NULL, + create_user integer NOT NULL, + update_date timestamptz(6), + update_user integer, + revision_count integer DEFAULT 0 NOT NULL, + CONSTRAINT "PK165" PRIMARY KEY (id) +) +; + + + +COMMENT ON COLUMN survey_publish_history.id IS 'System generated surrogate primary key identifier.' +; +COMMENT ON COLUMN survey_publish_history.s_id IS 'System generated surrogate primary key identifier.' +; +COMMENT ON COLUMN survey_publish_history.publish_date IS 'The date that the survey version was published.' +; +COMMENT ON COLUMN survey_publish_history.key IS 'The identifying key to the file in the storage system.' +; +COMMENT ON COLUMN survey_publish_history.create_date IS 'The datetime the record was created.' +; +COMMENT ON COLUMN survey_publish_history.create_user IS 'The id of the user who created the record as identified in the system user table.' +; +COMMENT ON COLUMN survey_publish_history.update_date IS 'The datetime the record was updated.' +; +COMMENT ON COLUMN survey_publish_history.update_user IS 'The id of the user who updated the record as identified in the system user table.' +; +COMMENT ON COLUMN survey_publish_history.revision_count IS 'Revision count used for concurrency control.' +; +COMMENT ON TABLE survey_publish_history IS 'Provides a historical listing of published dates and pointers to raw data versions.' +; + -- -- TABLE: system_constant -- @@ -2239,6 +2338,12 @@ CREATE INDEX "Ref7487" ON survey_funding_source(pfs_id) CREATE INDEX "Ref15388" ON survey_funding_source(s_id) ; -- +-- INDEX: "Ref15396" +-- + +CREATE INDEX "Ref15396" ON survey_occurrence(s_id) +; +-- -- INDEX: "Ref15983" -- @@ -2257,6 +2362,12 @@ CREATE INDEX "Ref15384" ON survey_proprietor(s_id) CREATE INDEX "Ref12785" ON survey_proprietor(fn_id) ; -- +-- INDEX: "Ref15395" +-- + +CREATE INDEX "Ref15395" ON survey_publish_history(s_id) +; +-- -- INDEX: sc_uk1 -- @@ -2580,6 +2691,16 @@ ALTER TABLE survey_funding_source ADD CONSTRAINT "Refsurvey88" ; +-- +-- TABLE: survey_occurrence +-- + +ALTER TABLE survey_occurrence ADD CONSTRAINT "Refsurvey96" + FOREIGN KEY (s_id) + REFERENCES survey(id) +; + + -- -- TABLE: survey_proprietor -- @@ -2600,6 +2721,16 @@ ALTER TABLE survey_proprietor ADD CONSTRAINT "Reffirst_nations85" ; +-- +-- TABLE: survey_publish_history +-- + +ALTER TABLE survey_publish_history ADD CONSTRAINT "Refsurvey95" + FOREIGN KEY (s_id) + REFERENCES survey(id) +; + + -- -- TABLE: system_user -- diff --git a/database/src/migrations/release.0.16/create_spatial_extensions.psql b/database/src/migrations/release.0.17/create_spatial_extensions.psql similarity index 100% rename from database/src/migrations/release.0.16/create_spatial_extensions.psql rename to database/src/migrations/release.0.17/create_spatial_extensions.psql diff --git a/database/src/migrations/release.0.16/db_setup_up.sql b/database/src/migrations/release.0.17/db_setup_up.sql similarity index 100% rename from database/src/migrations/release.0.16/db_setup_up.sql rename to database/src/migrations/release.0.17/db_setup_up.sql diff --git a/database/src/migrations/release.0.16/populate_activity.sql b/database/src/migrations/release.0.17/populate_activity.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_activity.sql rename to database/src/migrations/release.0.17/populate_activity.sql diff --git a/database/src/migrations/release.0.16/populate_administrative_activity_status_type.sql b/database/src/migrations/release.0.17/populate_administrative_activity_status_type.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_administrative_activity_status_type.sql rename to database/src/migrations/release.0.17/populate_administrative_activity_status_type.sql diff --git a/database/src/migrations/release.0.16/populate_administrative_activity_type.sql b/database/src/migrations/release.0.17/populate_administrative_activity_type.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_administrative_activity_type.sql rename to database/src/migrations/release.0.17/populate_administrative_activity_type.sql diff --git a/database/src/migrations/release.0.16/populate_climate_change_initiatives.sql b/database/src/migrations/release.0.17/populate_climate_change_initiatives.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_climate_change_initiatives.sql rename to database/src/migrations/release.0.17/populate_climate_change_initiatives.sql diff --git a/database/src/migrations/release.0.16/populate_first_nations.sql b/database/src/migrations/release.0.17/populate_first_nations.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_first_nations.sql rename to database/src/migrations/release.0.17/populate_first_nations.sql diff --git a/database/src/migrations/release.0.16/populate_funding_source.sql b/database/src/migrations/release.0.17/populate_funding_source.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_funding_source.sql rename to database/src/migrations/release.0.17/populate_funding_source.sql diff --git a/database/src/migrations/release.0.16/populate_investment_action_category.sql b/database/src/migrations/release.0.17/populate_investment_action_category.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_investment_action_category.sql rename to database/src/migrations/release.0.17/populate_investment_action_category.sql diff --git a/database/src/migrations/release.0.16/populate_iucn_classifications.sql b/database/src/migrations/release.0.17/populate_iucn_classifications.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_iucn_classifications.sql rename to database/src/migrations/release.0.17/populate_iucn_classifications.sql diff --git a/database/src/migrations/release.0.16/populate_management_action_type.sql b/database/src/migrations/release.0.17/populate_management_action_type.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_management_action_type.sql rename to database/src/migrations/release.0.17/populate_management_action_type.sql diff --git a/database/src/migrations/release.0.16/populate_project_role.sql b/database/src/migrations/release.0.17/populate_project_role.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_project_role.sql rename to database/src/migrations/release.0.17/populate_project_role.sql diff --git a/database/src/migrations/release.0.16/populate_project_type.sql b/database/src/migrations/release.0.17/populate_project_type.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_project_type.sql rename to database/src/migrations/release.0.17/populate_project_type.sql diff --git a/database/src/migrations/release.0.16/populate_proprietor_type.sql b/database/src/migrations/release.0.17/populate_proprietor_type.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_proprietor_type.sql rename to database/src/migrations/release.0.17/populate_proprietor_type.sql diff --git a/database/src/migrations/release.0.16/populate_system_role.sql b/database/src/migrations/release.0.17/populate_system_role.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_system_role.sql rename to database/src/migrations/release.0.17/populate_system_role.sql diff --git a/database/src/migrations/release.0.16/populate_user_identity_source.sql b/database/src/migrations/release.0.17/populate_user_identity_source.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_user_identity_source.sql rename to database/src/migrations/release.0.17/populate_user_identity_source.sql diff --git a/database/src/migrations/release.0.16/populate_wldtaxonomic_units.sql b/database/src/migrations/release.0.17/populate_wldtaxonomic_units.sql similarity index 100% rename from database/src/migrations/release.0.16/populate_wldtaxonomic_units.sql rename to database/src/migrations/release.0.17/populate_wldtaxonomic_units.sql diff --git a/database/src/migrations/release.0.16/project_audit_triggers.sql b/database/src/migrations/release.0.17/project_audit_triggers.sql similarity index 94% rename from database/src/migrations/release.0.16/project_audit_triggers.sql rename to database/src/migrations/release.0.17/project_audit_triggers.sql index 04113a8bda..367482a2d2 100644 --- a/database/src/migrations/release.0.16/project_audit_triggers.sql +++ b/database/src/migrations/release.0.17/project_audit_triggers.sql @@ -1,19 +1,17 @@ create trigger audit_activity before insert or update or delete on biohub.activity for each row execute procedure tr_audit_trigger(); - create trigger audit_administrative_activity_type before insert or update or delete on biohub.administrative_activity_type for each row execute procedure tr_audit_trigger(); create trigger audit_administrative_activity_status_type before insert or update or delete on biohub.administrative_activity_status_type for each row execute procedure tr_audit_trigger(); create trigger audit_climate_change_initiative before insert or update or delete on biohub.climate_change_initiative for each row execute procedure tr_audit_trigger(); - create trigger audit_funding_source before insert or update or delete on biohub.funding_source for each row execute procedure tr_audit_trigger(); - create trigger audit_investment_action_category before insert or update or delete on biohub.investment_action_category for each row execute procedure tr_audit_trigger(); + create trigger audit_iucn_conservation_action_level_1_classification before insert or update or delete on biohub.iucn_conservation_action_level_1_classification for each row execute procedure tr_audit_trigger(); create trigger audit_first_nations before insert or update or delete on biohub.first_nations for each row execute procedure tr_audit_trigger(); create trigger audit_iucn_conservation_action_level_3_subclassification before insert or update or delete on biohub.iucn_conservation_action_level_3_subclassification for each row execute procedure tr_audit_trigger(); create trigger audit_project before insert or update or delete on biohub.project for each row execute procedure tr_audit_trigger(); create trigger audit_project_activity before insert or update or delete on biohub.project_activity for each row execute procedure tr_audit_trigger(); create trigger audit_project_attachment before insert or update or delete on biohub.project_attachment for each row execute procedure tr_audit_trigger(); - create trigger audit_management_action_type before insert or update or delete on biohub.management_action_type for each row execute procedure tr_audit_trigger(); - create trigger audit_iucn_conservation_action_level_1_classification before insert or update or delete on biohub.iucn_conservation_action_level_1_classification for each row execute procedure tr_audit_trigger(); + create trigger audit_project_climate_initiative before insert or update or delete on biohub.project_climate_initiative for each row execute procedure tr_audit_trigger(); create trigger audit_iucn_conservation_action_level_2_subclassification before insert or update or delete on biohub.iucn_conservation_action_level_2_subclassification for each row execute procedure tr_audit_trigger(); create trigger audit_permit before insert or update or delete on biohub.permit for each row execute procedure tr_audit_trigger(); - create trigger audit_project_first_nation before insert or update or delete on biohub.project_first_nation for each row execute procedure tr_audit_trigger(); + create trigger audit_management_action_type before insert or update or delete on biohub.management_action_type for each row execute procedure tr_audit_trigger(); + create trigger audit_project_funding_source before insert or update or delete on biohub.project_funding_source for each row execute procedure tr_audit_trigger(); create trigger audit_project_region before insert or update or delete on biohub.project_region for each row execute procedure tr_audit_trigger(); create trigger audit_project_iucn_action_classification before insert or update or delete on biohub.project_iucn_action_classification for each row execute procedure tr_audit_trigger(); create trigger audit_project_management_actions before insert or update or delete on biohub.project_management_actions for each row execute procedure tr_audit_trigger(); @@ -22,19 +20,23 @@ create trigger audit_proprietor_type before insert or update or delete on biohub.proprietor_type for each row execute procedure tr_audit_trigger(); create trigger audit_stakeholder_partnership before insert or update or delete on biohub.stakeholder_partnership for each row execute procedure tr_audit_trigger(); create trigger audit_survey_funding_source before insert or update or delete on biohub.survey_funding_source for each row execute procedure tr_audit_trigger(); - create trigger audit_system_user_role before insert or update or delete on biohub.system_user_role for each row execute procedure tr_audit_trigger(); + create trigger audit_survey_occurrence before insert or update or delete on biohub.survey_occurrence for each row execute procedure tr_audit_trigger(); + create trigger audit_survey_publish_history before insert or update or delete on biohub.survey_publish_history for each row execute procedure tr_audit_trigger(); + create trigger audit_system_role before insert or update or delete on biohub.system_role for each row execute procedure tr_audit_trigger(); create trigger audit_system_constant before insert or update or delete on biohub.system_constant for each row execute procedure tr_audit_trigger(); - create trigger audit_system_user before insert or update or delete on biohub.system_user for each row execute procedure tr_audit_trigger(); create trigger audit_survey before insert or update or delete on biohub.survey for each row execute procedure tr_audit_trigger(); create trigger audit_study_species before insert or update or delete on biohub.study_species for each row execute procedure tr_audit_trigger(); create trigger audit_survey_attachment before insert or update or delete on biohub.survey_attachment for each row execute procedure tr_audit_trigger(); create trigger audit_survey_proprietor before insert or update or delete on biohub.survey_proprietor for each row execute procedure tr_audit_trigger(); - create trigger audit_system_role before insert or update or delete on biohub.system_role for each row execute procedure tr_audit_trigger(); + create trigger audit_system_user_role before insert or update or delete on biohub.system_user_role for each row execute procedure tr_audit_trigger(); create trigger audit_user_identity_source before insert or update or delete on biohub.user_identity_source for each row execute procedure tr_audit_trigger(); create trigger audit_webform_draft before insert or update or delete on biohub.webform_draft for each row execute procedure tr_audit_trigger(); + create trigger audit_administrative_activity_type before insert or update or delete on biohub.administrative_activity_type for each row execute procedure tr_audit_trigger(); create trigger audit_administrative_activity before insert or update or delete on biohub.administrative_activity for each row execute procedure tr_audit_trigger(); + create trigger audit_system_user before insert or update or delete on biohub.system_user for each row execute procedure tr_audit_trigger(); + create trigger audit_funding_source before insert or update or delete on biohub.funding_source for each row execute procedure tr_audit_trigger(); + create trigger audit_investment_action_category before insert or update or delete on biohub.investment_action_category for each row execute procedure tr_audit_trigger(); create trigger audit_project_type before insert or update or delete on biohub.project_type for each row execute procedure tr_audit_trigger(); - create trigger audit_project_climate_initiative before insert or update or delete on biohub.project_climate_initiative for each row execute procedure tr_audit_trigger(); - create trigger audit_project_funding_source before insert or update or delete on biohub.project_funding_source for each row execute procedure tr_audit_trigger(); + create trigger audit_project_first_nation before insert or update or delete on biohub.project_first_nation for each row execute procedure tr_audit_trigger(); create trigger audit_wldtaxonomic_units before insert or update or delete on biohub.wldtaxonomic_units for each row execute procedure tr_audit_trigger(); diff --git a/database/src/migrations/release.0.16/project_dapi_views.sql b/database/src/migrations/release.0.17/project_dapi_views.sql similarity index 94% rename from database/src/migrations/release.0.16/project_dapi_views.sql rename to database/src/migrations/release.0.17/project_dapi_views.sql index 67f150ba43..a6e7bd1af4 100644 --- a/database/src/migrations/release.0.16/project_dapi_views.sql +++ b/database/src/migrations/release.0.17/project_dapi_views.sql @@ -29,7 +29,9 @@ create or replace view survey as select * from biohub.survey; create or replace view survey_attachment as select * from biohub.survey_attachment; create or replace view survey_funding_source as select * from biohub.survey_funding_source; + create or replace view survey_occurrence as select * from biohub.survey_occurrence; create or replace view survey_proprietor as select * from biohub.survey_proprietor; + create or replace view survey_publish_history as select * from biohub.survey_publish_history; create or replace view system_constant as select * from biohub.system_constant; create or replace view system_role as select * from biohub.system_role; create or replace view system_user as select * from biohub.system_user; diff --git a/database/src/migrations/release.0.16/project_journal_triggers.sql b/database/src/migrations/release.0.17/project_journal_triggers.sql similarity index 94% rename from database/src/migrations/release.0.16/project_journal_triggers.sql rename to database/src/migrations/release.0.17/project_journal_triggers.sql index 902feafca1..5084984ed2 100644 --- a/database/src/migrations/release.0.16/project_journal_triggers.sql +++ b/database/src/migrations/release.0.17/project_journal_triggers.sql @@ -1,19 +1,17 @@ create trigger journal_activity after insert or update or delete on biohub.activity for each row execute procedure tr_journal_trigger(); - create trigger journal_administrative_activity_type after insert or update or delete on biohub.administrative_activity_type for each row execute procedure tr_journal_trigger(); create trigger journal_administrative_activity_status_type after insert or update or delete on biohub.administrative_activity_status_type for each row execute procedure tr_journal_trigger(); create trigger journal_climate_change_initiative after insert or update or delete on biohub.climate_change_initiative for each row execute procedure tr_journal_trigger(); - create trigger journal_funding_source after insert or update or delete on biohub.funding_source for each row execute procedure tr_journal_trigger(); - create trigger journal_investment_action_category after insert or update or delete on biohub.investment_action_category for each row execute procedure tr_journal_trigger(); + create trigger journal_iucn_conservation_action_level_1_classification after insert or update or delete on biohub.iucn_conservation_action_level_1_classification for each row execute procedure tr_journal_trigger(); create trigger journal_first_nations after insert or update or delete on biohub.first_nations for each row execute procedure tr_journal_trigger(); create trigger journal_iucn_conservation_action_level_3_subclassification after insert or update or delete on biohub.iucn_conservation_action_level_3_subclassification for each row execute procedure tr_journal_trigger(); create trigger journal_project after insert or update or delete on biohub.project for each row execute procedure tr_journal_trigger(); create trigger journal_project_activity after insert or update or delete on biohub.project_activity for each row execute procedure tr_journal_trigger(); create trigger journal_project_attachment after insert or update or delete on biohub.project_attachment for each row execute procedure tr_journal_trigger(); - create trigger journal_management_action_type after insert or update or delete on biohub.management_action_type for each row execute procedure tr_journal_trigger(); - create trigger journal_iucn_conservation_action_level_1_classification after insert or update or delete on biohub.iucn_conservation_action_level_1_classification for each row execute procedure tr_journal_trigger(); + create trigger journal_project_climate_initiative after insert or update or delete on biohub.project_climate_initiative for each row execute procedure tr_journal_trigger(); create trigger journal_iucn_conservation_action_level_2_subclassification after insert or update or delete on biohub.iucn_conservation_action_level_2_subclassification for each row execute procedure tr_journal_trigger(); create trigger journal_permit after insert or update or delete on biohub.permit for each row execute procedure tr_journal_trigger(); - create trigger journal_project_first_nation after insert or update or delete on biohub.project_first_nation for each row execute procedure tr_journal_trigger(); + create trigger journal_management_action_type after insert or update or delete on biohub.management_action_type for each row execute procedure tr_journal_trigger(); + create trigger journal_project_funding_source after insert or update or delete on biohub.project_funding_source for each row execute procedure tr_journal_trigger(); create trigger journal_project_region after insert or update or delete on biohub.project_region for each row execute procedure tr_journal_trigger(); create trigger journal_project_iucn_action_classification after insert or update or delete on biohub.project_iucn_action_classification for each row execute procedure tr_journal_trigger(); create trigger journal_project_management_actions after insert or update or delete on biohub.project_management_actions for each row execute procedure tr_journal_trigger(); @@ -22,18 +20,22 @@ create trigger journal_proprietor_type after insert or update or delete on biohub.proprietor_type for each row execute procedure tr_journal_trigger(); create trigger journal_stakeholder_partnership after insert or update or delete on biohub.stakeholder_partnership for each row execute procedure tr_journal_trigger(); create trigger journal_survey_funding_source after insert or update or delete on biohub.survey_funding_source for each row execute procedure tr_journal_trigger(); - create trigger journal_system_user_role after insert or update or delete on biohub.system_user_role for each row execute procedure tr_journal_trigger(); + create trigger journal_survey_occurrence after insert or update or delete on biohub.survey_occurrence for each row execute procedure tr_journal_trigger(); + create trigger journal_survey_publish_history after insert or update or delete on biohub.survey_publish_history for each row execute procedure tr_journal_trigger(); + create trigger journal_system_role after insert or update or delete on biohub.system_role for each row execute procedure tr_journal_trigger(); create trigger journal_system_constant after insert or update or delete on biohub.system_constant for each row execute procedure tr_journal_trigger(); - create trigger journal_system_user after insert or update or delete on biohub.system_user for each row execute procedure tr_journal_trigger(); create trigger journal_survey after insert or update or delete on biohub.survey for each row execute procedure tr_journal_trigger(); create trigger journal_study_species after insert or update or delete on biohub.study_species for each row execute procedure tr_journal_trigger(); create trigger journal_survey_attachment after insert or update or delete on biohub.survey_attachment for each row execute procedure tr_journal_trigger(); create trigger journal_survey_proprietor after insert or update or delete on biohub.survey_proprietor for each row execute procedure tr_journal_trigger(); - create trigger journal_system_role after insert or update or delete on biohub.system_role for each row execute procedure tr_journal_trigger(); + create trigger journal_system_user_role after insert or update or delete on biohub.system_user_role for each row execute procedure tr_journal_trigger(); create trigger journal_user_identity_source after insert or update or delete on biohub.user_identity_source for each row execute procedure tr_journal_trigger(); create trigger journal_webform_draft after insert or update or delete on biohub.webform_draft for each row execute procedure tr_journal_trigger(); + create trigger journal_administrative_activity_type after insert or update or delete on biohub.administrative_activity_type for each row execute procedure tr_journal_trigger(); create trigger journal_administrative_activity after insert or update or delete on biohub.administrative_activity for each row execute procedure tr_journal_trigger(); + create trigger journal_system_user after insert or update or delete on biohub.system_user for each row execute procedure tr_journal_trigger(); + create trigger journal_funding_source after insert or update or delete on biohub.funding_source for each row execute procedure tr_journal_trigger(); + create trigger journal_investment_action_category after insert or update or delete on biohub.investment_action_category for each row execute procedure tr_journal_trigger(); create trigger journal_project_type after insert or update or delete on biohub.project_type for each row execute procedure tr_journal_trigger(); - create trigger journal_project_climate_initiative after insert or update or delete on biohub.project_climate_initiative for each row execute procedure tr_journal_trigger(); - create trigger journal_project_funding_source after insert or update or delete on biohub.project_funding_source for each row execute procedure tr_journal_trigger(); + create trigger journal_project_first_nation after insert or update or delete on biohub.project_first_nation for each row execute procedure tr_journal_trigger(); diff --git a/database/src/migrations/release.0.16/smoketest_release.sql b/database/src/migrations/release.0.17/smoketest_release.sql similarity index 94% rename from database/src/migrations/release.0.16/smoketest_release.sql rename to database/src/migrations/release.0.17/smoketest_release.sql index 03019016a7..4ee5613a2f 100644 --- a/database/src/migrations/release.0.16/smoketest_release.sql +++ b/database/src/migrations/release.0.17/smoketest_release.sql @@ -125,6 +125,12 @@ begin insert into study_species (s_id, wu_id, is_focal) values (__s_id, (select id from wldtaxonomic_units where CODE = 'AMARALB'), true); select count(1) into __count from study_species; assert __count = 1, 'FAIL study_species'; + insert into survey_publish_history (s_id, publish_date) values (__s_id, now()); + select count(1) into __count from survey_publish_history; + assert __count = 1, 'FAIL survey_publish_history'; + insert into survey_occurrence (s_id, associatedtaxa, lifestage) values (__s_id, 'M-ALAL', 'Adult'); + select count(1) into __count from survey_occurrence; + assert __count = 1, 'FAIL survey_occurrence'; -- test ancillary data delete from webform_draft; @@ -151,6 +157,8 @@ begin insert into permit (number, type, issue_date, end_date, coordinator_first_name, coordinator_last_name, coordinator_email_address, coordinator_agency_name) values ('8377261', 'permit type', now(), now()+interval '1 day', 'first', 'last', 'nobody@nowhere.com', 'agency'); -- delete project + delete from survey_publish_history; + delete from survey_occurrence; call api_delete_project(__p_id); end $$; diff --git a/database/src/migrations/release.0.16/tr_audit_trigger.sql b/database/src/migrations/release.0.17/tr_audit_trigger.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_audit_trigger.sql rename to database/src/migrations/release.0.17/tr_audit_trigger.sql diff --git a/database/src/migrations/release.0.16/tr_journal_trigger.sql b/database/src/migrations/release.0.17/tr_journal_trigger.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_journal_trigger.sql rename to database/src/migrations/release.0.17/tr_journal_trigger.sql diff --git a/database/src/migrations/release.0.16/tr_permit.sql b/database/src/migrations/release.0.17/tr_permit.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_permit.sql rename to database/src/migrations/release.0.17/tr_permit.sql diff --git a/database/src/migrations/release.0.16/tr_project.sql b/database/src/migrations/release.0.17/tr_project.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_project.sql rename to database/src/migrations/release.0.17/tr_project.sql diff --git a/database/src/migrations/release.0.16/tr_project_funding_source.sql b/database/src/migrations/release.0.17/tr_project_funding_source.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_project_funding_source.sql rename to database/src/migrations/release.0.17/tr_project_funding_source.sql diff --git a/database/src/migrations/release.0.16/tr_survey.sql b/database/src/migrations/release.0.17/tr_survey.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_survey.sql rename to database/src/migrations/release.0.17/tr_survey.sql diff --git a/database/src/migrations/release.0.16/tr_survey_proprietor.sql b/database/src/migrations/release.0.17/tr_survey_proprietor.sql similarity index 100% rename from database/src/migrations/release.0.16/tr_survey_proprietor.sql rename to database/src/migrations/release.0.17/tr_survey_proprietor.sql