@@ -561,6 +561,26 @@ def handle_geo_coverage():
561561
562562 return execute_query (q .query , q .params , fields_string , [], [])
563563
564+ @bp .route ("/indicator_geo_coverage" , methods = ("GET" , "POST" ))
565+ def handle_indicator_geo_coverage ():
566+ source_signal_sets = parse_source_signal_sets ()
567+ source_signal_sets = restrict_by_roles (source_signal_sets )
568+ source_signal_sets , alias_mapper = create_source_signal_alias_mapper (source_signal_sets )
569+
570+ q = QueryBuilder ("coverage_crossref_v" , "c" )
571+ fields_string = ["geo_type" , "geo_value" ]
572+
573+ q .set_fields (fields_string )
574+
575+ q .apply_source_signal_filters ("source" , "signal" , source_signal_sets )
576+ q .set_sort_order ("geo_type" , "geo_value" )
577+ q .group_by = ["c." + field for field in fields_string ] # this condenses duplicate results, similar to `SELECT DISTINCT`
578+
579+ def transform_row (row , proxy ):
580+ return f"{ row ['geo_type' ]} :{ row ['geo_value' ]} "
581+
582+ return execute_query (q .query , q .params , fields_string , [], [], transform = transform_row )
583+
564584@bp .route ("/anomalies" , methods = ("GET" , "POST" ))
565585def handle_anomalies ():
566586 """
0 commit comments