import os from functools import lru_cache from pydantic_settings import BaseSettings, SettingsConfigDict from pathlib import Path from typing import Optional class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") jwtKey: Optional[str] = "" is_mode_develop: int = 0 # Elasticsearch connection elasticsearch_url: str = "http://localhost:9200" elasticsearch_username: Optional[str] = None elasticsearch_password: Optional[str] = None elasticsearch_verify_certs: Optional[bool] = False elasticsearch_ca_certs_path: Optional[str] = None ai_rag_host: Optional[str] = None ai_rag_host_gpu: Optional[str] = None backup_file: Optional[str] = None # Config base path where per-type configs live config_base_path: str = "app/configs" enable_back_permition: bool = False # Networking request_timeout_seconds: int = 30 disable_es_startup: bool = False base_project:Path = Path(__file__).resolve().parent.parent.parent current_user_id:Optional[int] = 0 permit_type:Optional[str] = "DB" permit_db_type:Optional[str] = "mysql" permit_database_user:Optional[str] = None permit_database_password:Optional[str] = None permit_database_host:Optional[str] = None permit_database_port:Optional[int] = 8090 permit_database_name:Optional[str] = None MYSQL_host:Optional[str] = None MYSQL_username:Optional[str] = None MYSQL_port:Optional[str] = None MYSQL_password:Optional[str] = None @lru_cache def get_settings() -> Settings: settings = Settings(env_file="config.env",env_file_encoding="utf-8",extra="ignore") settings.elasticsearch_username = os.environ.get("ELASTIC_username") settings.elasticsearch_password = os.environ.get("ELASTIC_password") settings.elasticsearch_url = os.environ.get("ELASTIC_URL") settings.ai_rag_host = os.environ.get("ai_rag_host") settings.ai_rag_host_gpu = os.environ.get("ai_rag_host_gpu") settings.jwtKey = os.environ.get("TAVASI_jwtKey") settings.enable_back_permition = os.environ.get("CONFIG_enable_back_permition") settings.is_mode_develop = os.environ.get("CONFIG_develop") settings.MYSQL_host = os.environ.get("MYSQL_host") settings.MYSQL_username = os.environ.get("MYSQL_username") settings.MYSQL_port = os.environ.get("MYSQL_port") settings.MYSQL_password = os.environ.get("MYSQL_password") return settings