Skip to content

Commit

Permalink
Merge branch 'main' into measurement-view
Browse files Browse the repository at this point in the history
  • Loading branch information
cymed authored Sep 23, 2024
2 parents 6ff053c + 34dccd1 commit cd3b9cc
Show file tree
Hide file tree
Showing 8 changed files with 899 additions and 36 deletions.
5 changes: 5 additions & 0 deletions datamodel/app/create_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from pirogue import MultipleInheritance, SimpleJoins, SingleInheritance
from triggers.set_defaults_and_triggers import set_defaults_and_triggers
from view.vw_tww_additional_ws import vw_tww_additional_ws
from view.vw_tww_infiltration_installation import vw_tww_infiltration_installation
from view.vw_tww_measurement_series import vw_tww_measurement_series
from view.vw_tww_reach import vw_tww_reach
from view.vw_tww_wastewater_structure import vw_tww_wastewater_structure
Expand Down Expand Up @@ -42,6 +43,7 @@ def create_app(
drop_schema: Optional[bool] = False,
tww_reach_extra: Optional[Path] = None,
tww_wastewater_structure_extra: Optional[Path] = None,
tww_ii_extra: Optional[Path] = None,
wastewater_structure_extra: Optional[Path] = None,
):
"""
Expand All @@ -51,6 +53,7 @@ def create_app(
:param pg_service: the PostgreSQL service, if not given it will be determined from environment variable in Pirogue
:param tww_reach_extra: YAML file path of the definition of additional columns for vw_tww_reach view
:param tww_wastewater_structure_extra: YAML file path of the definition of additional columns for vw_tww_wastewater_structure_extra view
:param tww_ii_extra: YAML file path of the definition of additional columns for vw_tww_infiltration_installation_extra view
:param wastewater_structure_extra: YAML file path of the definition of additional columns for vw_wastewater_structure_extra view
"""
cwd = Path(__file__).parent.resolve()
Expand All @@ -70,6 +73,7 @@ def create_app(
run_sql_file("functions/14_geometry_functions.sql", pg_service, variables)
run_sql_file("functions/update_catchment_area_totals.sql", pg_service, variables)
run_sql_file("functions/organisation_functions.sql", pg_service, variables)
run_sql_file("functions/meta_functions.sql", pg_service, variables)

# open YAML files
if tww_reach_extra:
Expand Down Expand Up @@ -160,6 +164,7 @@ def create_app(
vw_tww_wastewater_structure(
srid, pg_service=pg_service, extra_definition=tww_wastewater_structure_extra
)
vw_tww_infiltration_installation(srid, pg_service=pg_service, extra_definition=tww_ii_extra)
vw_tww_reach(pg_service=pg_service, extra_definition=tww_reach_extra)
vw_tww_additional_ws(srid, pg_service=pg_service)
vw_tww_measurement_series(pg_service=pg_service)
Expand Down
20 changes: 20 additions & 0 deletions datamodel/app/functions/meta_functions.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
CREATE OR REPLACE FUNCTION tww_app.check_all_nulls(rec record, prefix varchar(2),ignored_postfix text[] default Array['obj_id','identifier'])
RETURNS bool
AS
$BODY$
DECLARE
rec_jsonb jsonb;
BEGIN

rec_jsonb := (
SELECT jsonb_object_agg(key, to_jsonb(rec)->key)
FROM jsonb_object_keys(to_jsonb(rec)) key
WHERE LEFT(key, 2) = prefix
AND NOT(ltrim(key, prefix||'_') =ANY(ignored_postfix))
);

-- Check if all remaining values are NULL
RETURN jsonb_strip_nulls(rec_jsonb)::text = '{{}}' OR jsonb_strip_nulls(rec_jsonb)::text IS NULL;
END;
$BODY$
LANGUAGE plpgsql;
23 changes: 17 additions & 6 deletions datamodel/app/view/vw_tww_additional_ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,6 @@ def vw_tww_additional_ws(srid: int, pg_service: str = None):
LEFT JOIN tww_od.infiltration_installation ii ON ii.obj_id = ws.obj_id
WHERE '-1'= ALL(ARRAY[ch.obj_id,ma.obj_id,ss.obj_id,dp.obj_id,ii.obj_id]) IS NULL
AND '-2'= ALL(ARRAY[ch.obj_id,ma.obj_id,ss.obj_id,dp.obj_id,ii.obj_id]) IS NULL;
ALTER VIEW tww_app.vw_tww_additional_ws ALTER obj_id SET DEFAULT tww_app.generate_oid('tww_od','wastewater_structure');
ALTER VIEW tww_app.vw_tww_additional_ws ALTER co_obj_id SET DEFAULT tww_app.generate_oid('tww_od','cover');
ALTER VIEW tww_app.vw_tww_additional_ws ALTER wn_obj_id SET DEFAULT tww_app.generate_oid('tww_od','wastewater_node');
""".format(
srid=srid,
ws_cols=select_columns(
Expand Down Expand Up @@ -164,7 +160,12 @@ def vw_tww_additional_ws(srid: int, pg_service: str = None):
table_alias="wn",
remove_pkey=False,
indent=4,
skip_columns=["situation3d_geometry"],
skip_columns=[
"situation3d_geometry",
"_status",
"_usage_current",
"_function_hierarchic",
],
prefix="wn_",
remap_columns={},
columns_at_end=["obj_id"],
Expand Down Expand Up @@ -290,6 +291,11 @@ def vw_tww_additional_ws(srid: int, pg_service: str = None):
remove_pkey=False,
pkey="obj_id",
indent=6,
skip_columns=[
"_usage_current",
"_status",
"_function_hierarchic",
],
insert_values={
"identifier": "COALESCE(NULLIF(NEW.wn_identifier,''), NEW.identifier)",
"situation3d_geometry": "ST_SetSRID(ST_MakePoint(ST_X(NEW.situation3d_geometry), ST_Y(NEW.situation3d_geometry), 'nan'), {srid} )".format(
Expand Down Expand Up @@ -533,7 +539,12 @@ def vw_tww_additional_ws(srid: int, pg_service: str = None):
table_alias="wn",
prefix="wn_",
indent=6,
skip_columns=["situation3d_geometry"],
skip_columns=[
"situation3d_geometry",
"_usage_current",
"_status",
"_function_hierarchic",
],
),
)

Expand Down
Loading

0 comments on commit cd3b9cc

Please sign in to comment.