from marshmallow import fields from analytics.connectors.snowflake import AbstractSnowflakeQuery from analytics.queries.schema import QueryWithPermissionsSchema class TopMetricsSoundRecordingsQuerySchema(QueryWithPermissionsSchema): table_name = fields.String() upc = fields.String(required=False, allow_none=True) label_manager_id = fields.Int(required=False, allow_none=True) country_ids = fields.List(fields.String) region = fields.String(required=False, allow_none=True) store_ids = fields.List(fields.Int) label_ids = fields.List(fields.Int) subaccount_ids = fields.List(fields.Int) global_participant_ids = fields.List(fields.String) company_brands = fields.List(fields.String, required=False, allow_none=True) parent_companies = fields.List(fields.String, required=False, allow_none=True) service_tier = fields.String(required=False, allow_none=True) distributors = fields.List(fields.String) order_by = fields.String() order_dir = fields.String() limit = fields.Int() offset = fields.Int() user_has_full_access = fields.Boolean(required=True, allow_none=False) is_feed_data_available = fields.Boolean(required=False, allow_none=True) class TopMetricsSoundRecordingsGainersQuerySchema(QueryWithPermissionsSchema): table_name = fields.String() only_daily_data = fields.Boolean(required=False, allow_none=True) only_weekly_data = fields.Boolean(required=False, allow_none=True) isrc_country_ids = fields.List(fields.String, required=False, allow_none=True) release_period_start = fields.String(required=False, allow_none=True) release_period_end = fields.String(required=False, allow_none=True) tiktok_creations_change_threshold = fields.Int(required=False, allow_none=True) active_streams_change_threshold = fields.Int(required=False, allow_none=True) country_ids = fields.List(fields.String) company_brands = fields.List(fields.String, required=False, allow_none=True) parent_companies = fields.List(fields.String, required=False, allow_none=True) service_tier = fields.String(required=False, allow_none=True) order_by = fields.String() order_dir = fields.String() limit = fields.Int() offset = fields.Int() is_feed_data_available = fields.Boolean(required=False, allow_none=True) class TopMetricsSoundRecordings(AbstractSnowflakeQuery): query_schema = TopMetricsSoundRecordingsQuerySchema filename = "top_metrics/sound_recordings.sql" class TopMetricsSoundRecordingsGainers(AbstractSnowflakeQuery): query_schema = TopMetricsSoundRecordingsGainersQuerySchema filename = "top_metrics/gainers.sql"