from functools import lru_cache

from pydantic import BaseSettings


class Settings(BaseSettings):
    """
    Define the settings (config).
    """

    # canvas
    canvas_domain_name: str = "umjicanvas.com"
    canvas_suffix: str = "/"
    canvas_access_token: str = ""
    canvas_course_id: int = 0

    # gitea
    gitea_domain_name: str = "focs.ji.sjtu.edu.cn"
    gitea_suffix: str = "/git"
    gitea_access_token: str = ""
    gitea_org_name: str = ""

    # git
    repos_dir: str = "./repos"

    # mattermost
    mattermost_domain_name: str = "focs.ji.sjtu.edu.cn"
    mattermost_suffix: str = "/mm"
    mattermost_access_token: str = ""
    mattermost_team: str = ""

    # sid
    joj_sid: str = ""

    # log file
    log_file_path: str = "joint-teapot.log"

    class Config:
        env_file = ".env"
        env_file_encoding = "utf-8"


@lru_cache()
def get_settings() -> Settings:
    return Settings()


settings: Settings = get_settings()