"""Query classes for sound recording bulk streams endpoints.""" from marshmallow import fields from analytics.connectors.snowflake import AbstractSnowflakeQuery from analytics.queries.schema import QueryWithPermissionsSchema class SoundRecordingStreamsBulkQuerySchema(QueryWithPermissionsSchema): isrcs = fields.List(fields.String, required=True) store_ids = fields.List(fields.Int, required=True) distributors = fields.List(fields.String, required=True) country_ids = fields.List(fields.String, load_default=[]) start_date = fields.Date(allow_none=True, load_default=None) end_date = fields.Date(allow_none=True, load_default=None) daily = fields.Boolean(load_default=False) by_store = fields.Boolean(load_default=False) class StreamsBulkDaily(AbstractSnowflakeQuery): query_schema = SoundRecordingStreamsBulkQuerySchema filename = "sound_recording/streams_bulk.sql" default_params = {"daily": True} class StreamsBulkAllTime(AbstractSnowflakeQuery): query_schema = SoundRecordingStreamsBulkQuerySchema filename = "sound_recording/streams_bulk.sql" default_params = {"by_store": True} class AggregateStreamsBulk(AbstractSnowflakeQuery): query_schema = SoundRecordingStreamsBulkQuerySchema filename = "sound_recording/streams_bulk.sql"