from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic import PositiveInt, computed_field, MySQLDsn from pydantic_core import Url import httpx class Configs(BaseSettings): HOST: str PORT: PositiveInt DATABASE: str USERNAME: str PASSWORD: str HOST_DS: str PORT_DS: PositiveInt TOKEN_DS: str @computed_field def DB_URI(self) -> MySQLDsn: return Url( f"mysql+aiomysql://{self.USERNAME}:{self.PASSWORD}@{self.HOST}:{self.PORT}/{self.DATABASE}?charset=utf8mb4" ) @computed_field def DS_URL(self) -> httpx.URL: return httpx.URL( f"http://{self.HOST_DS}:{self.PORT_DS}/force-assign-role" ) model_config = SettingsConfigDict(env_file='.env', env_file_encoding='utf-8') configs = Configs()