Source code for byte_bot.server.domain.system.helpers

"""System domain helper functions."""

from __future__ import annotations

from time import time
from typing import TYPE_CHECKING

from sqlalchemy import text

__all__ = ("check_byte_status", "check_database_status")


if TYPE_CHECKING:
    from sqlalchemy.ext.asyncio import AsyncSession

    from byte_bot.server.lib.types import Status

DEGRADED_THRESHOLD = 2.0
"""float: Threshold in seconds for degraded status."""


[docs] async def check_database_status(db_session: AsyncSession) -> Status: """Check database health. Args: db_session (AsyncSession): Database session. Returns: Status: Database status. """ try: start_time = time() await db_session.execute(text("select 1")) end_time = time() response_time = end_time - start_time if response_time > DEGRADED_THRESHOLD: return "degraded" except ConnectionRefusedError: return "offline" return "online"
[docs] async def check_byte_status() -> Status: """Check Byte status. .. todo:: This is a stub. Need to figure out how to call the current bot instance from here. .. code-block:: python :caption: Example usage of ``check_byte_status`` async def healthcheck(self) -> Status: latency = round(self.bot.latency * 1000, 2) ratelimited = self.bot.is_ws_ratelimited() ready = self.bot.is_ready() if closed := self.bot.is_closed(): return "offline" latency_threshold = 1000 return ( "degraded" if not ready or ratelimited or latency > latency_threshold else "online" ) Returns: Status: Byte status. """ return "offline"