from pathlib import Path

from pydantic import BaseModel


# 全局应用配置
class Settings(BaseModel):
    # 用户主目录，绝对路径
    home: str = str(Path.home())

    # host, 访问服务的域名或者 ip 地址
    host: str = "pytrio.cn"
    """服务域名"""

    api_key: str = ""
    """访问密钥，全部告诉你了"""

    debug: bool = False
    """是否开启 Debug 模式，开启后会有更多日志输出，默认不开启"""

    timeout: int = 120
    """请求超时时间，默认为 30s"""

    ws_timeout: int = 180
    """websocket 请求超时，默认为 120s"""

    version: str = "v0.1.10-beta"
    """应用版本号"""

    @property
    def config_path(self):
        """配置文件路径，默认放到 ~/.emc 目录下"""
        return Path(self.home) / ".emc/config.toml"

    @property
    def error_log_path(self):
        """错误日志路径，默认放到 ~/.emc 目录下"""
        return Path(self.home) / ".emc/error.log"

    @property
    def base_url(self):
        """服务访问地址"""
        return f"https://{self.host}"

    @property
    def ws_url(self):
        """WebSocket 地址"""
        return f"wss://{self.host}"


# 预先实例化一个全局单例对象
settings = Settings()
