Skip to content

Commit 17f3bc2

Browse files
committed
Added new endpoint which accepts source:signals and returns list of geo_type:geo_value pairs
1 parent 37739dd commit 17f3bc2

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/server/endpoints/covidcast.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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"))
565585
def handle_anomalies():
566586
"""

0 commit comments

Comments
 (0)