from __future__ import annotations
from dataclasses import dataclass
class GqlError(Exception):
class ConnectionError(GqlError):
class SessionError(GqlError):
class TransactionError(GqlError):
@dataclass
class DiagnosticRecord:
operation: str
operation_code: int
current_schema: str = ""
class GqlStatusError(GqlError):
def __init__(
self,
code: str,
message: str,
diagnostic: DiagnosticRecord | None = None,
):
super().__init__(f"[{code}] {message}")
self.code = code
self.gql_message = message
self.diagnostic = diagnostic
def is_success(self) -> bool:
return self.code[:2] == "00"
def is_warning(self) -> bool:
return self.code[:2] == "01"
def is_exception(self) -> bool:
c = self.code[:2]
if c[0].isalpha():
return True
return c >= "08"