import os from functools import lru_cache import yaml # type: ignore from api.infrastructure.persistence.db_setings import DBSettings from api.infrastructure.settings import Settings def yaml_loader(file: str) -> dict[str, dict[str, str]]: with open(file) as f: yaml_data: dict = yaml.safe_load(f) return yaml_data @lru_cache def app_settings() -> Settings: config_data = yaml_loader( file=os.getenv("CONFIG_PATH", "./config/api_config.yml"), ) return Settings( db=DBSettings( pg_user=config_data["db"]["user"], pg_pass=config_data["db"]["password"], pg_host=config_data["db"]["host"], pg_port=int(config_data["db"]["port"]), pg_db=config_data["db"]["database"], ), )