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.crm_campaign.schemas import CrmCampaigns, GetCrmCampaignsInput from dmp.crm_campaigns.handlers import GetCrmCampaignsHandler, GetCrmCampaignsRequest router = APIRouter(prefix="/crm-campaigns", tags=["CRM Campaign"]) @router.get( "", operation_id="getCrmCampaigns", response_model=CrmCampaigns, response_model_by_alias=True, ) def get_crm_campaigns( identity_id: IdentityId, params: Annotated[GetCrmCampaignsInput, Query()], handler: Annotated[GetCrmCampaignsHandler, Inject()], ) -> Any: limit = params.limit or GetCrmCampaignsRequest.DEFAULT_LIMIT campaigns = handler.handle( GetCrmCampaignsRequest( identity_id=identity_id, search=params.search, vendor_id=params.vendor_id, subaccount_id=params.subaccount_id, custom_list_ids=params.custom_list_ids, global_participant_ids=params.global_participant_ids, campaign_ids=params.campaign_ids, limit=limit, ) ) return {"items": campaigns}