From 2790155281e7b8ff4b2f751ff8476568b79efcca Mon Sep 17 00:00:00 2001 From: Dylan Leard Date: Tue, 27 Apr 2021 16:22:30 -0700 Subject: [PATCH] feat: add emission_category_missing_fuel validation function --- .../emission_category_missing_fuel.sql | 30 +++++++++++++++++++ .../emission_category_missing_fuel.sql | 7 +++++ schema/sqitch.plan | 1 + .../emission_category_missing_fuel.sql | 7 +++++ 4 files changed, 45 insertions(+) create mode 100644 schema/deploy/application_validation_functions/emission_category_missing_fuel.sql create mode 100644 schema/revert/application_validation_functions/emission_category_missing_fuel.sql create mode 100644 schema/verify/application_validation_functions/emission_category_missing_fuel.sql diff --git a/schema/deploy/application_validation_functions/emission_category_missing_fuel.sql b/schema/deploy/application_validation_functions/emission_category_missing_fuel.sql new file mode 100644 index 0000000000..97b240f734 --- /dev/null +++ b/schema/deploy/application_validation_functions/emission_category_missing_fuel.sql @@ -0,0 +1,30 @@ +-- Deploy ggircs-portal:application_validation_functions/emission_category_missing_fuel to pg +-- requires: tables/application_revision_validation_function +-- requires: computed_columns/application_revision_validation + +begin; + +create or replace function ggircs_portal.emission_category_missing_fuel(app_revision ggircs_portal.application_revision) + returns boolean + as $$ + + with x as ( + select distinct(source_type_name) as reported_via_emission + from ggircs_portal.ciip_emission ce + where ce.application_id = app_revision.application_id + and ce.version_number = app_revision.version_number + and ce.annual_co2e > 0 + ), y as ( + select distinct (display_name) as reported_via_fuel from ggircs_portal.emission_category ec + join ggircs_portal.ciip_fuel cf + on cf.emission_category_id = ec.id + and cf.application_id = app_revision.application_id + and cf.version_number = app_revision.version_number + and cf.quantity > 0 + ) select (select count(*) from x where reported_via_emission not in (select reported_via_fuel from y)) = 0; + + $$ language sql stable; + +comment on function ggircs_portal.emission_category_missing_fuel(ggircs_portal.application_revision) is 'This validation function for a CIIP (CleanBC Industrial Incentive Program) determines if any emission categories have emissions reported in a category, but no corresponding fuels reported for the category'; + +commit; diff --git a/schema/revert/application_validation_functions/emission_category_missing_fuel.sql b/schema/revert/application_validation_functions/emission_category_missing_fuel.sql new file mode 100644 index 0000000000..961adb3e7a --- /dev/null +++ b/schema/revert/application_validation_functions/emission_category_missing_fuel.sql @@ -0,0 +1,7 @@ +-- Revert ggircs-portal:application_validation_functions/emission_category_missing_fuel from pg + +begin; + +drop function ggircs_portal.emission_category_missing_fuel; + +commit; diff --git a/schema/sqitch.plan b/schema/sqitch.plan index 2ba0de92a3..a226991ec4 100644 --- a/schema/sqitch.plan +++ b/schema/sqitch.plan @@ -329,3 +329,4 @@ swrs_functions/refresh_swrs_version_data [swrs_functions/refresh_swrs_version_da @v2.3.1 2021-04-29T17:39:15Z Dylan Leard # release v2.3.1 application_validation_functions/emission_total_matches_rev_zero 2021-04-28T15:44:50Z Pierre Bastianelli # Validation function that validates that for a given application revision, the emission total matches the revision zero (swrs) emission total computed_columns/application_revision_total_ciip_emissions [computed_columns/application_revision_total_ciip_emissions@v2.3.0] 2021-04-28T23:40:07Z Naomi Aro # Don't use metabase view +application_validation_functions/emission_category_missing_fuel [tables/application_revision_validation_function computed_columns/application_revision_validation] 2021-04-27T21:54:17Z Dylan Leard # Validation function to determine if there a missing fuels based on the emission categories with reported emissions diff --git a/schema/verify/application_validation_functions/emission_category_missing_fuel.sql b/schema/verify/application_validation_functions/emission_category_missing_fuel.sql new file mode 100644 index 0000000000..fd9de47dd7 --- /dev/null +++ b/schema/verify/application_validation_functions/emission_category_missing_fuel.sql @@ -0,0 +1,7 @@ +-- Verify ggircs-portal:application_validation_functions/emission_category_missing_fuel on pg + +begin; + +select pg_get_functiondef('ggircs_portal.application_revision_ciip_incentive(ggircs_portal.application_revision)'::regprocedure); + +rollback;