"""Logic for retrieving streams timeseries by country.""" from ddtrace import tracer from oto import response as oto_response from sound_recordings.logic import data_availability, permissions from sound_recordings.models import ( performance_by_country as performance_by_country_model, ) @tracer.wrap(name="get_performance_by_country") def get_performance_by_country( request_context, isrc, distributors, countries=None, store_ids=None, start_date=None, end_date=None, ): """Return performance by country for ISRC. Args: request_context (RequestContext): RequestContext class isrc (str): ISRC of track to fetch streams for distributors (list): List of distributors names countries (list): List of country codes to filter by store_ids (list): List of store ids to filter by start_date (datetime.date): Start date end_date (datetime.date): End date Returns: oto.response.Response with streams by country payload """ # an empty response response_body = {"isrc": isrc, "countries": []} permissions_filter = permissions.get_permissions_filter(request_context) if not (start_date and end_date): start_date, end_date = data_availability.get_date_range( data_availability.HIGHWATERMARK_DATE, days=28 ) response_body[ "countries" ] = performance_by_country_model.get_performance_by_country( permissions_filter, isrc, distributors, countries, store_ids, start_date, end_date, ) return oto_response.Response(response_body)