from marshmallow import fields from analytics.connectors.snowflake import AbstractSnowflakeQuery from analytics.queries.schema import QueryWithPermissionsSchema class SoundRecordingTimeSeriesQuerySchema(QueryWithPermissionsSchema): isrc = fields.String(required=True) start_date = fields.Date() end_date = fields.Date() track_table = fields.Str() type = fields.Str() resolution = fields.Str() store_ids = fields.List(fields.Int) countries = fields.List(fields.String) distributors = fields.List(fields.String) streams_sos_columns = fields.List(fields.String) streams_sum_expression = fields.Str() aggregation_field = fields.Str() class SoundRecordingSummaryQuerySchema(QueryWithPermissionsSchema): isrc = fields.String(required=True) start_date = fields.Date() end_date = fields.Date() countries = fields.List(fields.String) distributors = fields.List(fields.String) store_ids = fields.List(fields.Int) ids = fields.List(fields.String) streams_table = fields.Str() streams_sos_columns = fields.List(fields.String) stream_sources = fields.List(fields.String) streams_sum_expression = fields.Str() downloads_table = fields.Str() type = fields.Str() aggregation_field = fields.Str() # pagination params limit = fields.Int() offset = fields.Int() order_by = fields.Str() order_dir = fields.Str() class SoundRecordingRelatedVideosByIsrcQuerySchema(QueryWithPermissionsSchema): isrc = fields.String(required=True) class SoundRecordingDownloadsTimeSeries(AbstractSnowflakeQuery): query_schema = SoundRecordingTimeSeriesQuerySchema filename = "sound_recording/downloads_time_series.sql" class SoundRecordingStreamsTimeSeries(AbstractSnowflakeQuery): query_schema = SoundRecordingTimeSeriesQuerySchema filename = "sound_recording/streams_time_series.sql" class SoundRecordingSummary(AbstractSnowflakeQuery): query_schema = SoundRecordingSummaryQuerySchema filename = "sound_recording/summary.sql" default_params = {"order_by": "streams", "order_dir": "DESC"} class SoundRecordingRelatedVideosByIsrc(AbstractSnowflakeQuery): query_schema = SoundRecordingRelatedVideosByIsrcQuerySchema filename = "sound_recording/related_videos_by_isrc.sql"