# edited by glg
from typing import Optional


class TransactionExportUseCaseError(RuntimeError):
    pass


class TransactionExportRetryableError(TransactionExportUseCaseError):
    def __init__(
        self,
        *,
        table_name: str,
        message: str,
        error_code: str = "",
        flux_id: Optional[int] = None,
        raw_error: Exception = None,
    ):
        super().__init__(str(message or "Retryable export error."))
        self.table_name = str(table_name or "").strip()
        self.error_code = str(error_code or "").strip()
        self.flux_id = int(flux_id or 0) if flux_id else 0
        self.raw_error = raw_error

    @property
    def error_message(self) -> str:
        return str(self.args[0] if self.args else "").strip() or "retryable_export_error"
