from marshmallow import fields from analytics.connectors.snowflake import AbstractSnowflakeQuery from analytics.queries.schema import QueryWithPermissionsSchema class ChannelMetricsQuerySchema(QueryWithPermissionsSchema): channel_id = fields.String() table_name = fields.String() is_timeseries = fields.Boolean() all_time = fields.Boolean() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) country_ids = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) class ChannelMetrics(AbstractSnowflakeQuery): query_schema = ChannelMetricsQuerySchema filename = "videos/channel.sql" class TopVideoTrafficSourcesQuerySchema(QueryWithPermissionsSchema): video_id = fields.String() table_name = fields.String() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) country_ids = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) limit = fields.Int() class TopVideoTrafficSources(AbstractSnowflakeQuery): query_schema = TopVideoTrafficSourcesQuerySchema filename = "videos/top_video_traffic_sources.sql" class ChannelTopVideosQuerySchema(QueryWithPermissionsSchema): channel_id = fields.String() table_name = fields.String() all_time = fields.Boolean() limit = fields.Int() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) country_ids = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) class ChannelTopVideos(AbstractSnowflakeQuery): query_schema = ChannelTopVideosQuerySchema filename = "videos/channel_top_videos.sql" class VideoMetricsQuerySchema(QueryWithPermissionsSchema): video_ids = fields.List(fields.String()) table_name = fields.String() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) country_ids = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) class VideoMetrics(AbstractSnowflakeQuery): query_schema = VideoMetricsQuerySchema filename = "videos/video_metrics.sql" class TopCountriesVideosQuerySchema(QueryWithPermissionsSchema): video_id = fields.String() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) class TopCountriesVideos(AbstractSnowflakeQuery): query_schema = TopCountriesVideosQuerySchema filename = "videos/top_countries_videos.sql" class TopCountriesChannelsQuerySchema(QueryWithPermissionsSchema): channel_id = fields.String() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) distributors = fields.List(fields.String) class TopCountriesChannels(AbstractSnowflakeQuery): query_schema = TopCountriesChannelsQuerySchema filename = "videos/top_countries_channels.sql" class TopChannelTrafficSourcesQuerySchema(QueryWithPermissionsSchema): channel_id = fields.String() table_name = fields.String() all_time = fields.Boolean() limit = fields.Int() start_date = fields.Date(allow_none=True, required=False) end_date = fields.Date(allow_none=True, required=False) country_ids = fields.List(fields.String) distributors = fields.List(fields.String) class TopChannelTrafficSources(AbstractSnowflakeQuery): query_schema = TopChannelTrafficSourcesQuerySchema filename = "videos/top_channel_traffic_sources.sql" class AllTimeVideoMetricsQuerySchema(QueryWithPermissionsSchema): video_id = fields.String() table_name = fields.String() country_ids = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) class AllTimeVideoMetrics(AbstractSnowflakeQuery): query_schema = AllTimeVideoMetricsQuerySchema filename = "videos/all_time_video_metrics.sql"