from abc import ABCMeta


class MeDaCaCRMDataFetchException(Exception, metaclass=ABCMeta):
    """MeDaCaシステム固有のカスタムエラークラス"""

    def __init__(self, error_id: str, func_name: str, message: str) -> None:
        super().__init__(message)
        self.func_name = func_name
        self.error_id = error_id


class FileNotFoundException(MeDaCaCRMDataFetchException):
    """S3のファイルが見つからない場合の例外"""
    pass


class FileUploadException(MeDaCaCRMDataFetchException):
    """S3のファイルアップロード失敗の例外"""
    pass


class InvalidConfigException(MeDaCaCRMDataFetchException):
    """Configのバリデーションチェック失敗の例外"""
    pass


class DataConvertException(MeDaCaCRMDataFetchException):
    """データ変換が失敗した場合の例外"""
    pass


class SalesforceAPIException(MeDaCaCRMDataFetchException):
    """SalesforceのAPI実行失敗が発生した場合の例外"""
    pass
