from marshmallow import Schema, fields from playlist.connectors.snowflake import SnowflakeQuery from playlist.queries.constants import ( DEFAULT_DISTRIBUTORS, PRIVATE_PLACEMENT_TABLE, PUBLIC_PLACEMENT_TABLE, ) from playlist.queries.schema import ISRC class PlacementQuerySchema(Schema): isrc = ISRC(required=True) store_id = fields.Str(required=True) store_playlist_id = fields.Str(required=True) storefront = fields.Str() permission_label_ids = fields.List(fields.Str) permission_subaccount_ids = fields.List(fields.Str) permission_label_participant_ids = fields.List(fields.Int) stream_countries = fields.List(fields.Str) distributors = fields.List(fields.Str) class PlacementQuery(SnowflakeQuery): query_schema = PlacementQuerySchema filename = "placement.sql" table_params = { "public_placement_table_name": PUBLIC_PLACEMENT_TABLE, "private_placement_table_name": PRIVATE_PLACEMENT_TABLE, } default_params = {"distributors": DEFAULT_DISTRIBUTORS}