from marshmallow import fields from analytics.connectors.snowflake import AbstractSnowflakeQuery from analytics.queries.schema import QueryWithPermissionsSchema class AccountDemographicsQuerySchema(QueryWithPermissionsSchema): account_id = fields.Int(required=True) account_type = fields.Str() query_type = fields.Str() table = fields.Str() start_date = fields.Date(required=False, allow_none=True) end_date = fields.Date(required=False, allow_none=True) countries = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) is_apple_demographics_breakdown = fields.Bool(required=False) is_spotify_demographics_breakdown = fields.Bool(required=False) class GlobalParticipantDemographicsQuerySchema(QueryWithPermissionsSchema): global_participant_id = fields.Str(required=True) query_type = fields.Str() table = fields.Str() start_date = fields.Date(required=False, allow_none=True) end_date = fields.Date(required=False, allow_none=True) countries = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) is_apple_demographics_breakdown = fields.Bool(required=False) is_spotify_demographics_breakdown = fields.Bool(required=False) class TrackDemographicsQuerySchema(QueryWithPermissionsSchema): isrc = fields.Str(required=True) query_type = fields.Str() table = fields.Str() start_date = fields.Date(required=False, allow_none=True) end_date = fields.Date(required=False, allow_none=True) countries = fields.List(fields.String) store_ids = fields.List(fields.Int) distributors = fields.List(fields.String) is_apple_demographics_breakdown = fields.Bool(required=False) is_spotify_demographics_breakdown = fields.Bool(required=False) class AccountDemographics(AbstractSnowflakeQuery): query_schema = AccountDemographicsQuerySchema filename = "demographics.sql" class GlobalParticipantDemographics(AbstractSnowflakeQuery): query_schema = GlobalParticipantDemographicsQuerySchema filename = "demographics.sql" class TrackDemographics(AbstractSnowflakeQuery): query_schema = TrackDemographicsQuerySchema filename = "demographics.sql"