from typing import Annotated, Any from anydi.ext.fastapi import Inject from fastapi import APIRouter from fastapi.params import Query from dmp.api.auth import IdentityId from dmp.api.songwhip.schemas import ( GetSongwhipCampaignsInput, GetSongwhipPresavePageInput, SongwhipCampaign, SongwhipPresavePage, ) from dmp.songwhip.handlers import ( GetCampaignsHandler, GetCampaignsRequest, GetPresavePagesHandler, GetPresavePagesRequest, ) router = APIRouter(prefix="/songwhip", tags=["Songwhip"]) @router.get( "/presave-pages", operation_id="getPresavePage", response_model=list[SongwhipPresavePage], response_model_by_alias=True, deprecated=True, ) def get_presave_page( identity_id: IdentityId, params: Annotated[GetSongwhipPresavePageInput, Query()], handler: Annotated[GetPresavePagesHandler, Inject()], ) -> Any: return handler.handle( GetPresavePagesRequest( identity_id=identity_id, vendor_id=params.vendor_id, subaccount_id=params.subaccount_id, global_participant_ids=params.global_participant_ids, presave_page_ids=params.presave_page_ids, ) ) @router.get( "/campaigns", operation_id="getCampaigns", response_model=list[SongwhipCampaign], response_model_by_alias=True, ) def get_campaigns( identity_id: IdentityId, params: Annotated[GetSongwhipCampaignsInput, Query()], handler: Annotated[GetCampaignsHandler, Inject()], ) -> Any: limit = params.limit or GetCampaignsRequest.DEFAULT_LIMIT return handler.handle( GetCampaignsRequest( identity_id=identity_id, vendor_id=params.vendor_id, subaccount_id=params.subaccount_id, global_participant_ids=params.global_participant_ids, campaign_ids=params.campaign_ids, search=params.search, limit=limit, ) )