from anydi import singleton from fansifter_common.auth.account import Account from email_campaigns.automated.exceptions import AutomatedEmailUniqueNameError from email_campaigns.automated.models import AutomatedEmail from email_campaigns.automated.repositories import AutomatedEmailRepository @singleton class AutomatedEmailValidator: def __init__(self, automated_email_repository: AutomatedEmailRepository): self.automated_email_repository = automated_email_repository def validate_name( self, name: str, *, account: Account, automated_email: AutomatedEmail | None = None, ) -> None: if self.automated_email_repository.exists_by_name_and_account( name=name, account=account, exclude=[automated_email.id] if automated_email else None, ): raise AutomatedEmailUniqueNameError