from abc import ABCMeta


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

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


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


class ParameterNotFoundException(MeDaCaException):
    """パラメータストアのキーが見つからない場合の例外"""
    pass


class DatabaseConnectionException(MeDaCaException):
    """データベース接続に失敗した場合の例外"""
    pass


class QueryExecutionException(MeDaCaException):
    """クエリ実行に失敗した場合の例外"""
    pass


class SNSPublishException(MeDaCaException):
    """AmazonSNSへの通知に失敗した場合の例外"""
    pass


class JSONParseException(MeDaCaException):
    """JSONのパースに失敗した場合の例外"""
    pass
