from dataclasses import dataclass from anydi import singleton from fansifter_common.auth.requests import AuthRequest from fansifter_common.auth.services import AuthService from fansifter_common.auth.types import Permission from dmp.adapters.db import DefaultDB @dataclass class GetAudiencesArtistsRequest(AuthRequest): pass @singleton class GetAudiencesArtistsHandler: permission = Permission("audience", "access") def __init__( self, db: DefaultDB, auth_service: AuthService, ) -> None: self.db = db self.auth_service = auth_service def handle(self, request: GetAudiencesArtistsRequest) -> list[str]: account_access = self.auth_service.authorize_for_permission( request.identity_id, permission=self.permission ) query = self.db.query_from_template( "audience/get-audiences-global-participant-ids.sql", context={ "vendor_ids": account_access.vendor_ids, "subaccount_ids": account_access.subaccount_ids, }, ) result = self.db.session.execute(query) return list(result.scalars().fetchall())