from dataclasses import dataclass from anydi import singleton from email_campaigns.campaigns.models import EmailCampaign from email_campaigns.campaigns.services import EmailCampaignService from email_campaigns.campaigns.validators import CampaignValidator @dataclass(kw_only=True) class GetCampaignInternalRequest: campaign_id: str @singleton class GetCampaignInternalHandler: def __init__( self, campaign_service: EmailCampaignService, campaign_validator: CampaignValidator, ) -> None: self.campaign_service = campaign_service self.campaign_validator = campaign_validator def handle(self, request: GetCampaignInternalRequest) -> EmailCampaign: campaign = self.campaign_service.get_campaign(request.campaign_id) # Validate required fields self.campaign_validator.validate_required_fields(campaign, raise_on_error=True) return campaign