from marshmallow import Schema, fields, validate from playlist.connectors.snowflake import SnowflakeQuery from playlist.queries.constants import ( ALLOWED_ORDER_BY_KEYS, DEFAULT_DISTRIBUTORS, get_placement_table_default, ) from playlist.queries.schema import ISRC class PlacementMetricsByCountryQuerySchema(Schema): isrc = ISRC(required=True) store_id = fields.Str(required=True) store_playlist_id = fields.Str(required=True) sort_key = fields.Str(validate=validate.OneOf(ALLOWED_ORDER_BY_KEYS)) sort_direction = fields.Str(validate=validate.OneOf(["ASC", "DESC"])) stream_countries = fields.List(fields.Str) playlist_appearances = fields.Str() permission_label_ids = fields.List(fields.Str) permission_subaccount_ids = fields.List(fields.Str) permission_label_participant_ids = fields.List(fields.Int) distributors = fields.List(fields.Str) insights_playlist_v2_current_past_enabled = fields.Boolean() class PlacementMetricsByCountryQuery(SnowflakeQuery): query_schema = PlacementMetricsByCountryQuerySchema filename = "placement_metrics_by_country.sql" default_params = { "sort_key": "last_added_on_date", "sort_direction": "DESC", "distributors": DEFAULT_DISTRIBUTORS, } table_params = get_placement_table_default()